Solving Problems & Saving Time through Software and Crushing Entropy
Powered by Cecil & Hyde.
When describing what Software Engineers are like to “non-computer-y folks” I like to use the word chef. There is obviously a science to cooking, but we recognize that it is artistic as well. The job of software shares both those aspects.
I don’t want to describe Engineers as just “programmers” or “creators”. Because what we create does not solely come out of our own heads. We are always embedded in an organization that serves something other than the software. The software is never an end in itself, to shameless steal a line: “The computer is the thing that gets you to the thing.”
The artistic part of this job is in gaining understanding on what you’re actually being asked to do, and marrying it with the technology at your disposal. I seems to me that many Engineers only care about the technology end. They do not value a holistic understanding.
Engineers need to value understanding the actual requirements. More often than not you find out that there were a number of real requirements you never knew about. No one knew about them. Because the data presented to you was never properly interrogated. That is an art. Finding the real requirements underneath the supposed requirements that presented to you.
Engineers need to value understanding the strategy of their organization. Sometimes people never think to tell the engineers about The Strategy(TM). Without knowing the strategy you want to execute on you will absolutely make the wrong technology decisions. Your success will be random, rather than the result of planning and execution. Aligning your technological choices with the strategy is an art. We are seeing so many new tech stacks coming out of Facebook, Google, LinkedIn, etc. because their strategies necessitated creating new technology. Necessity is the mother of invention. Technological invention is all about fighting against constraints. Without knowing your strategy you won’t know what constraints you can live with — and which you cannot.
Engineers need to value communication, to value being understood. I know when I was younger I wondered “What they hell do we need with managers? And that entire marketing department?” Yea, you need it. We need to value communication, both internally and externally. Engineers need to write well. They need to write documentation. When they move up the ladder, they’ll need to write proposals. They’ll need to email the CTO. Communicating well is an art. If no one can understand you, you won’t grow, you won’t be effective, and you will be frustrated. For a very long time.
We need to value deeper understanding, because we are not just programmers punching cards and feeding them into a machine. I would bet money that engineers who are unsatisfied at their job are not valuing one or more of these understandings.