Pragmatism is our core principle. It enables us to focus on what matters most to our clients and adapt to changing circumstances.
Pragmatism is a philosophy that values practicality over theory, experience over speculation and results over dogma. We firmly believe that successfully delivering a good product requires a practical approach. We prioritise the needs and goals of our clients over the latest trends or buzzwords. Of course, taking advantage of new technology and processes can often be beneficial. However, we believe it must always match the product's and the organisation's needs.
Abraham Maslow famously said, "I suppose it is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail." It is important to remember that one size never fits all. Every project has its own unique set of opportunities, challenges and requirements. They set the context for evaluating potential solutions and finding the most efficient ones, thus laying the foundations for success.
Let's start with the obvious. If a business wants to make money, it must offer value, which comes from solving a specific problem. For example, Amazon solves the problem of long delivery times for online orders. Netflix solves the problem of investing a lot of time into getting a film to watch at home. Your grocery store around the corner solves the problem of making a longer trip to get a bottle of milk.
Similarly, software development in the commercial environment needs to offer value to the business. Which means it has to be focused on solving business problems. For example, let's say the developers come up with the idea, "Let's migrate everything to React". Maybe it is a valid initiative; who knows? Therefore, the natural reaction is to ask, "What problem are we trying to solve?". Understanding the problem opens the door for exploring more possible solutions matching the business needs and constraints. It allows for a meaningful discussion about cost and benefit. Most importantly, it leads to making an informed decision backed by rational reasons.
Solving a problem delivers value immediately. However, if the solution is not aligned with the long-term strategy, it can create technical debt and prove costly in the long run. That's why it is essential to know the roadmap and be constantly aware of the direction of travel. For example, if there are plans to offer the product in more than one language or white-label it at some point, maybe it makes sense to integrate with a CMS from the start instead of hardcoding content.
Of course, sometimes, the long-term vision is not clear. If that's the case, it is still the development team's responsibility to ensure the implemented solutions are modular and follow the principle of separation of concerns so that it is relatively easy to change direction and replace or modify parts of the system in a cost-efficient way.
It is not always possible to follow even the best plans to the letter. Circumstances change, and the business needs to adapt. Sometimes a great opportunity with a short window comes along, and the company needs to move fast. That usually means developing quickly without much room for implementing the best solution. Sometimes the business needs to pivot from the set course, which can invalidate previous assumptions.
Whenever that happens, the software incurs technical debt, which needs to be paid off at some point. As with any obligation, technical debt attracts interest, too. It can manifest in a slower delivery of new features, an increasing number of production incidents or decreasing retention of software engineers working on the product.
The technical debt does not appear on the balance sheet, and it is the development team's responsibility to manage it. The fact that the debt will be incurred must be acknowledged and communicated to the stakeholders. The plan for paying off the debt must also be formulated and communicated. That usually means designing the proper solution first and then the temporary one alongside a migration plan. That way, the interest can be managed, and the debt does not become hidden.
If all of that sounds like common sense, that's because it is. However, when the pressure is on, and emotions fly high, common sense often becomes the first victim. That's why pragmatism is our core principle - we always ask ourselves, "What is the pragmatic thing to do in this situation?"