Complexity is your enemy. Any fool can make something complicated. It is hard to make something simple.
– Richard Branson
…It has been said over and over again that the tremendous cost of programming is caused by the fact that it is done by cheap labor, which makes it very expensive, and secondly that people rush into coding.
– Edsger W. Dijkstra
We don’t believe in the concept of an “average” or “junior” software engineer. Regardless of the years of experience, in addition to the mandatory high intelligence, a good software engineer possesses a rare talent to compartmentalize and model any complex task as a set of simple and manageable individual concepts.
Building complex and hard-to-understand designs is not what we call good software engineering. Writing large amounts of sloppy hard-to-follow code – in a hope that one day that code might actually work – is not our idea of programming.
We strive to build software in a way that allows it to always remain in a stable and manageable condition. Each individual module we implement – however small – may be replaced or modified with no or minimum effect on the rest of the system. We believe that it is the only reliable way to build software quickly and keep it easily adoptable to the blurry and ever-changing business requirements of the Real World. We know it works – because we successfully do it every time!
In our approach to software design and programming we follow the philosophy of one Great Scientist we admire – Dr. Edsger W. Dijkstra. Dijkstra’s uncompromising views on correctness and intellectual manageability of software often provoked demagogues of all sorts to take out of context and trivialize his messages – only to justify the bad and sloppy ways software is usually written. Such people tend to ignore the very precise definition of elegance and simplicity the scientist had referred to. Those who love to disagree with Dijkstra claim that no real-world program may be done “right” the first time around – even if only due to the fact that the requirements always change. That is an unfair, and even dishonest, statement. By “done right the first time around” Dijkstra most certainly means that from the start programming should be a conscious effort to produce a defect-free program that correctly implements the requirements at hand. At any stage, the program should be intelligently organized in the way that is easy to understand. Dijkstra’s opponents ignore the point he had always been making about the necessity to abstract complexity on any level – so that any changes that would ever have to be made to the programs would always be localized and, therefore, make such programs adoptable to the changing requirements without their correctness being compromised. Another false argument against Dijkstra’s concepts is that writing such programs in the real world would be too costly and time-consuming, and businesses simply don’t have time to build “perfect” software. We have proven to ourselves and our customers many times: writing software in the way suggested by Dijkstra is not only possible but, most importantly, it is the fastest way to deliver to Production! In fact, that is the real agile way to build software – by creating rock-solid, stable units of abstractions – in small quick iterations. Every such unit is a simple and intellectually manageable piece. Unfortunately, not every programmer or architect is capable of following that approach. That’s the real problem, and we are here to help you solve it…
Please take a few minutes to watch this fascinating documentary – the interview with the legendary Edsger Dijkstra whom many consider the “Father of Computing Science.” The documentary was made for the Dutch television in 2000 – less than two years before Dijkstra’s death of cancer in 2002.
In another interview given around the same time Dijkstra shares the story of his famous Shortest Path Algorithm – invented in 20 minutes, without a pen and paper!
Here’s another great talk on the Power of Simplicity by Alan kay: