Development is Communication
I think there’s a misunderstanding about programming, from technical and non-technical people alike, that building a feature, debugging a problem, or creating a brand new thing entirely is often seen as toiling away on a keyboard. That you’re buried in a black and green terminal window, typing away, trying to deter hackers, and watching Matrix-like code vertically trickle down the screen.
But, the further I’m into my programming career, the more it seems writing code is where I spend the minority of my time. Often, I’m working with clients and team members to create requirements or understand how something will work versus building the thing.
And maybe this is partly why I’m optimistic about the advent of AI and LLMs. While, yes, they are proving themselves as tools able to perform the work, programming is often about effective communication and understanding.
Understanding is the first step
Imagine you’re working with a handyperson to construct something for your home. They aren’t simply taking orders and building them as-described. (However, if they are simply taking orders and blindly constructing your whims, please seek another one!)
Instead, you’re establishing a partnership with them. They don’t move straight into construction. They are constantly taking their wealth of knowledge, applying it, and communicating it to you along the way.
They convert the work into actionable steps
They inform you about limitations, costs, and timelines
They anticipate issues along the way
A handyperson only skilled at building doesn’t stand a chance if they don’t fully understand you and your vision. And blindly following your vision is bound to put you into a heap of trouble. You don’t know anything about miter joints or load-bearing structures or building codes.
Communication-driven development
Similarly, one of the most vital skills for a programmer is their ability to communicate: with their team, their managers, their clients.
The best programmers I know are the ones who embrace this. That’s because their ability to be a good communicator informs what they’re building. Their work must be understood and appreciated by the person who is using it.
Great programmers aren’t just ingesting a set of instructions and following them blindly. They review them, test them, challenge them, and communicate with their teams to evolve them for the better of the final product.
It’s often more difficult than toiling away at a keyboard, but far more rewarding.