The subject of this post may be the number one reason for a good programmer to stop being an employee and to start being an independent business person.
2 of my own examples (I have many more, as many of you do too):
As a one man IT department, in 15 months I reduced my annual budget from $2.3 million to $600K, cleared up 500 old tickets, and implemented 4 mission critical applications. My reward? A 4% salary increase. (I gave my notice during that review.)
As a contractor, I maintained all the software for a $100 million company that was shopping for an ERP package. They were stunned by the 6 & 7 figure price tags and 2 year project timelines. I proposed a project that would add everything they needed from these ERP packages to their current system in 90 days. I hit the target and got paid $225K.
If you're a programmer who is 10x to 100x more productive than your peers, the last place you should be is as an employee without equity. Get out there and find someone who needs what you can do. You'll both be much happier.
And if you can't stop being an employee, at least stop being a "programmer". You can still program, just make sure you're doing it in the service of something which provably makes the company a lot of money. Mention this every time you aggressively negotiate for compensation.
This works for consultants, too. You'll never hear me describe my job as writing Rails code or Ruby scripts. I do that, sometimes, but I'm well aware that I add value faster than equivalently skilled developers and I charge a premium to match.
Yup, to all the underpaid programmers out there, if you're smart enough to program you're smart enough to read the quarterlies or the monthly sales reports. Find a big number and figure out a way to attach your name to it, then get a % of that number.
I don't think you're wrong, but it's certainly not as "natural" (oh how I hate that word) for a smart programmer to start scheming to get a higher salary. Cunning is a skill too, and while intelligence will help out a lot, it's not like things that require cunning will feel as "natural" as programming to a programmer.
Can you explain further the value you add that developers of equivalent skill don't add? Just curious. If the developers are equally skilled, they should be able to provide the same value in terms of code; perhaps you're including some business consulting that you throw in, or something like that?
On a recent engagement I prototyped a scalable content generation backend. Technically, it is an extension of the Rails build-a-blog project that everyone does in a tutorial, and it is trivially within the reach of every other Rails developer with 4 years of experience. The value I add above and beyond being able to implement a scalable content generation backend is a) knowing why you'd want to do it in the first place, b) creativity in applying it to whatever business is under discussion, c) being able to describe in detail what process one would need to use to use it in production, and d) being able to convince the relevant people that a + b + c = money.
Consulting engagements also have a number of risks associated with them. Providing the perception of diminished risk is worth value to the client. Many developers could implement A/B testing, for example. (And they should, because it potentially prints money for the right clients.) There are a variety of ways a hypothetical developer could cause a client to believe that an A/B testing engagement with them is less risky than it could be. One is to have written a widely used A/B testing framework.
See, that's the kicker. You're able to see what the client needs, determine value and offer the best solution. As an independent business, you saw the benefit of that right away. You got PAID! That being said, does that really mean you're 10x better programmer than the next guy? The entrepreneurial & analytical mind may have made you just as valuable in the lumber business (yes, I know that's quite a stretch).
The shortcoming of many companies in evaluating programmer performance is that Engineering/Development Managers are often making value judgements based on factors besides what you potentially bring to the company. They're looking at how easy you make their job, how much they like you (seriously, I haven't even seen a manager completely detach their liking of someone and do an objective evaluation).
So, it boils down to, do you pay politics well, how smart do others "think" you are, and how well do you "sell" the value you bring to the company. In some of the larger corporations, most of that doesn't matter all that much anyways.
If you're entrepreneurial, nothing will highlight your value quite like your own business!
I didn't implement the ERP system. I enhanced the existing system to provide the benefits that the customer sought from the ERP systems.
What I really did was help the customer identify and attack their real problems without worrying about the technology at all. They had business problems that they thought could only be solved with "bigger better software". They were wrong (as many people are).
Some of their problems:
- inventory was inaccurate
- product info (and bills of material) was inaccurate
- too much inventory
- too many late shipments to customers
- shipping costs were too high
- production was not efficient enough
These are classic problems normally attacked with ERP software. But their people were already doing the best the could with the tools at hand: old software and Excel. The project had me work with their people on their problems, not on the software. The solutions we proposed usually required more/better software, but not always. Sometimes it was just a different policy or procedure (or a bi-lingual count sheet).
The exercise in attacking the problems at hand generated the software requirements that helped the customer solve those problems. Mostly new forms, reports, database tables, and a few optimization workbenches and dashboards. (One of my favorite programs was a simple tool that enabled a dispatcher to drag and drop loads into trucks, drap and drop trucks onto routes, and generate reports. He "played" with this toy until he was satisfied with the best result.)
Hacking the customer's business was tricky. Writing the software was trivial.
This goes back to one of OP's points: it's not about how many lines of code or how fast you can write them. It's about providing value to help the customer solve their problem. That's where the real money is.
Just to add to the conversation:
Customization is 90% of the hard work of doing enterprise software. Often enterprise software requires teams of folks to do the above, because what is required is
a) knowing the problems
b) knowing how to solve them (ie, coding/configuration)
c) being able to sell this to decision-makers
Those three roles often take more than one person to realize. Some folks are good at one of those, and they get paid well. Folks who do two or more well are rare/in-demand.
I had picked them up pretty much in the standard way as a referral from a friend to do maintenance programming on their legacy system. They had me share an office with the Big 5 consultant who was interviewing ERP vendors. I knew immediately that he had no idea what he was doing and would ultimately waste a lot of good people's time and money. I had a lot of respect and loyalty to this customer and didn't want to see them taken advantage of.
I remember sitting up all night wondering what to do. I decided to go to the CFO. I told her that her Big 5 vendor didn't know what he was doing and gave her plenty of good examples. I explained that after working with her software and her people for 3 months, I could come up with a more effective way of solving their problems in 10% of the time for 10% of the cost.
I half expected to be thrown out of her office, but instead, she got up, closed the door, and said, "Funny, I was thinking the same thing but didn't know what to do about it." Together we laid out the plan and strategy for the project.
Ever since, I have never been bashful. Even though proficiency and experience can carry you a long way, your biggest advancements often come when you go out on a limb to provide real value for a customer.
Another lesson: you never know what a gig can turn into, so just do your best and keep pushing that envelope.
This is one more example proving "No guts, no glory". IMHO it takes real courage and conviction to go to a C-level executive and state the obvious. Which is why it doesn't happen more.
I see these sorts of "just do it" comments all the time on HN, but short of becoming some cold calling Glengarry Glen Ross-type, it's not at all clear to me how one goes from being an employee programmer to a one-man, bespoke software shop.
Start consulting on the evenings or weekends. Even if it's just setting up Shopify stores or making someone a portfolio site.
If you don't have any leads, skip Craigslist and Rent-a-Coder and start going to tech/business meetups, asking friends and family if they know anyone who needs anything, and talking to random strangers at the bar. I've gotten ridiculously profitable clients at the bar.
Oh, and never do anything for free. In fact, always get a deposit, even if it's for a friend.
I understand the downvotes, but I think there is some truth in 'put the coffee down'. A lot of people think about the how to, but sometimes you just have to put the coffee down and act.
When you feel the step is to big to take at once, just take babysteps. Start in the evening (try not to work for yourself at your dayjob). (see the post of jarin)
"As a one man IT department, in 15 months I reduced my annual budget from $2.3 million to $600K, cleared up 500 old tickets, and implemented 4 mission critical applications. My reward? A 4% salary increase. (I gave my notice during that review.)"
Wow, that's pretty horrifying. I certainly agree with your point. But...
"As a contractor [...] I proposed a project that would add everything they needed from these ERP packages to their current system in 90 days. I hit the target and got paid $225K."
The big ERP vendor may well be grotesquely inefficient, or their software may provide a lot more than your client needed, or both. Congrats for saving your client so much money. But complaining that you "only" made $225k for a 90-day project, working by yourself, seems a little hubristic.
2 of my own examples (I have many more, as many of you do too):
As a one man IT department, in 15 months I reduced my annual budget from $2.3 million to $600K, cleared up 500 old tickets, and implemented 4 mission critical applications. My reward? A 4% salary increase. (I gave my notice during that review.)
As a contractor, I maintained all the software for a $100 million company that was shopping for an ERP package. They were stunned by the 6 & 7 figure price tags and 2 year project timelines. I proposed a project that would add everything they needed from these ERP packages to their current system in 90 days. I hit the target and got paid $225K.
If you're a programmer who is 10x to 100x more productive than your peers, the last place you should be is as an employee without equity. Get out there and find someone who needs what you can do. You'll both be much happier.