Saturday, October 27, 2012

Coders - our most precious resource.

I recently read an article talking about the scarcity of good coders who are constantly under ever increasing demand.

Good coders become scarce due to retirement, getting hired by competitors, or starting their own venture.  I've personally experienced lost opportunities to hire great coders from each of these things, particularly the last one. 

Often as well good coders tend to form collectives that bill as an agency rather than individually, and while sometimes this works in the short term, my experience indicates that these kinds of organizations often prioritize strictly on cash being payed at any given time, and have no loyalty or affinity for any particular client.  Especially clients who are suffering change and need that creativity the most, but can't necessarily provide extra financial motivations.  They also tend to reserve their top folks for internal projects that will ideally get them out of the service industry and into the royalty collecting business.

Additionally, these pressures are exacerbated by a decrease in educational quality and a general lack of interest in the passion for disciplines around coding. Of course there's always a "nerd" around, but the demands are increasing exponentially while the supply is stagnant or even on the decline.

So I have some general heuristics to mitigate some of these things.

1. Hire coders internally and treat them as well as you possibly can.  Give them whatever motivation they need to stay - mainly a sense of control and ownership of their products, as well as every incentive you can to keep them engaged and enthusiastic about the project. 

2. Let them brag.  Often I've seen coders want to share their code with their community of peers, but a closed, proprietary code base makes that impossible and that frustrates coders.  They constantly pull from the open source community, and often find pride in contributing to it.  If any of your code base can be "open sourced" and kept in the community as part of the collective knowledge of mankind without jeopardizing your competitive advantage…work to find and exploit those things.

3. Leverage the unpopular.  Right now flash, for example, is suffering a lot of bad PR due - clearly - to fear around losing short term perceived financial gain of moving the app/game market to walled gardens instead of keeping it open and free on the regular internet.  The truth, however, is that flash developers are legion (over 3 million of them), and write in a highly standardized language (almost identical to java, C++, PHP, C# etc.) that ports to any and all devices and app stores OR the www, and since the flash platform is so well designed and intuitive with the capability to be a single code base deployed across platforms, they LIKE using it.

So, by exploiting the ignorance in the market about what flash is / does, we can get developers who are eager to use the language because they enjoy it, and still have code that is easily translatable and reusable under almost any architecture and discipline.  In short, we're investing in the skill set and discipline of coding, rather than a particular architecture, and while our competition is "wound up over HTML5" we can zoom past them with superior technology that delivers in less time and for less cost.  Check out these stats if you're convinced "html5" is the future.  News: its not actually anything. Do some homework on what it actually is, and you'll see its really got nothing to do with flash at all.

4. Understand good coders can't really be off-shored, particularly senior ones.  A senior architecture designer has to have the ability to understand the cultural context and language of the market end user AND the sophistication of the architecture and nuance of the technology.  Having "less expensive" coders work offshore can work in very special circumstances but often if a coder is fully qualified and happens to live in an area where cost of living is lower, they can be easily poached by any of the competition and will thus be able to demand wage parity anyway.  Geographic location of the coder really should be close to both you and your customers, particularly if you are less than willing or able to have an intimate understanding of your own code base.

Competitively, having a group of coders as the primary investment instead of thinking of the core product as some body of code is far more agile and adept at flexing to market demands and opportunities.  If the coders are always there, then at any time code can be dumped and rewritten without worrying about engaging and educating a new vendor or contractor.

In short, if you plan to be a sustainable company with long term viability and ability to flex and evolve with market demand, invest in people - your coders, and dont ever get too attached to your code base.  Coders are the most precious resource of any company today.