TL;DR. Many have wondered: what attributes does a software developer need to possess so that he can remain relevant in this ever changing market? Putting aside humbleness, we hold the answer to this question: being a SOLVER. Solver has a meaning itself, but we also use it as an acronym. This article offers you access to the six dimensions that, in our vision, make up for a great software engineer:
- Solutionist
- Owner
- Linked
- Visionary,
- Engineer
- Researcher.
Context
Each software company has a set of values that distinguishes it from other companies in the market. More than being just abstract constructs, the values act as guidelines in the day to day activity. And who are the avatars who possess these values? People working there.
What is it?
The culture here, at abac, is given by the great people who understand that in order to do more, they have to be more. The resulting culture is one driven by SOLVERs who constantly challenge what’s true. SOLVER is a standalone attribute, meaning the people at abac find solutions to complex technological problems. But it’s also an acronym for something bigger than that.
The S stands for solutionist. Long story short, being a solutionist means being focused on finding solutions to problems and not problems to solutions. Instead of dwelling on the difficulties or complexities of a problem, a solution-oriented developer looks for ways to overcome those challenges. He breaks down the problem into smaller, manageable parts and works systematically to find solutions for each part.
The O stands for ownership. When building a solution together, we have to be a team. That means we have to “own” the solution together. Put into practice, this looks something like this: “our code” instead of “my code” and “our fault” instead of “her fault”. A developer with an owner attitude takes full ownership of his tasks. And the thing is he doesn’t just view his work as a job, but as a personal responsibility. A great developer is not afraid to feel accountable for the quality of what he delivers. He is actually there, in the front line.
The L stands for linked with the team. Creating great things requires a great number of people that must be “linked” together via communication. Being “linked with the team” as a software developer refers to the idea of being closely connected, engaged, and aligned with your development team. At the same time, when talking about being linked, we talk about a constructive feedback loop: you provide and receive feedback in a constructive manner. It means being in sync. Being linked with the team also means celebrating successes and milestones together. Acknowledging and rewarding achievements boosts team morale and motivation.
The V stands for visionary. A great software developer should aim to understand the business and “visualize” the end product. Having vision as a software developer refers to having a clear understanding of the broader goals and long-term objectives of the projects you’re working on, as well as the ability to see how your work fits into the larger context. It involves looking beyond the immediate tasks and code to envision the future state of the software, anticipate potential challenges, and identify opportunities for improvement. Having vision also means keeping the end-users in mind, considering how one’s work impacts the user experience.
The E stands for engineer mentality. Being a good engineer requires the ability to select the “best implementation that fits the timeframe”: too simple and it’s under-engineered, too complex and it’s over-engineered. Engineers use systematic methods and processes to approach problems and projects. They often follow structured methodologies and workflows to ensure efficiency and reliability. At the same time, engineers are highly skilled in critical thinking. They question assumptions, evaluate options, and make decisions based on evidence and rationality rather than intuition or guesswork.
The R stands for researcher. Being a good engineer implies being a good “researcher”, so you always have to experiment and learn new things. Keeping up with industry news, trends, and updates is vital. This may require cross-disciplinary knowledge: depending on the project, developers may need to work in domains with which they are less familiar. Good research skills enable them to quickly gain enough knowledge to be effective in these new areas. Being a good researcher allows developers to access and absorb new information effectively.
Why is it relevant
Being a SOLVER pretty much covers the areas that one needs to master in order to remain relevant in the software industry, in particular, and in the working industry, overall. The SOLVER mindset provides a structure that encourages people to want to outgrow themselves constantly. Nietzsche would approve! The echo of this mindset is being reflected in the organizational culture and in the interactions there: Happy people, Happy clients, Happy company!
Pros
More than just checking some boxes at a given time, SOLVER is a mindset that affects you both professionally and personally. Applying SOLVER’s strong principles, you will find yourself being thrilled in the face of challenges, deeply curious and a better colleague overall.
Cons
We cannot think of any downside for being a SOLVER or for striving to be one. But practicing what we preach, we remain open in the face of change.
Conclusions
As a conclusion, we believe that being a SOLVER is the answer to all of the professional and personal challenges. This is the conclusion of years of experimenting and looking at things through different lenses. But being a SOLVER isn’t just adapting to the actual world, but acts as a catalyst to creating a new world. Scientists are the ones who study the world as it is; developers create the world that has never been.
Sources: