Holistic, Agnostic & Specific at solving problems

Eduardo Lopez De Leon
Apr 20 · 5 min read

How these characteristics fit into the modern role of software engineering and elite software teams

Image for post
Image for post

Solving a problem can be done using different tools, knowledge, and a set of practices. Depending on the complexity of that problem, is how you will start to figure out how to solve it. The way it can be done is understanding the problem from the beginning, thinking in the potential benefits and impacts of solving that, and translating into a solution.

It happens the same with software development — you need to cover a wide range of steps in the problem-solving process, and you need to jump into different layers of abstraction, implementing the most suitable and feasible tools to accomplish the objective of that particular problem. Many problems a developer wants to solve can be done with particular programming languages, existing tools, and APIs. The one in charge of solving can decide what is the most suitable programming language, with the right set of practices for that particular challenge. To solve problems, it is not enough to say that you know a particular tool or single practice. Being Holistic, Agnostic & Specific at this moment of the software discipline is distinguished and highly-valued.

Holistic in the entire process

Holistic means coverage of the different steps on the problem-solving process. From the business problem or opportunity, translating into the architectural pieces, identifying where and when to optimize, executing and deploying the solution.

It comes from understanding why the problem I want to solve is really a problem,, to whom, and why it is worth tackling it. From the beginning, it helps to empathize and clearly understand the dynamics around that problem, and start thinking of great technical ways to approach the problem. Even when building the tech solution, the early involvement will be resonating and should be part of the thinking process to remember what is crucial to solving that problem.

Image for post
Image for post
A holistic approach to a generalized problem-solving process

Agnostic in technology implementation

The execution of the technology can be done in a different set of paradigms and languages, depending on the problem to be solved. It is not enough, again, to say you will solve all potential problems with a single language all the time.

Every programmer knows there are programming languages with a specific purpose; so there are general-purpose languages. But when it comes to choosing the right language, you will define which is the best one depending on the proper attributes to solve the problem: flexibility, manageability, maintainability, writability, resilience, . What is needed in the tech solution in the short and long-term to make sense from a product, business and market perspective? Those decisions will impact the potential technical debt to be handled and administrated in the product while growing.

It is not an easy task to be a polyglot, touching every new technology appearing in this rapid industry. However, there are ways to shortcut the path: talking to other colleagues, reading, exploring, testing. This talks a lot about a curious engineer, as part of the core value of the problem-solving process: curiosity to know how to solve this particular problem.

Image for post
Image for post
Expansion of tech choices, as part of the agnostic mindset

Specific to the served industry

Using the same language and context as the business counterpart, understanding the dynamics of the industry where the software piece is going to be implemented. Being empathic while deploying technological solutions becomes a differentiator, since the perspective and needs from users, customers and the market itself, are considered as part of the problem-solving process. Also, the understanding of the business or organization implementing the solution makes the software engineer introduce elements to fit into the proper business objectives.

The trust environment that can be created is powerful. An engineer capable of jumping into different vocabularies and contexts may be proactive enough to generate other paths and alternatives to the subject problem. Being able to align to that industry context, will help to not only solve the problem in the present time but think about how to adequately grow that solution.

Image for post
Image for post
Being specific according to the industry and stakeholders position

A merge of the above

The combination of these characteristics will be a definite mix for any software developer and any software team executing technology to solve problems. Those teams unable to implement a solution without any constrains in terms of the holistic process, understanding the industry where the solution is supposed to be used, and choosing from all the available tools, will be limited and might not reach the best long-term potential solution from all different angles.

Being holistic is though, more for a software developer. Being one myself I typically wanted to be all the time coding, in front of the terminal seeing how thru that canvas you will create a solution for the problem. This is not enough to solve the entire problem. You need to grasp every aspect of the problem, and being able to see it implemented to polish the solution and enhance the outcome.

Being agnostic is demanding, more in an industry that changes every single month or even every week: new practices, programming languages, frameworks, and tools. As an engineer, you need to be curious and passionate enough to forget (for a while) all your current knowledge and being open to reading about a new tendency or a group of avid cool kids working on a new fun project, and maybe you might think of joining them too—betting it will be the next .

Being specific requires empathy, and a high level of learnability to understand the factors involved in the industry where the solution to be built is supposed to be used.

Nonetheless, acquiring these capabilities both individually and collectively is powerful. There should be a homogeneous conversation, where the majority of people involved can understand the others' perspectives and have a strong opinion about the design of the solution. There might be some concentration of accountabilities, but the most common language the team can share the better.

Users and customers will be the most benefited from this combination—it is not exorbitant to think that the economy itself when you realize that . The silos and misunderstandings that those teams will be evading are crucial for productive and meaningful work, therefore all parties will see the progress and benefit.

Building software has never been easy. These are the kind of challenges the discipline demands today. Problems today are harder to solve, so the approach to them should have a versatile intention and purpose behind it.

Icalia Labs

Where we share with the world our experiences, knowledge or…

Eduardo Lopez De Leon

Written by

Co-founder at Icalia Labs. Software, my career. Ambivert, Progressive and Vehement. Bilingual [EN|ES].

Icalia Labs

Where we share with the world our experiences, knowledge or anything in general that can help others building tech products.

Eduardo Lopez De Leon

Written by

Co-founder at Icalia Labs. Software, my career. Ambivert, Progressive and Vehement. Bilingual [EN|ES].

Icalia Labs

Where we share with the world our experiences, knowledge or anything in general that can help others building tech products.

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface.

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox.

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store