If you're writing code and you're not testing it, the code is wrong. I don't
care if it does the right thing, and people need to understand this. If it
works by accident, you're still wrong.
Bryan Liles - Ruby Hoedown 2008
If you are in the tech industry today it is pretty easy to see who the up and coming companies are and who is in decline. All that you have to do is look at the work environment for their IT professionals. Are they attracting top technical talent? Do they foster that talent and do they do what it takes to keep them, or do MBA's that lack a deep understanding of tech run the show? Do they allow their technical people the latitude to do the right thing or do they constrain them with outdated processes and endless rules down to a two+ page dress code? Yes, this sounds like a lot of corporate environments, but I have also seen my share of startups that have done the same thing......most of which have not had any real success. My favorite examples of this were the tech start up that had a dress code and the one that recently was looking for a senior Ruby On Rails developer with a max salary of 50K with no equity.
Tech is on fire right now. Google and Facebook are fighting for the best talent, and everyone else is trying to keep up. With the announcement of Google giving across the board raises and bonus's so people will not leave, combined with the money that is currently going to startups many are speculating that we are in a bubble situation. Anecdotally, I get unsolicited calls on a daily basis from recruiters for Java and Ruby positions.
Are those who are claiming that there is a bubble right? Partially.
To understand this you need to understand the nature of programming and programmer productivity. Unlike factory work, different programmers have vastly different levels of productivity. The general consensus is that a rock star programmer is about 10 times more productive than a bad (net negative producing) programmer and an average one is about five times as productive. Yet if you look at the salary differentials they do not come close to reflecting the productivity of the engineer.
If we were to use developer productivity as a gauge for IT salaries then our lowest producing programmers would be making 30K, mid range ones would be making 150K and the best ones would be making 300K. Minus the guys who have been involved in successful startups that cashed out on stock options this hasn't happened. If you compare the net revenue gain for a company that is effectively utilizing the skills of a top software engineer as compared to that from a cosmetic surgeon, music star, professional athlete, or hedge fund manager IT labor today is a bargain!
But developer productivity is missing the point without demand for the systems they create. IT both saves companies money by automating tasks and creates new business opportunities. Look at the amount of time that has been saved via services such as Google Search and Wikipedia or the increased efficiency that the inventory management systems at Walmart has that is able to accurately predict when products will be needed at stores. Given the current unemployment rate many may think that it is displacing those workers. In the short term that may be true, but for the next twenty years demographics are going to be taking workers out of the economy at a pace that we have never seen in the US. Without the aid of this technology we will not be able to provide the same level of services we enjoy today. IT amongst other tech intensive disciplines will be critical in filling that gap.
Companies like Google have figured this out. Their number one asset are the people they hire. Sure they have a lot of IP, but at the end of the day that IP is worthless without talented engineers who can continue to improve and creatively destroy it to drive innovation. That is the nature of tech, and the nature of many of the main line businesses today.
So what does this mean.
If you are an IT professional, you stay current and you are really good, you have a VERY bright future. If you are a average one you will do ok and if you are a net negative producing programmer you will probably be able to eek by in the third tier IT shops.
One of the dumbest moves you can ever make as an IT professional is to sign a non compete if it is in a state like Georgia or Massachusetts. By signing that one document you could be losing hundreds of thousands of dollars.
If you are running a company you are gong to need to ask yourself where you want to be. If you think you are a tech company and are not paying top salaries (either via equity or straight money etc.) all that I can say is, good luck. Personally I think you deserve to and will fail. If your main business is not tech then you are going to need to ask yourself if that really is the case. Walmart is not a tech company, yet they have some of the most sophisticated computer systems in the world. The advanced tech that powers their supply chain is a critical piece of their competitive advantage.
The president elect of the GA bar is against amendment one. Looks like things could get interesting when the first test cases roll around.[...]