Every company I seem to talk to now resonates the same problem: there is a resource availability bottleneck in that we can’t hire the right people as there is simply a lack of the available skills. A common solution to overcome this bottleneck, is to engage with an offshore or nearshore outsourcing partner to fill the shortcoming in staff. This can result in higher overhead costs as well as time delays in projects caused by misunderstandings and other communication issues due to the geographic separation of the participants.
In a perfect world, we would have those resources readily available to us within our current staff onsite. But if we can’t find the resources now, what chance will we have in 2, 5, or 10 years time? Will software development go the route of the Sinclair C5? It may even be the case that these skills can no longer be outsourced as fewer people are learning the skills required. If the software development industry is to survive, we need to start addressing the problem.
Where will our new developers come from?
Common sense tells us when there is a gap, it needs to be filled, otherwise the gap will get wider. If the amount of people with the required skills is dwindling, we need to educate more new people to meet the need of requirements. To be sustainable, we need to take this further and educate young people so that they have these skills throughout their careers so they are then able to train the next set of young people and so on. Investing in the future generations may seem risky in the short run but it is a long term gain and therefore a long term worthwhile investment.
Before Christmas I was at the ‘XP Days’ event in London and a number of companies expressed issues with hiring staff. One company had suffered for 2 years with hours of painstaking sifting through bad code submitted by candidates which may not even result in new hirings. I posed the alternative scenario whereby if they had invested in graduates or,perhaps, started an apprenticeship or training program for those two years instead, then by now they would have had the people with the skillset required to fill their gap.
How to achieve this?
To start with we need to consider what it is we require from a ‘good’ software developer? Ideally, we’d all prefer people who treat their software like a carpenter would treat a new piece of wood – with care, love, and understanding. Someone who is passionate about their product and the attention detail to make it artisan and worthwhile. The product is something to be proud of, both fully functioning and understandable now and to future generations.
Using the carpenter simile again, if we were to replace one carpenter with a machine that churns out woodwork, we may be given more chairs at the end of the day but we would lose the finesse and detail that only comes with making something by hand. Similarly, if we focus on developers who simply churn out code – something I like to call keyboard driven delivery (KDD), coding out solutions demanded by the technology, rather than coding directly for the needs of the business and, therefore, delivering higher value. We don’t just need software, we need software that is business-driven and well-suited to our customers’ needs.
Where to go from here?
Darwinism tells us the best chance for survival lie in how well you are able to adapt. So to prevent a lack of skills both now and in the future, it would be wise to enroll your company, or individual self, into the software craftsmanship movement. Get involved by investing into the graduates and streamline them onboard through mentoring and coaching. Promote an environment where learning on the job with guidance is the norm and healthily encouraged. Building up an ethos of investment in the future can, and should be, expanded into other areas – BA, PO, PM etc. – so that the rest of the business are also encouraged to learn with you and get involved. Somewhere along the line, this industry has forgotten what IT is supposed to be doing and what our core values are. It’s more than about churning out code via KDD to demonstrate technical mastery, it’s about supplying support and delivering a high-value service that meets customer needs.