Stop Resenting Developers
Musings on why software engineers are othered within the business community…
I think the main reason software developers are considered so other from the rest of a business community is magical thinking. The work of software development is complex, multivariant; the actual physical creation of an idea in code always reveals numerous logical problems with the original idea. It also always reveals the actual complexity of what can feel like a simple idea. The machine only does as it is instructed. Code cannot make assumptions based on experience (although we try our best to simulate the effect with design patterns). Some things that humans understand easily are still very difficult problems in computing; changes in dates and times, or the subtleties of human language, for example.
We try to account for these realities with design, but the actual material of construction is code. A full-size clay model of a car is useful, but it is not a car.
Coding an idea through all these variables and realities takes time. It is much easier to think of ideas than it is to actually build them. The history of computing has been one of shortening the time between idea and reality, but at some point, instructions must be written for the machine.
Prototyping is actually the best defense against this intractable problem. It short-cuts these problems by creating a non-functioning version of the idea that allows its assumptions to be tested. The problem is prototyping an idea requires an openness to it being a bad idea. That requires humility, a character quality in short supply in our modern era, and in particular within the technology community.
Because the skills required to be a software developer are difficult to acquire, developers are in high demand and can demand greater compensation for their services than other personnel in the business.
The same is true for doctors and lawyers (who typically make considerably more than software engineers), and I suppose they are also resented for this same reason. Perhaps that resentment is tempered by the knowledge that those professions require expensive educations, whereas a developer can learn their craft with zero formal education. In addition, software is understood through a user interface–its complexity is abstracted–as opposed to an actual legal document or patient in an operating room.
The stereotype of a “nerd” being good “at computers” largely holds true. When hiring developers, I look for characteristics generalized as “geeky” as leading indicators that they will make good software engineers. Anti-social tendencies being one of those characteristics. But it’s complex…just because a person is an introvert doesn’t mean they can’t communicate. A lot of the communication required in software development is written, and I’ve found being clear and concise in written communication is a separate skill from the kind of extroverted skills required by, for example, a salesperson. (Not that introverts can’t make great salespeople, or extroverts great software developers.)
The main stereotypical characteristic I look for is intellectual curiosity. Software is complex, so the people who like to create it appreciate and enjoy complexity. They recoil from simple explanations to social issues, historically-rooted worldviews, traditional business structures. They are always questioning the status-quo, not just in the systems they build but in the cultures they inhabit.
Software developers are sometimes referred to as “snowflakes”. I feel like this is a generalization based on some of the factors I described above. Every human is a snowflake, and every human is just like every other human on earth. This non-dualistic reality, while difficult to appreciate, is fact. Just because a software engineer doesn’t think like you, shoots holes in your ideas, takes longer to build those ideas than you assumed it should take, is abrupt, is into culture you think is weird, isn’t into mainstream culture, is socially awkward and can demand a competitive salary doesn’t make them less human. If you need them to build your ideas, to make you money, it is probably a better strategy to begin to try to understand them, rather than keep them as an Other.