The Builder vs. The Problem Solver: the Mind of a Software Engineer
Gain insight into your strengths as a developer and thrive in your career
Do you experience mixed emotions when starting a new project?
Do you feel an adrenaline rush when presented with complex programming challenges, or do you find them overwhelming and daunting?
You certainly have noticed that your perspective on a new situation is not always the same as that of your colleagues. In a complex industry like tech, understanding your unique approach to engineering tasks can be crucial in advancing your career.
A while ago, I read a comment somewhere about different styles of software engineers (unfortunately, I couldn’t find it anymore). But that resonated with my view of the industry and the challenges of every professional.
As complex individuals with our own set of ambitions, hopes, and experiences, we approach problems in different ways. We get excited and frustrated about different things in our daily jobs. We set our careers toward different goals. Where one sees a problem, another one sees an exciting challenge.
With the risk of oversimplifying people’s mental models, I’d like to offer a contrast between two distinct styles: the builder and the problem solver.
The Builder
Builders are individuals who enjoy the process of creation and love to explore new ideas. They thrive in the creative process of software development. As kids, they may have spent hours playing with Legos or building things with their hands and were drawn to strategy games and tycoon simulations. They usually get into art and music and tend to have a more generalist profile.
In the tech industry, they are attracted to startups that move quickly and are always looking for ways to innovate. They enjoy the fast-paced nature of the startup world and are eager to create something new. They are always excited about the possibilities that technology can offer. They also thrive in consultancy, where they get to build many projects across different areas or industries.
However, the smile quickly fades when a builder feels stuck in the same area or doing repetitive work. They may struggle with completing their projects, as they may get too caught up in the creative process and lose sight of the end goal. Builders also may be dangerously prone to get sidetracked by new ideas.
The Problem Solver
The problem solver is an engineer who approaches programming with a focus on logical thinking and refinement. They tend to have a love for testing and enjoy the challenge of solving complex problems.
As children, they were always looking for puzzles to solve. They loved playing the same game over and over until they mastered it and got the highest score. They enjoyed taking apart gadgets and figuring out how they worked. While others would have nightmares thinking about math and electronics, problem solvers would thrive on that.
In software development, they approach coding as a series of problems to be solved. They are highly detail-oriented and always seek to produce the most polished work possible. Problem solvers are always testing their work to ensure that it is working as intended. In fact, I found that this style is pretty common among TDD (test-driven development) practitioners: you write a test (problem) and immediately start solving it, iterating later to find the optimal result. All those green lines bring you great satisfaction!
However, this drive for perfection can sometimes lead to struggles with perfectionism, causing them to spend too much time on a single problem. Sometimes, deadlines are missed as they strive for an unattainable level of flawlessness.
From Remote Control Tinkerer to Product Creator
I was most definitely a Problem Solver when I was a kid and when I got into the tech industry. I was the type of kid who relished taking apart the TV remote control into its smallest components, much to the frustration of my parents. I found little pleasure in electronic toys until I fully comprehended how they functioned. Understanding the inner workings of gadgets and puzzles brought me immense satisfaction.
As I grew older, my interest shifted toward computers and hardware. I would keep my machine open at all times to fully comprehend the components and their interconnections. Eventually, I began applying the same approach to websites. One of those days, I made the decision to pursue a career as a software developer.
A few years into my first startup job, I began exploring different roles, and my interests naturally evolved. Witnessing the process of creating something entirely new from scratch, and seeing it through to completion, filled me with excitement. Whenever someone presented an idea, I would immediately start sketching out shapes on a whiteboard, piecing together the necessary components to bring the concept to fruition. I was becoming a Builder.
Fast-forward to today. I find immense pleasure in the process of sitting down with a client with a problem to solve and sketch ideas. Building that solution from scratch and taking it all the way to production brings me great satisfaction. While I still enjoy the challenges of technical papers and LeetCode-style questions, my true passion lies in creating exceptional products using the building blocks at my disposal.
Navigating Different Approaches
In order to get the best out of yourself and your team, it’s helpful to understand how you most enjoy doing your work.
A Builder is usually more generalist. They may want to participate in different projects or at least different technology stacks. They need to see all the pieces so they can reorganize them. They want some space to get creative, and to suggest innovative solutions to old problems. As a manager, if you confine a Builder to a job where they are expected to focus on just one thing, they will likely become dissatisfied and feel their potential is not being fully utilized.
On the other hand, expecting a problem-solver to thrive under many projects and never get deep into a programming challenge will quickly make them unhappy. In their ideal scenario, they are provided an insanely complex problem to solve, and enough time to dive deep into it until they get it done. Their focused time is respected and encouraged.
Conclusion
It can be tempting to simplify your approach and categorize those around you as either builders or problem solvers. However, it's important to recognize that individuals possess traits of both mentalities and that your interests and focus can and will shift over time. The reality is far more nuanced than a simple binary categorization.
Whether you are a builder who thrives on creativity and innovation, or a problem solver who enjoys logical thinking and deep work, recognizing your strengths and weaknesses can help you navigate your career and achieve your goals. As a manager, recognizing the strengths and preferences of your team members and providing them with the appropriate work environment can help increase productivity and job satisfaction. By embracing and respecting the diversity of approaches to software engineering, we can build a more inclusive and innovative industry that benefits us all.