Which programmers make the most money per hour?

I am considering going back to school and learning how to program, so I am wondering which language’s command the most money in the market.

Feel free to offer opinions about the long term viability of a language too…will it sustain its market demand in your opinion…

Thanks in advance.

It’s more important to be good at what you do than what language you pick. If you’ve got a choice between something that’s hot in the market place but you are not so good at, and something that you are better at but isn’t quite so hot, go with the latter (that’s my opinion anyway).

Embedded systems (which is what I do) tend to be around for a while, therefore they don’t change as rapidly as other types of software. It’s mostly C/asm with the gradual trend being more towards the C side as processors get more and more powerful and can handle the overhead. C++ is rarely used in embedded systems because it’s real time performance sucks.

A lot of other programmers I work with do windows programming, which used to be visial C++ but is now migrating towards .net. According to them, if you do this type of programming expect to constantly be learning new things. Example, we started out using C++, then C# came along, and now .net is replacing it even before we’ve had a chance to do much with C#.

I can’t comment much on other types of programming.

Do as many internships in school as you can. When we hire programmers we look for real world experience, not grades and schoolwork.

Concentrate on getting a good computer science background rather than learning a specific platform, language, or area. If you have the necessary background, you can always pick up the necessary skills for a given task, but if you concentrate on a specific area, progress is likely to leave you in the dust.

That said, you can't go too far wrong picking up C and C++, maybe Java, and at least keeping an eye on Microsoft's new attempt to corner the market (C-Sharp?).      Learn the Unix libraries and some platform specific APIs (maybe .Net or MFC), not because you'll definitely be using them, but because once you've learned the APIs for one operating system, you'll be able to generalize to others.

um, eng_comp_geek, you might want to stick with what you know…

.NET does not replace C# at all. In fact, C# was actually developled as part of the .NET initiative. .NET is not a language, but rather a sort amorphous strategy on MSFT’s part.

Anway, I’m a software architect and will repeat what Finagle said: A sound understanding of programming concepts is more important than proficiency in any given language or platform.

Having said that though, I will make my case that you are better off learning those concepts via C or C++.

Java, C#, and Visual Basic abstract a lot of the fundamental concepts from the developer. You won’t get a very good feel for what the computer is really doing if you learn with those languages.

It’s been said before, but I’ll weigh in with my agreement: it’s more important to learn the broad background skills, which help you learn new things quickly, than it is to become an expert at any given language or technology. Learning new things quickly is very important, particularly with PC software, as a new version of the development tools seems to come out every couple of years.

The work you do and the company you work for will probably make a bigger difference to your paycheck than the tools you use to get the work done will. Programmers are likely to get paid more at a large software development company (like Sun or Microsoft) than at a smaller shop or at a business where software is only a means to an end, not the main focus (like a bank or a factory).

The language with the strongest legacy right now is probably C. It’s still widely used, and will be for the foreseeable future. C++, C#, and even Java are, to varying degrees, the heirs of C, and some familiarity with C and its progeny will likely serve you well for years to come. With C and C++, you can learn structured analysis/design/programming and object-oriented analysis/design/programming, which are (for now) the dominant engineering paradigms, and which are useful with other languages.

Like others have said, the most important thing is learning Computer Science, not specific programming languages. The art of programming is independent of programming languages. Each one has various strengths and weaknesses and is designed for specific types of jobs. If you are knowledgeable about programming in general then learning the basics of a particular language when necessary is very easy.

Me six. Learn computer science.

Me six. Learn computer science.

If that is so, why do IT job advertisements INVARIABLY require experience with a specific language and platform?

Because if they can find someone who has basic skills in whatever technonolgy they are using, it makes the process go quicker. But I’ve hired people without any experience in the specific language I needed because they were good workers, had the ability to pick up new languages when needed, and knew how to be an engineer. The latter is much more important than knowing any particular language.

It’s nice to have good skills in whatever particular language is “hot”, but it’s certainly not the only way to get a job, and it’d definately not the way to get a career.

If you want to make the really big bucks, you’ll need to move up to a lead position, like lead architect, senior designer, interaction designer, etc.

The best advice given so far is that it’s far more important to be really good at what you do than what language you learn.

