There’s more to development than just writing code
There’s far more to development than coding, and being a programmer my whole career would waste my potential to generate true, lasting value and change.
As a coder, I’m a mere foot soldier waiting for the task queue to fill up so I can build out requirements given to me by external sources. There’s something to appreciate about being a coder, though. We are the ones trusted to forge the engineering of software out of nothing. We generate value through the act of building. This is the most rewarding aspect of programming, yet this value is not defined by myself. Rather, this value is defined by the clients and higher-ups I work for.
“We throw away our power as engineers working for other people.”
He brought to light a common issue that exists among us engineers: Our creativity and purpose are limited by always building for other people. In that sense, the amount of value we generate is limited by the expectations that we are trusted to meet. Hardly, when a requirement stares us menacingly in the face, are we motivated to move above and beyond that baseline expectation.
It’s difficult to translate the value generated for others as value for myself. That’s why Zack says that code should be written for yourself. This is a fundamental perspective of development that Apple’s founding engineer, Steve Wozniak, attributes to achieving true, meaningful innovation.
That’s why, in order to truly make an impact and innovate in extraordinary ways, you have to first look beyond the ties of just writing code. What I mean by saying that I no longer want to be a programmer is not to give up coding altogether but to instead look at the steps beyond programming that tie into the overarching theme and aim of development. It’s within the upper echelon of this theme that true value is created.
Therefore, to go back to the roots of why I started development (which was to create and innovate), I have to move towards what the theme of development consists of — architecting, strategizing, leading, contrarian thinking, visionary thinking, and most importantly, innovation. Building value for other people based on how I define it and no one else. Driving development through my base understanding of the capabilities of code.
Coding and engineering is a start, but it is by no means an end in and of itself. It is a process that is necessary to undergo to create a true impact in the world, your company, and the realm of development. When you become a leader and have the opportunity to shape the direction in which the code should head rather than being the one writing the code yourself, you have more breathing room to both do great things and contribute more to the development of a project.
This is why the philosopher Ayn Rand (founder of Objectivism and author of Atlas Shrugged and The Fountainhead) once wrote:
“I swear by my life and my love of it that I will never live for the sake of another man, nor ask another man to live for mine.”
You have to define and bring to life your creative spirit. You can’t do what’s truly creative if you’re always building in accordance with the demands of other people. You must aim to be valuable by actualizing your abilities beyond where you are right now.
It’s for that reason I believe all programmers should want to be a technical asset in the same way Steve Jobs was to Apple, Bill Gates was to Microsoft, John Carmack was to Id Software, and Jeff Bezos was to Amazon.
Not the one constrained to only fulfilling the tasks handed down to you but rather the one envisioning and manifesting the future of the project in the way you see it. Not working for a paycheck or because you have to but working for the amount of value you create — working for yourself and the impact you can create for other people. In that way, the true reward of development is to build in accordance with your vision, to create for the sake of creating, and to learn to love that which you do on a deeply internal level.
In order to do that, one must upgrade the way they see development. To become truly great, you have to learn beyond just writing code because, in essence, anyone can learn to become a good coder. Not everyone can learn to become a good developer in the way the greatest engineers we’ve ever seen are.
Fitting into the shoes of such giants requires a heavy focus on your emotional intelligence, leadership, ability to strategize, and ability to design solutions. You must see development as a creative and artistic endeavor rather than a strictly technical one. A craft that you aim to refine and improve on a daily basis. By becoming better, you work towards that ideal where you have the freedom to contribute in unimaginable ways using nothing but the developed heights of your intelligence and wisdom — the freedom to think and be trusted.
This is why the long-term goal is to no longer be a programmer.
It’s to become a developer in an idealized sense. The one not only writing code but architecting, designing, and leading a project. The one helping your team breathe life into what you’re creating. The principal engineer. The architect. The technical lead. The CTO. The founder. The strategist. The individual. The team player. The mentor. The student. The coder. All distilled into a single entity.
Therefore, the true goal is to have the freedom to influence the direction of a project. To bring your own insights and wisdom into play within the bigger scheme of things. To have the freedom to think, create, and generate value to the highest possible degree. To lead others, inspire others, drive others forward, and create value both in the way you see it and in a way that coincides with the values of those you work with.
As a programmer, you should aim for the same impact. If you do, you’ll be one step closer to intentionally writing code and developing with a purposeful stride to move the world forward in extraordinary ways. To develop with a purpose and a vigor to meet that which you envision.
When you develop with purpose and contribute your mind in such a way to piece together a part of a great engineering culture, you’ll influence others to do so as well. When you get others to come together as a singular entity, then the projects that you do transform from work into projects of meaning, value, and creativity. It’s when you develop with that sense of meaning that you are able to possess the freedom to invent truly great software.