Over the last couple of decades, our industry has shown unparalleled growth. IT has moved from the sporadic enthusiast’s attic to one of the core concerns in every boardroom. The question we face with the advent of the fourth industrial age is; have we been able to grow as quickly as technology has opened up new possibilities?
Sadly, I think the answer is no.
Compared to other crafts and their corresponding studies software engineering is still relatively young. As a career, we are only starting to recognize the craftsmanship of a real software engineer who does a lot more than write code and input instructions into the machine in the correct order.
Luckily for us, there have been academic leaps regarding how we prepare future software engineers for their upcoming tasks in commercial companies. The curricula of many universities are of higher quality and offer a broad selection of subjects paramount to helping developers become software engineers.
However, we are still starting late when it comes to educating the developers of the future. The market is slowly responding to this increasing demand as programming games are now available for kids, and high schools are starting to teach coding. Something my nephews will definitely be getting in the hope that this may in the future, even if they don’t go into IT later in life.
Educating our children for the future doesn’t address our current problems. We are facing a shortage of technical personnel and software engineers of varying capabilities and skills. Unfortunately, there are too many developers and not nearly enough software engineers.
So we need to educate now.
For the greatest success we as companies/managers need to create an environment and a culture that allows people to develop and grow. We need to be able to provide the guardrails that empower people to grow beyond what they thought they were capable of.
I see two important things we as an industry can do to help:
- Value software engineering for that craft it is – This might seem dumb to remark, but it is not. There are too many companies out there that are treating software engineers as task-based developers. Give them a command, and they will build a feature. Craftsmanship is not about ‘doing the task’ but how the problem is best solved. This means a degree of freedom and autonomy is necessary, as well as the investment in building both theoretical and practical skills.
- Value Simple Solutions – Simple problems have easy and suitable solutions. Often these solutions stack amazingly well into solutions for complex problems. I see companies valuing top-notch developers that create mightily complex constructs – do not do this. Value the simple solutions and ensure this becomes the hallmark to deliver against because being able to implement something with simplicity is the greatest show and tell, and demonstration of real understanding.
These two simple things will drive a culture whereby a software engineer can thrive. Additionally, you’ll take people on a growth path and shape them into the software engineers we so desperately need: excelling in real craftsmanship.