The stereotypical lonely programmer coding away for hours in a cubicle is mostly just that -- a worn-out image that bears little resemblance to the current working lives of US programmers, often called software developers or software engineers. Working on teams, handling presentations and accompanying sales staff to client meetings are all part of their work.
"The idea that it's a lonely job where you sit in an office and interact with a computer all day long is the biggest misconception" about programming, says Joel Spolsky, founder of New York City-based Fog Creek Software who blogs at Joel on Software. "Almost every programming project these days is a team effort. A huge part of programming involves communicating and interacting with people.
Programming Job Basics
Programming is the backbone of information technology. Programmers write the code that runs everything from Web pages to cell phones to computer games. Without software developers, there would be no Google or Halo II.
As Frederick Brooks writes in the classic The Mythical Man-Month: Essays on Software Engineering, programmers, like poets, form things out of nothing. David Thomas, who coauthored The Pragmatic Programmer with Andrew Hunt, says this is incredibly satisfying. "You start out with nothing more than an idea, and some time later, thousands of people are using the manifestation of that idea.
Such work is notoriously demanding, especially in high-pressure industries. As a study from the International Game Developers Association notes, coding at some companies means 80-hour weeks, with employees prone to burnout after several years.
Programmer Education and Training
Programmers come from a variety of backgrounds, but many follow one of two paths. Some learn programming as part of a formal computer science or information technology degree program, while others start out in a related area of IT, such as tech support or Web design, and pick up programming along the way. Some even started programming as kids.
"The best computer science students show up at college already knowing how to program pretty well," Spolsky says. A bachelor's degree was not always a prerequisite for programmers, but now most companies require it. Some prefer a master's degree.
Just don't stick with this career if it's not for you. "It's important to understand that programming well is a particular kind of talent that requires a particular kind of brain," says Spolsky. "Tone-deaf people are not going to go very far as musicians, so if coding is not for you, don't force it.
What Employers Want
With companies now regularly considering whether to send programming projects overseas, US-based developers should consider what they can offer employers that a developer in India or Russia cannot. More often than not, that's a combination of communication skills and industry expertise.
"Successful developers are first and foremost communicators," says Thomas. "They talk to customers, they talk with each other, and they talk to computers. Indeed, you could argue that the job of a developer is to act as a translator between a customer's needs and a computer's needs.
Would-be programmers, as well as ones trying to reinvent themselves, should focus not only on keeping their technical skills fresh, but also on ensuring their business know-how is top-notch. "Talking with customers, acting as an ambassador between business units, integrating proprietary systems with commodity systems -- all these things are intrinsically part of a local business," says Thomas. "They won't be moving to China or India. And the good thing is that all of these skills are more valuable to your company than merely churning out yet one more Java package.
Moving on from Programming
What happens when a developer decides programming is just one step on their career path rather than the destination? Programmers often move onto other positions, such as a project leader, project manager or software architect, gaining management experience along the way.
"Former programmers -- good ones -- are in a unique position," says Hunt. "They understand technology, they are quick learners, and they can apply both logical thought processes and unfettered creativity to solve problems. People like that can go on to do anything they choose, whether it's moving into management or going out on their own in a startup environment.