I often hear software developers described as “coders”. To me, this implies someone who implements the very last step in a one-way idea-to-product chain of events. Someone who, perhaps unquestioningly, takes an idea that is deemed sufficiently well-defined, and codes it in an arbitrary programming language.
I think that businesses hiring “coders” miss out on the real understanding of technology and, more importantly, what is possible with it, that they would gain by hiring slightly more experienced software engineers. If your product is to be built in software, shouldn’t you hire people who know a little more about it?
Yes, experience costs more. But with experience comes the ability not only to improve, optimise and speed up the creation of software, to make it more reliable, scalable and understandable, but also the ability to discuss how it will be built, perhaps using existing components, ways to improve it and to work through problems encountered (there will be many) and available options at each stage.
Crucially, decent engineers can do all of this both in technical terms and in the language of any audience: business sponsors, sales, marketing, clients. You can hand them a whiteboard marker and ask them to tell a room full of people about it… in a way that everyone will understand.
The ability to bring other non-tech folks into the software development process, on their own terms, is the sign of a mature engineer. They don’t need to baffle with technical details as a way to pat their own ego. They can explain and expose their decisions in ways the rest of the business can understand, and involve people in those decisions.
In short, experienced engineers enable a business-wide discussion about technology, rather than a simplistic, and perhaps limited, coding of an idea in it.
So if you’re building a tech product, and you really want it to sing, to work well and to compete… please don’t hire “coders”.