The difference between the titles Software Engineer vs Programmer vs Hacker vs {other_coding_title} is rooted in a person’s ideals. This difference is succinctly summarized in the wonderful article 3 Tribes of Programming, where the author buckets programmers into three distinct “tribes”:
You are a poet and a mathematician. Programming is your poetry
You are a hacker. You make hardware dance to your tune
You are a maker. You build things for people to use
josephg.com
The author asserts that all coders lean towards one of three tribes—The Poet, The Hacker, or The Maker. Even though a stark contrast is made to separate these groups, these tribes are not mutually exclusive—many programmers are Makers by day, Hackers by night, and aspiring Poets by weekend.
Software Engineer vs Programmer is a false dichotomy I’ve created to separate Makers from Non-Makers. I believe this separation to be relevant because the majority of us are Makers by profession—myself included. Without a doubt, the most accessible path to make a career out of code is the path of the Maker, or the Software Engineer.
If the Maker represents the Software Engineer, who is the Programmer? These are the Hackers and the Poets. These are the coders that code for the raw love of computing, the people who rightfully put the science in computer science. You’ll find these “purist” programmings developing new languages, tweaking assembly, and occasionally scoffing at the work of Makers. Pursuing a career as a Programmer will not be as accessible as pursuing a career as a Software Engineer.
Practically speaking however, this kind of separation is not helpful; everyone writes code for their own reasons. Since the majority of us are Makers, let’s dive into what’s actually important for a Maker to focus on.
Software Engineer Vs Programmer
For the Poets and Hackers, the work of Makers (Software Engineers) may appear dull. This is true to a degree, the average work of a Maker will not push the envelope of computer science. As a Maker, your work is removed from theory and physics; your work revolves around value and impact. From a technical perspective, the work may seem mundane, but this does not mean the the job of a Maker is easy.
You Need To Be A Hacker (A Little)
As a Maker, your objective is to build scalable and reliable software that solves a problem. To have a chance of doing this successfully, you need the foundations of a Hacker. It’s difficult to build software when you don’t understand how a computer works.
Choosing Technologies
As a Maker, your success depends on your ability to leverage the endless shelf of available technologies. Makers optimize for quick iterations in the face of constant change. To do this well, we must avoid re-inventing the wheel and choose the opportune moments to take advantage of existing solutions.
Integrating Technologies
After the relevant technologies have been selected, they must be integrated. A large portion of your work will be gluing these modules together in a coherent way. Makers need to be comfortable using and adapting to other people’s software. Do not underestimate glue-work; it is not a trivial.
Maintenance
As you’re iterating and applying glue, you must also pay attention to maintainability. If your software succeeds and creates a valuable product, then that product—and the corresponding code—will live on for many years. The longer software exists, the more important maintainability becomes. This is a good problem to have! You and your colleagues need to be able to iterate on the code without losing all of your hair.
Domain Modeling
As a Maker, you are a problem-solver. Problems belonging to real-life domains don’t always map nicely to 1s and 0s. It’s critical to understand the domain you’re working in so you can map it onto software. This means talking to your business colleagues, interviewing customers, and constantly measuring your product’s usability. Hackers and Poets benefit from thinking like a computer; Makers benefit from thinking like a human.
Creating Leverage
In addition to using technology as leverage, software engineers must always be looking for ways to create leverage. In organizations, this is commonly referred to as “Platforms.” Many companies have created successful business models out of monetizing leverage. Examples include Amazon Web Services, Twilio, and Stripe’s Platform of Platforms.
As a Maker, keep an eye out for opportunities that create leverage. This could be a small Git script to normalize your team’s branching patterns. This could be a lightweight library to handle JSON marshaling for a common use-case. This could be a unified way of handling Authentication across all your organization’s services. Whatever it may be, leverage is wonderful—create as much of it as you can.
Working With People
Finally, the importance of collaboration can not be neglected. All problems are people problems. Examine any public engineering career ladder, and you will notice how small of a role coding plays as you reach higher levels.
For those of us pursuing careers as Makers, collaboration and teamwork are crucial. In additional to your technical chops, devote time to develop soft skills—read about the psychology of programming, put yourself on projects with different personalities, and debug collaboration issues as you would a bug. The people aspect of software development will remain constant in perpetuity.
Software Engineer Vs Programmer Summary
- There are 3 tribes of programmers—The Poets, The Hackers, and the Makers.
- These tribes are not mutually exclusive, but everyone leans towards one tribe based on their ideals and goals.
- Most software engineers are Makers. This is where a majority of the jobs and money are at.
- As a Maker, you must have some Hacker in you. To build a reliable and scalable product, you mustn’t neglect the basics of computer science.
- As a Maker, you must familiarize yourself with existing technologies.
- As a Maker, a significant amount of your work will be gluing technologies together. Don’t underestimate integration work.
- As a Maker, make time for maintenance—at least 20% of your time. As software becomes more successful, maintenance becomes more important.
- As a Maker, optimize for leverage. Use it. Create it.
- As a Maker, collaboration and teamwork will get you farther than code.