Our goal as tech creators is to bring solutions that are truly useful out into the world. Enablers to cause a positive impact.
Yet, often we waste time, energy, and money on building software products that are useful for nobody or which end up bringing damaging side effects.

An immersion below the surface.
The answer for coming up with helpful software-based solutions that create a positive effect is an eternal struggle. Throughout the years, we’ve experienced advances in this respect, but we are still subject to a massive component of uncertainty and luck.
Luck is unavoidable. It’s an inseparable part of everything we do in life. However, we should strive to lower its weight, reduce risk, and increase our control over the success of the systems we build.
And to do so, first, we should start by identifying and addressing some of the leading causes of the current state of things.
First, we get dragged by technical excitement.
We have a natural tendency towards continually learning the latest trendy technology and looking in there for answers to the problems we face.
And in the same way, we also feel an intrinsic motivation towards confronting ourselves with new technical challenges.
But most times, the technical challenge does have little to do with the real underlying problem we intend to solve. Pursuing a technical challenge just for the sake of satisfying our desire for dopamine will not make things better for others.
As tech people, we often try to solve everything with tech.
That is not always bad, but it often shifts our focus from the problem to our novel tech-based solution. And the thing is that technology might not even be the best answer to a given problem.
We grew up for specialization.
We were raised inside a cultural belief and educational frame that traditionally encourages specialization in the pursuit of better employment opportunities.
That aids in keeping us stuck on a very narrow worldview, which limits our ability to make better decisions.
Our cognitive biases mislead us.
Our own cognitive biases have a tremendous influence on our behavior, which does not help improve things either.
For instance, as we get more personally invested in our solution, the harder it gets for us to look at it through a critical lens. We fall in love with it, and this moves our attention away from the essential: the problem we were trying to solve in the first place.
Our social and structural environment molds us.
Last, our environment is a determining source of influence on our behavior.
From toxic cultures and wrong mental models to financial pressures, going through evil incentives, many things are shaping our actions, for good or for evil, without us even noticing.
Our context is a crucial variable that can make us thrive, or can make us fall into wrong criteria and short-term thinking —doing what’s easy over what’s right.
What should we do then?
What comes out of all this is that:
- We should not blindly follow our excitement.
- We should not foolishly focus on learning and using the latest trendy technologies.
- We should not direct our attention to raising the bar with new technical challenges just for satisfying our impulses.
- We should not keep our worldview narrowly stuck solely on a specific field.
- We should be conscious of our cognitive biases and the influence the environment has on us to improve our judgment.
There are many things we can do for that.
Still, I believe the first step in the right direction involves clarifying some principles and elevating our perspective beyond software systems.
Some essential principles to guide us.
We should seek motivation in helping people and their environment above anything else —even more than in solving a given technical challenge.
We should lean towards new technology only when there is a clear benefit in using it.
We should be conscious that introducing new technology when we can’t still spot a clear advantage for the job at hand will only increase —unjustifiably— the uncertainty and risk in our efforts.
That is not to say that we should not learn new stuff. We must certainly do it. It is one of those fulfilling things in life for many of us. It’s a passion for us that expands our toolset and worldview.
Yet, we should be careful enough to avoid putting our initiatives at risk because of it.
Remember, if our solutions cannot help anyone, our new skills will serve for nothing.
We should understand that solutions are just hypotheses to be tested.
As such, we should detach from them and strongly focus our attention on the problem instead.
And last, we should not keep our knowledge and skills enclosed inside the field of software exclusively.
We should think in systems and work on our social and emotional intelligence to enhance our level of awareness behind the decisions we make and the actions we perform.
And we should expand our understanding, broaden our perspective, and improve our frame of thinking to understand the job better, make smarter tradeoffs, and find more fitting solutions.
Bringing new perspectives into the equation.
Zooming-out: A demand perspective.
Software and technology can play a vital role and be a great source of impact and contribution.
However, technology and software are not always the best answer to a given problem.
Software might enable that, but not necessarily. Other solutions like a book, a course, a personalized service, an online or offline community, a physical product, or even a change in behavior might work better.
Perhaps a combination of some of them is what would be most helpful.
And in fact, I believe this is a more precise perspective.
People have jobs to be done. People “hire” solutions to make progress in their lives. And pursuing that progress usually implies using multiple solutions that complement each other, shaping a system of cooperative solutions —a system of progress.
What this vision puts into the table is that we can make progress more likely if we look at the cooperative work of those solutions —how they behave and integrate between themselves.
If we also pay close attention to how they fit into specific people’s circumstances, this perspective can help in increasing motivation and making goals more credible, feasible, pleasant, and fast.
That is what makes up the experience for people and is what ultimately can drive real growth for them.
That has direct implications as well and, among other things, highlights the importance of understanding how the software we develop integrates into the system of progress of the people we aim to help.
This view helps us become better makers. It helps us look at the bigger picture.
And seeing the bigger picture can be invaluable for making the right decisions, for distinguishing what’s important from what’s not, for choosing the best solutions and making the right tradeoffs, given the specific users’ context, their constraints, and the progress they look for.
But, reached this point, you still may be thinking…what do we exactly mean by progress?
Well, this is a vast and complex topic. Before pointing you out to the sources linked above, I’ll try to bring some clarity here.
First of all, this is something that comes from Jobs to be Done theory. Specifically, from the current that refers to jobs-as-progress (vs. jobs-as-activities).
We are talking about progress as “be-goals” here. We are talking about the progress people seek to fulfill their core emotional needs. And the thing is that emotional needs are not always so evident for people themselves.
People might say they want something in particular. Yet what they need might be something completely different and even counterintuitive.
We should be aware that usually, people are not conscious of what they need to achieve the progress they look for.
Again, if you want to dig further and know more about this topic, my advice is for you to follow the sources linked in the article.
Our vision around software systems should not end up here, however.
People are not good either at predicting what the unintended consequences of their wants might be. And, as producers, we might overlook those unintended consequences as well.
If we just limit our angle to supply and demand, our efforts might turn into undesired side effects over the long-term for people and for the world we live in.
Zooming-out further: An ethical viewpoint.
Solutions of any kind —software-based or not— have a broader area of influence. If we are not careful enough, they can end up bringing significant adverse side effects for their users, for society, and the world.
We should pay particular attention not only to their potential benefits but also to their possible negative consequences.
Otherwise, we might create a social network with great potential for helping people and society. Yet it ends up becoming a toxic addiction or a source of manipulation, leading to a whole new set of problems.
We might create new ways for production or transportation and still discover that we are dramatically accelerating global warming.
We might create nuclear plants for producing energy and still be critically exposing humankind and the rest of our planet to their destruction.
What comes out of this is that we also should be ethical in our intent. We should lean toward working under supportive contexts. We should strive to do what’s right for the common good.
We should progressively attempt to gain a broad systemic understanding of the status quo.
We should pay attention not only to the apparent short-term benefits our solutions will provide but also to the potential negative consequences they might cause in the long-term.
We should continuously experiment and measure along the way to detect unanticipated adverse effects. And we should look for correcting measures when that happens.
We should take our solutions as assumptions that need to be tested and evolved. We should consistently question them. We should strive to make our systems pass the test of time.
I know that’s not easy. I recognize the systemic nature of problems, and I know they are often wicked ones.
There is enormous complexity involved in solving wicked problems. There are always hard tensions to address. When we improve something, we might be making other things worse.
There is no perfect solution, so we should look for a healthy balance and evolutionarily approach design.
However, I believe that bringing up this systemic perspective of software systems places us in a much better position to positively deliver value and be more sustainable and profitable over the long-term.
In summary.
- As tech people, we feel a unique attraction towards building software, raising the technical challenge, and learning about the latest trendy technology. It’s a passion for many of us, and we cannot deny that reality.
However, this is often unneeded and even counterproductive.
Hence, we should elevate our vision and focus on helping people and doing what’s best for the job at hand. - We should handle solutions as hypotheses to test. As such, we should avoid personally attaching ourselves to them.
- We should think in systems and work on our social and emotional intelligence to enhance our level of awareness behind the decisions we make and the actions we perform.
- We should expand our knowledge, broaden our perspective, and improve our frame of thinking as a way to comprehend the job better and find more fitting solutions.
- We should zoom-out and operate from a demand perspective.
- Software is a possible type of solution to a given problem, but not the only one. And it’s possibly not the best either.
- Solutions (including software-based ones) play a role as subsystems in the systems of progress of people. Together with other solutions, they make up a system of cooperative solutions that work together to deliver improvement.
- Our solutions should fit well into people’s systems of progress. That is what makes up the experience for them.
- We should zoom-out further and operate from an ethical viewpoint.
- Our solutions can also present adverse side effects on people and their environment in the long-term, and we should pay special attention to this fact.
- We should be ethical in our intent, think long-term, and be observant and self-critical to recognize and correct flaws in our design and the related undesired consequences that might show up along the way.
- And finally, our solutions should pass the test of time.
By understanding and operating from this systemic vision, we’ll be in a better position to collaborate and positively influence our team.
We’ll be on a much better path to be sustainable and create solutions that not only make us fulfill our tech curiosity but which are also desirable by people.
All while bringing balance and positive change for all the parties involved over the long-term.
We are currently writing Understand, a book for helping entrepreneurs break the failing startup cycle and start making progress consistently and ethically towards the control of their lives.
Are you currently struggling and fear your well-intentioned startup dream is about to crash down? If that’s the case, you might find it valuable. You can take a look at it here.
Leave a Reply