In the IT-business, especially the software development, almost daily new tools and methods, programming languages and paradigms are cropping up. Sooner or later, most of them sink into insignificance. Others are initiating real hypes, which sometimes last a little longer and sometimes vanish like falling stars. Only very few have a noticeable impact on the software technology, and eventually become a widely accepted innovation or even an industry standard.
In our opinion, the art of enduring software development largely depends on the ability to recognize important trends early, to thoroughly invest in skills therein, and not to dissipate one’s energies in contemporary phenomenons. In order to judge this, first you need experience!
The Complexity Trap
If something goes wrong within a project, a common excuse is its outstanding complexity. Although this sounds intellectually satisfactory, in fact, it means a serious lack of knowledge.
That happens quicker than one might think: introducing a little abstraction layer here, integrating a hot framework there, using one or another shiny super tool, clicking around without really knowing what’s going on behind the scenes and — oops — you’ll find yourself caught in the complexity trap.
Whereas, abstraction by itself isn’t a bad thing at all. The opposite is true! Abstraction helps to work out the essentials and to improve comprehension, which in turn, will have a positive impact on the quality in general — provided that the abstraction is fully understood!
That’s why we concentrate on few, but powerful and long-lasting technologies. We improve them whenever necessary and don’t join the buzzword race.
Believe it or not
One could think, software technology is an objective discipline. At least, ones and zeros leave no room for interpretation. But far from that!
The everlasting struggle for the silver bullet to accomplish a project successfully, strictly divides the software community into two distinct parties of faith. Some say, software can be constructed like a bridge or a car by specifying each and every detail in advance, and then control the project’s progression by well-known bureaucratic means and methods. Others say, software is nothing else but executable knowledge and as everybody knows, you cannot construct knowledge. You have to acquire it by hard work during a creative process.
We frankly admit, that we believe in the latter. However, you cannot prove your faith. So we better let our actions speak.
Agility for Success
We prefer the so-called agile development methods. Agile methods are more flexible and adaptive compared to traditional approaches. In our projects we regularly discover a lot of new ideas, experiences, business rules and inspirations on how to improve things in a way that nobody has ever thought of before. New requirements arise that were impossible to know in advance when the project was started.
Of course, we also define our customers’ goals, but we always keep an eye on the development process as a whole to incorporate new and/or changed ideas rapidly.
However, this requires something to talk about in order to verify it against the requirements. Corrections need to be applied as soon as possible, and not at the end of the project, when it is far too late and unnecessarily expensive. Only an iterative process of specification, design, implementation and testing with short roundtrips from the very beginning guarantees that we don’t end up with a software that might satisfy some outdated requirements, but fails when being applied to the real world. To speed up this highly creative and agile process, we developed the application framework Tentackle and the code generator Wurbelizer. Agile development at its best!