I had a conversation recently with a C-Level executive of a small, but very successful company. He was bemoaning his relationship with software teams over the years. In so many words, he said to me, “When I oversaw software projects, I was always irritated. Either they were working intensively on a project, racking up costs but still not making deadlines, or things were slow and I had to pay them a lot to not work much.”
He is a business professional, and admittedly is “not technical.” The funny part is, I hear similar things from cost-conscious managers who have technical chops.
Why is that?
First of all, look what it takes to write code. Programming requires uncommonly high intelligence, personal discipline, the ability to connect cause and effect, a superior sense of responsibility for the results of one’s efforts, and enough humility to accept that one has made a mistake. Given those requirements, good programmers represent a very small percentage of the population, no matter where you are in the world. And since the best are so smart, they are usually fully aware of what they are worth and expect to be compensated appropriately. So they cost more.
The best developers I know are those that take pride in producing tight, efficient applications that do exactly what they are supposed to do. Bloated, over-architected systems, even if they are designed following the advice of a credentialed “expert” who oversees the development, inevitably become a cost center for a company as maintenance falls on the shoulders of successor developers who inherit the code and who are less expert or simply unfamiliar with the system. Less code equals fewer opportunities for logic breakdowns, less unit-testing and QA time, as well as faster comprehension for the successor developer.
A senior architect at a major software company, clued me in to this years ago. Based on that company’s own metrics, the best developers have an order of magnitude increase in overall productivity with corresponding decreased costs in development and maintenance, as compared to their less-skilled counterparts. Have your best developers, (who can write rock solid, low-maintenance code) build the subsystems and backend components so that the workhorse parts of your system will be on firm ground.
Another important point: the best developers tend to be self-motivated in learning new technologies and tools.
A couple of other cost points:
- Tools can be overrated as a cost saver. Tools do make a difference in productivity, providing they are properly understood and used by a developer. Yes, you should invest in appropriate tools. But the productivity increase, and subsequent labor cost decrease, won’t be as substantial as using a competent developer.
- “Best practices” and methodologies are subject to opinion, prejudice, fad, and marketing. While there are practices (such as Agile) which when effectively used may improve your productivity, there are no ”silver bullet” practices or methodologies that will solve all of your productivity problems, as legendary computer architect Fred Brooks has said.
In summary, this is a lesson that some companies keep learning over and over. The best developers who write tight, rock-solid code and who are career-long learners are your best investment in productivity and most likely source of reduced costs.
Daelin says
My father is a software engineer for a company that programs satellites and phones. I can hardly comprehend the kind of work that it takes to perfect programs using only computer code. Can you imagine how you look for mistakes or glitches? I only have a basic knowledge of adjusting code for my blog and webpages, but someone else had to create the code that I use out of nothing. I’m highly impressed by software developers and programmers. Our world would be VERY different without them.