Decide what interests you most, then learn to be the best at it. If you want to be an architect, you will need SOLID object oriented design abilities. If you want to be a top-flight coder, you’ll want to have a really solid grasp of machine architectures, boolean algebra, assembler (not that you’ll likely use it, but knowing it gives you insight), and really good debugging strategies. Learn to read stack dumps and really, really understand what you’re looking at. If you want to focus on the ‘application’ side, then it’s far more important to learn the principles of real interaction design than Visual Basic or whatever other application language you are using.

In my company (and I work for one of the biggest), the spread in salaries has nothing to do with education, or which languages are on your resume. It’s 100% based on ability - the best coders, designers, and architects rapidly rise into ‘lead’ positions and get the big raises. The average ones do okay, and the poor ones wind up on the bottom pretty quickly. There are guys in our company with no post-secondary educations making two or three times as much as other guys with Masters degrees in computing science.

Be the best, and the money will follow.

In this economy, those with jobs.

Seriously - and I not only work in this area, but I hire and manage in this area - the programmers who typically make the most are ones who have more than one key skill. Some real-life examples from my experience are:

  • A programmer with an accounting degree who works on financial accounting.

  • An licensed Professional Engineer who works on engineering software.

  • A linguist who works on creating and maintaining databases for former Soviet countries.

  • A paralegal who works on accounting and contract management software.

The sad truth is, if a person is smart, quick, has the ability, and willing to learn on their own time, I have found in 10 years of experience you can train that person to be just as good, if not better, than a programmer with a Masters Degree in CS, within 1 year. In fact, I no longer hire programmers directly out of college, as I’ve found that their actual programming and job skills tend to be unacceptable for what is done IRL. I have to end up teaching them on-the-job anyways, so why not start with someone who brings more to the able than one key skill?

Now mind you, in the above, I’m referring to the “highest paid” programmers, which is answering the OP. What is the salary differential? Well, that’s very difficult to measure, due to the dual-skilled person often having much more work experience. But looking at years of experience only, I would say that the dual-degreed or dual-skilled professionals make about $25-30k more than their “pure” CS bretheren.

Or, about $70-80k, versus $50-55k.

Now if you want to look just at IT skills, and subdivide this, it’s also difficult. And the “desireability” of a skill changes rapidly. But I would have to say the “value” of the skill in my firm (which has more than 500 in it which could be called “IT professionals”), in decreasing order of “value”, is:

Database design and management, esp web-access database
“Hard core” network installation and debugging (being able to do everything from setting a T1 line up from scratch to running cable to server setup)
Ability to set up NT/2000/print/whatever servers, including hardware
Java and ActiveX writing (REAL applications, not piddly little 1000 line web enahncers)
Interfacing and programming PLCs and SLCs, and other logic controllers
MFC programming expertise
RAD (note I did not include MFC)
C++
C

My exerience from my first company (nearly 20 years ago) echos what has already been said. The graduates with 4 year BSc degrees in Computer Science would start out making about 5k more than those with 2 year Associates degrees, or those from “Joe’s skool of programmin”. All the new hires from all the different types of schools would be lumped together for 6 weeks of “Learn COBOL OUR way”, then turned loose into the company.

I’ll echo what Anthracite and Sam said above.

Now, the really big money, as far as being a software developer, comes when you’ve got quite a lot of experience, say a decade, and a good reputation and contacts, and specialized knowledge. Then you can do independant consulting.

Software contractors charge anywhere from $50-$150/hr and sometimes even much more. Higher rates imply much more specialized knowledge and greater experience. If you like to work a lot and can stay busy and juggle clients, you can make quite a bit of money.

I’ve done this off & on. $10k/week isn’t unheard of, but at that rate I’d be doing nothing but sleeping and coding 7 days/week, which I can only do for a few weeks before going looney. $2.5-5k/week is more usual.

Downsides: You pay for your own insurance and equipment. Your tax situation is complex – you can deduct work related expenses, but you also pay all of your own SSI taxes; hire an accountant, you’ll be filing quarterly. Work can be ‘feast or famine’ – too much to do from multiple clients and then suddenly no work at all for weeks (which is OK if the ‘feast’ periods balance out). Since you bill by the hour, the urge to work constantly can be stressful – if you take a vacation when there’s work available, something in the back of your mind is calculating lost wages.

If you want the really big bucks doing one thing, pick up the Oracle DBA. With a couple years experience, you can make 80K easy.