We've always loved Software and its magical transformational power, and it has been a wonderful journey.
We started with Computer Engineering, building CAD tools for microelectronics, operating systems, and compilers. We expanded our focus to e-Business and saw its power, transforming how companies and people work. Distributed Systems and Machine Learning are now pervasive, and the power to innovate has reached unprecedented levels.
The Sympriser Blog is a collection of our reflections on software design, technical leadership and business innovation.
High-quality software designs are easier and safer to work with. Investing in quality demands discipline and skill. Good design principles are usually helpful. But are they always applicable?
This post investigates the applicability of the “Open-Closed Principle” when adding new functionality to a software design whose source code is entirely under our control.
Refactoring techniques and Design Patterns have been extensively propagated and advocated for over a decade now. Why we still find it hard to change, anaemic or overly complex object-oriented structures? What is missing in our design practices?
We posit that continuously refining the abstractions we build in our code is a necessary ingredient for effective refactoring.
In this series, we use Fowler’s didactic Video Store program to show how the focus on refining abstractions generates practical advanced refactoring strategies that improve design simplicity, expressiveness and flexibility beyond standard object-oriented practice.
“Experienced project managers can deal more effectively with complex software projects”. Really?
Intelligent dialogues require trustful relationships.
Effective collaboration between the IT function and other business functions can be a complex and difficult issue in many organisations. This often represents a critical credibility problem that must be addressed both by IT executives and IT professionals.
The language we use both reflects and influences our thinking.
The term “requirements” has its roots in cartesian and bureaucratic thinking, which supposes a static and impersonal business world where specialists would be able to uncover, extract and document the definitive specifications for software systems.