One of the more amusing parts of my workday is getting 2-3 calls each day from offshore companies asking me to outsource our development work. A good portion of their pitches refer to their developers as “resources.” It’s a wistful thought, that I could simply pull out a checkbook and buy a programming resource or two to help out with work when we are overbooked.
In some ways, from a purely financial perspective, developers may very well be resources. They produce lines of code, are paid in cash, soda, and beer, and take up physical space in an office. They are hired by a “human resources” department, and they can be stolen by a competitor.
In actual practice, however, they are not. A resource is a quantifiable concept. As resources, developers could be fed a project (input), and similar developers should produce the same results (output). Not only are the outputs created by two different developers vastly different, the best developers might reframe the entire task, and offer a new approach that will provide a much better long-term solution. As Steve Jobs once remarked, programming is like no other field. In sales and in operations, there may be a 2x to 3x performance difference between an average employee and a great one. In programming, the difference is upwards of 20x.
The reason for the vast productivity gap can become apparent when reflecting on the analogy of a company as an organism, pioneered by Harvard Business School’s James Moore. Marketing and sales might bring in food for the organism. Operations might process that food into products. Accounting and management might be the nervous system that provides control. Developers, on the other hand, don’t play an active role in the actual creation of products. Developers take an organization and make it better. They implement technology to improve operations, provide tools for new insights into important data, and help improve the sales and marketing process. They might also create new products, and implement new business models. Instead of producing output, they change the way an organization works. Developers are the self-improvement component of a company.
No two programmers are alike. Reviewing applicants for a software development position is not about dissecting a task, and then seeing if they can perform that task. No matter how much training or micro-management might be dealt upon a developer, they will never recreate the project the same way as another programmer. Developers create – and the only reliable measure of future performance is looking at their creative capabilities.
An excellent example of the concept of “creative capacity” is portrayed in The LEGO Movie. One of the high-octane scenes has the “Master Builders” taking unrelated LEGO pieces, with Matrix-like martial arts moves, and turning them into functional cars, planes, and trucks. They also depict an uncreative guy, not able to build much more than a sofa. Although it’s a silly parallel, a developer, at his core, needs to have that creative capacity, to approach a problem, and connect concepts from a wide range of different fields to build an effective solution.
So if developers are not resources, what are they? More than anything, they are partners – both in the project, and in the company. Thinking of them and treating them as such will take your IT projects to a completely new level of success.
Written by Andrew Palczewski
About the Author
Andrew Palczewski is CEO of apHarmony, a Chicago software development company. He holds a Master's degree in Computer Engineering from the University of Illinois at Urbana-Champaign and has over ten years' experience in managing development of software projects.