Programming
Programming—writing instructions to be carried out by a computer or other
programmable device using a given programming language (such as Java, C++,
or Perl)—combines elements of math, science, and engineering.
Computer programmers are at the center of the information technology (IT)
field. These days, we rely on all kinds of programmable devices—our
laptops, personal computers, personal digital assistants (PDAs), in-car
global positioning systems, factory robotics systems, and more. None of
these things would function without programmers, though, who give
programmable devices specific, accurate instructions on how to perform
their various functions. Your PC, for example, is nothing more than a dumb
box without the input of programmers. It can't solve even a simple math
problem without a series of programming commands to tell it how to do so.
Programming languages are not languages in the traditional sense of the
word. Instead, they are series of codes that instruct computers how to
operate. Most programmers know several languages and must also be willing
to learn new ones as they develop.
What You'll Do
Early in their career, programmers may be responsible for writing code for
specific, discrete portions of the overall software program. Later on, they
may become more involved in devising the overall shape and organization (or
architecture) of software programs, as well as managing teams of
lower-level programmers as they write the code for the various program
modules. (Some programmers prefer writing code to managing, though, and
choose to stay in positions that allow them to continue doing that.) The
opportunity for doing more macro-level programming work—determining the
overall architecture of a given software program, for instance—will
typically come earlier in your career at smaller companies than at larger
companies, where in some cases you might spend your entire career working
on only a specific aspect of larger programs.
Programmers may also test, repair, and maintain software programs.
Typically, programmers work in a single language, or just a few languages.
They also typically write code for a specific type of programmable device,
such as mainframe computers or servers. However, during the course of his
or her entire career, a programmer is likely to have to know a variety of
languages; the programming world is evolving constantly, and to stay up to
speed (and remain in demand in the employment marketplace), programmers
must update their knowledge on an ongoing basis.
Often, programmers are referred to as being one of two types: applications
programmers or system programmers. Applications programmers write code
designed to complete specific tasks; the programmers who wrote the code for
Adobe Acrobat and Microsoft Word, for instance, are applications
programmers. Systems programmers, on the other hand, write the system
software that runs other software, such as Microsoft's Windows or
Apple's Mac OS X.
In addition, because Web surfers are increasingly accessing the Internet
via wireless devices, be they Wi-Fi- or Bluetooth-enabled computers, cell
phones, or personal digital assistants, programmers are increasingly facing
the need to optimize the software they write for wireless devices.
Who Does Well
There are several personality traits you can usually find in successful
programmers. Because much of their work involves abstract concepts and
complex mathematical formulas, programmers need to be analytical thinkers.
They have to approach a problem in many different ways until they find the
ultimate solution.
Patience is another important characteristic. Each line of code must be
written with exacting attention to detail. Any mistakes can cause a system
to come to a crashing halt. Some IT departments have employees whose sole
purpose is to painstakingly search through previously written programs to
seek out and eradicate bugs.
In today's business world, teams composed of programmers from various
disciplines usually work together on projects. Consequently, companies
place an increasing emphasis on strong writing and communication skills.
The most successful programmers are not only competent code writers, but
well liked among their peers.
Back to top
Most computer programmers have a four-year degree in computer science.
However, a degree from a related technical field, such as math or
engineering, is acceptable. Around 20 percent have an advanced degree in
computer science or engineering. A limited number of programmers are
self-taught. Certification programs, available through technical schools or
community colleges, offer another route to employment.
While degrees are important, employers usually place more emphasis on
actual work experience. Many recent college graduates with sparkling report
cards can't find work because they lack portfolios. A programmer who
has a limited formal education but a strong knowledge of several
programming languages has a better chance of finding employment. Take
advantage of all available work opportunities and internships. The more
experience you can show, the better your chances of finding a position
after graduation.
It's important that computer professionals continue to update their
skills. Software development tools and technologies are always advancing
and evolving. Programmers have to seek out trade shows, seminars,
periodicals, and professional education classes to help programmers stay
abreast of changes in their industry.
Back to top
The picture for programmers has changed drastically over the past couple of
years. Firms are consolidating and centralizing their computer systems and
often outsourcing programming overseas, where salaries are much lower.
Off-the-shelf software is becoming more sophisticated and is reducing
corporate reliance on IT. Over the last few years, many programmers have
seen their wages decline, and raises have been the exception rather than
the rule.
While these factors have put pressure on jobs, the information age has
created an ongoing need for skilled programmers. Quick studies who know the
latest programming languages inside and out, who "get" how
business needs determine programming priorities, and who work well in teams
should be able to find opportunities.
The Bureau of Labor Statistics projects that opportunities for programmers
will grow at about the same rate as the average for all occupations between
2004 and 2014. Computer software engineers, though, who count programming
among their responsibilities, but are often more involved in software
design than straight-ahead programmers, have better prospects, with BLS
estimates showing better-than-average growth in opportunities in this
specialty through 2014.
Back to top
You can find computer programmers in all types of industries. While the
working environment may change, the goal of all programming is to make
computers come to life. Usually, programmers work within a company's IT
department. Organizations sometimes bring in skilled contractors to work on
specific projects. Smaller businesses may outsource part or all of their
programming needs. Following is a list of the most common programming job
titles.
Application Programmer
Application programmers develop the software we are most familiar with.
Examples include word processors, video games, and accounting packages.
Programs may be written to reach a wide audience, such as with
off-the-shelf software, or for a specific function within an organization.
Most application programmers work with a product from its inception through
its final testing. At the start of a project, they meet with designers and
management to understand the nature of the program to be developed. Several
strategies are designed, outlining the best ways to proceed. Any potential
flaws or design complications will be noted for future reference. The
options are then presented to the project manager who selects the best one.
At this point, programmers can begin writing code. After the program is
completed, the applications team works with the systems programmers and
quality assurance personnel to remove any bugs.
Application programmers need to have strong communication skills, as well
as technical expertise. Most have experience working with multiple computer
languages. Specialization in a specific industry, such as finance or health
care, is common. Most companies require a four-year degree, but having
recent experience in the industry and knowledge about a particular
programming language can open up opportunities.
System Programmer
If computer programming is a war, then systems programmers are firmly in
control of the trenches. They develop programs that control computer
hardware and how it will interact with peripherals such as terminals, disk
drives, and printers. At a fundamental level, systems programmers design
and construct operating systems, which communicate directly with
computers' central processing units.
Also in this group are programmers who develop software that controls
computer networks and lays out the paths along which data is routed. In a
telephone company, for example, the system programmer writes programs that
direct millions of phone conversations across a network of wires and
fiber-optic cables.
Systems programmers may work on a number of projects simultaneously. They
are frequently brought in at the end of the development cycle to find
hardware glitches that prevent a program from operating properly. Their
input is an important part of the troubleshooting process.
All systems programmers have substantial technical backgrounds. They must
have an intimate knowledge of the entire computer system. Almost all
systems programmers have four-year degrees. A significant number have
advanced degrees in computer science.
Database Administrator
Database administrators, or database engineers, create software that
controls and maintains massive databases. Large corporations, including
online retailers and financial firms, typically use such programs. The
computer systems involved are usually very large and can encompass a vast
network.
Web Programmer
Writing pages in HTML is a relatively simple process. Until recently,
self-taught HTML programmers could use this to their advantage. The bar of
entry into Web development was easily crossed. But, currently there is an
increasing demand for websites that interact with users. Developers of
these sites must have extensive knowledge of Perl and other object-oriented
languages such as Java. These languages create Web pages that not only
interact with users, but tap into information stored in large company
databases connected to the website.
Project Manager
The project manager (PM) oversees the work done by members of the
programming team. She takes on numerous responsibilities during the course
of a project. The PM ensures that programmers finish their assignments on
time and within the specified budget. Since the team reports directly to
the PM, it is her responsibility to make sure all members are cooperating
with one another.
The project management role is part technical consultant, part manager. PMs
must understand all of the technical components used in the development
process. They work with upper management to make the final decision on how
a project advances. PMs must also be expert negotiators, have excellent
communication and time-management skills, and have financial forecasting
experience.
Corporations say this is the hardest programming position to fill.
Qualified applicants are difficult to find and many do not last through
their first PM assignment. However, individuals who can successfully work
under these conditions are always in demand. Educational background is not
as important as getting the job done right. That said, many PMs have
bachelor's degrees in computer science and sometimes MBAs.
Software Engineer
Software engineers are concerned with the overall structure of a project.
They typically apply general engineering practices—such as quality assurance
and failure analysis—to the process of software production. They work
directly with Quality Assurance to develop quantitative tests to identify
programming shortfalls.
Usually, a software engineer has several years of experience as a general
programmer or a traditional engineer. A few lucky ones have been hired
directly from undergraduate programs. Many have advanced engineering
degrees.
Quality Assurance
The quality assurance (QA) team has the final look at a program before
it's released to users. They work with the software engineers, systems,
and applications programmers to find bugs that could halt a computer
system. QA develops testing procedures that simulate the many ways in which
a program could be used. They are the last line of defense. If any errors
remain, users will find them.
Most technical organizations have QA teams who search through previously
written code to find and fix errors. Smaller companies or
nontechnical-based businesses may outsource this function.
Back to top
Compensation varies widely in computer programming jobs depending on
skills, company size, and industry. However, the following are typical
salary ranges:
-
Software engineer: $45,000 to $105,000
-
Web programmer: $45,000 to $80,000
-
Programmer: $50,000 to $90,000
-
Software architect/designer: $90,000 to $120,000
-
Quality assurance specialist: $50,000 to $90,000
-
Application development manager: $70,000 to $140,000
-
Software project manager: $80,000 to $110,000
-
Database administrator: $60,000 to $105,000