Career Overview: 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.Requirements
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.Job Outlook
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.Career Tracks
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 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.
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 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.
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.
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.
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.
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.