About C+ Programming Jobs
There are an awful lot of programming languages available right now -- everything from the extremely high level (such as Visual Basic) to the low level power of assembly, and a good variety of specialized options in between (Perl, Ruby, and Python are good choices for many tasks). Java has also become quite the hot programming language for some tasks, in part because of its large API and in part because the virtual machine provides some elements of security. (Garbage collection is another nice feature and can make programmers much more efficient.)
Nevertheless, there are some good reasons to learn to program in C. First, age has its advantages: C has been around for 30 years, and there is a ton of source code available. This means there's a lot to learn from, and a lot to use. Moreover, many of the issues with the language have been clearly elucidated -- it's well understood, and you can find a lot of tutorials available. Plus, with C, you get lots of strong opinions mixed with insights that you can understand.
As a result of its age and its use as the language of system programming for Unix, C has become something of the lingua franca of programming. C is a great language for expressing common ideas in programming in a way that most people are comfortable with. Moreover, a lot of the principles used in C -- for instance, argc and argv for command line parameters, as well as loop constructs and variable types -- will show up in a lot of other languages you learn so you'll be able to talk to people even if they don't know C in a way that's common to both of you.
Third, C is reasonably close to the machine. When you're working with pointers, bytes, and individual bits, things like optimization techniques start to make a lot more sense. There's also utility in knowing exactly how something works underneath the hood -- this helps a great deal when something you're trying to do in a higher level language seems way slower than expected, or just doesn't work at all. You also tend to get a better picture of advanced topics like exactly how networking works. A higher level language will make it a little bit simpler, but it'll be harder to understand what's going on, and when things stop working, it's much better to know exactly what's going on so you can fix it. Additionally, if you like computer science as a discipline, or just like knowing how things work learning the details of the system is great fun.
In fact, a lot of fun programming is done in C -- for instance, system software and data managers such as Berkeley DB. If you want to be able to do more than write a simple web app, C is a great language. If you want to write a great, fast game, C is again a great choice. You can write an entire OS in C. It'll be much harder to do so in Java, and nearly impossible in a scripting language. And the language, being succinct as C is, will probably make your fun program more elegant looking to boot.
Job Outlook
Employment of computer programmers is expected to decline slowly. Job prospects should be best for those with a bachelor’s degree and experience with a variety of programming languages and tools.
Employment change. Employment of computer programmers is expected to decline slowly, decreasing by 4 percent from 2006 to 2016. The consolidation and centralization of systems and applications, developments in packaged software, advances in programming languages and tools, and the growing ability of users to design, write, and implement more of their own programs mean that more programming functions can be performed by other types of information workers, such as computer software engineers.
Another factor contributing to employment decline will be the offshore outsourcing of programming jobs. Because they can transmit their programs digitally, computer programmers can perform their job function from anywhere in the world, allowing companies to employ workers in countries that have lower prevailing wages. Computer programmers are at a much higher risk of having their jobs outsourced abroad than are workers involved in more complex and sophisticated information technology functions, such as software engineering. Much of the work of computer programmers requires little localized or specialized knowledge and can be made routine once knowledge of a particular programming language is mastered—and computer programming languages have become known internationally.
Nevertheless, employers will continue to need some local programmers, especially those who have strong technical skills and who understand an employer’s business and its programming requirements. This means that programmers will have to keep abreast of changing programming languages and techniques. Given the importance of networking and the expansion of client/server, Web-based, and wireless environments, organizations will look for programmers who can support data communications and help implement business and intranet strategies. Demand for programmers with strong object-oriented programming capabilities and technical specialization in areas such as client/server programming, wireless applications, multimedia technology, and graphic user interface likely will stem from the expansion of intranets, extranets, and Internet applications. Programmers also will be needed to create and maintain expert systems and embed these technologies in more products. Finally, a growing emphasis on cybersecurity will lead to increased demand for programmers who are familiar with digital security issues, and are skilled in using appropriate security technology.
Job prospects. Although employment is projected to decline, numerous job openings will result from the need to replace programmers who leave the labor force or transfer to other occupations. Prospects for these openings should be best for applicants with a bachelor’s degree and experience with a variety of programming languages and tools. The languages that are in demand today include C++, Java, and other object-oriented languages, as well as newer, domain-specific languages that apply to computer networking, database management, and Internet application development. As technology evolves, however, and newer, more sophisticated tools emerge, programmers will need to update their skills in order to remain competitive. Obtaining vendor-specific or language-specific certification also can provide a competitive edge.
Jobs for both systems and applications programmers should be most plentiful in computer consulting businesses. These establishments are part of the computer systems design and related services industry, which is projected to be among the fastest growing industries in the economy over the 2006 to 2016 period.
Earnings
Median annual earnings of wage-and-salary computer programmers were $65,510 in May 2006. The middle 50 percent earned between $49,580 and $85,080 a year. The lowest 10 percent earned less than $38,460, and the highest 10 percent earned more than $106,610. Median annual earnings in the industries employing the largest numbers of computer programmers in May 2006 are shown below:
| Software publishers |
$79,270 |
| Computer systems design and related services |
67,880 |
| Management of companies and enterprises |
67,170 |
| Insurance carriers |
65,650 |
According to the National Association of Colleges and Employers, starting salary offers for computer programmers averaged $49,928 per year in 2007.
According to Robert Half Technology, a firm providing specialized staffing services, average annual starting salaries in 2007 ranged from $55,250 to $90,250 for applications development programmers/analysts, and from $60,250 to $94,750 for software developers. Average starting salaries for mainframe systems programmers ranged from $52,250 to $70,750.
|