In software development, there are exactly two career steps:
- find any job
- find a good job
Success in the first step is determined by many factors, technical competence being a minor one. You land on your first job based on what you can supply and what is demanded. Your supply includes marketing and sales effectiveness, price and competence. Demand is more hard to characterize, but in the short term it is something that is given. You can adapt to demand only by trying to figure out who is actually hiring at the time. Personally, I found my first programming job by calling to the owner of the company (sales) while studying CS and Econ in the university (marketing, competence) and offering to work for the company as a free intern (price), after seeing they were looking for interns in a university job board (demand). The market was recovering from the dotcom bust then (demand). A little later they hired me when the previous guy quit (demand) and I was already familiar with the company (marketing), and my price (!) was right. So I didn't have or need what most people here do to find their first job, that is, personal or family connections (sales). *
Now, my present job is my third. Each time I have switched, two things have changed for better:
- more pay and
- more respect
Unfortunately, a third and perhaps the most important aspect of job quality has not improved unquestionably: the professional quality of software development. This is what I probably have to search for the rest of my career. But first, let me explain why professionalism does not automatically come with pay and respect.
In order to get better pay and more respect as a programmer, your work has to visibly make money to the business. If your company sells software that you develop, then your work is respected and your pay is easy to justify. But if you never deal with clients and your software is only a small part of some large offering, you are not going to be that important to the business. In the worst case, you are just an administrative cost that does not bring any money in, even if your work actually keeps the company running. The important thing to acknowledge is that the technical skills required to do the job do not justify the pay and respect, only productivity does, which is manifested by the visibility of money created or saved for your employer. This is also the reason why professionalism does not necessarily follow from the pay or the status of the job. Your job may well consist of making a lot of money from embarrassingly bad software.
I think that professional quality is something that is respected only when it is needed to stay competitive. If there is no competition, solutions need to be good enough, not good. Joel Spolsky has given an excellent talk on the subject, one that I've been only repeating here, and it boils down to this:
The key point about in-house development is that once it’s “good enough,” you stop. When you’re working on products, you can keep refining and polishing and refactoring and improving, and if you work for Facebook, you can spend a whole month optimizing the Ajax name-choosing gizmo so that it’s really fast and really cool, and all that effort is worthwhile because it makes your product better than the competition.
So the good jobs are found where software products are created in a competitive marketplace. Every other job is likely to have issues. However, only a small and probably decreasing fraction of programmers will end up having these dream jobs. The rest of us will have to choose between evils. After switching jobs two times, I'm more and more impressed with the simple Joel Test **. It is eye-opening, although depressing, to see how low most of the teams score on this scale. Software teams that I have been a member have never scored over 4 of 12. And yes, this is partly my fault, for not having been a better innovator.
-mika-
* Sorry, no references here. But I'll bet that there are LOTS of studies on how people land on their first real jobs. Even today I get regularly two or three job situation queries a year from a union, universities or the Finnish government.
** BTW, there was a cool Anti-Joel Test recently active in StackOverflow





