Formiculare

Focus

During the different stations of my career in software development, this young and not yet consolidated field of engineering, I saw many projects struggle to live up to their expectations. It is hard to combine solid and reliable solutions with the need to flexibility and extensibility. Contrary to other disciplines there are no norms in software engineering, good practices are born continuously and often in conflict with others. It is said, the number of developers doubles every five years, this means that 50% of all developers have less than five years of experience and 75% have less than ten. The field is very versatile, new programming languages are created every year, and a year without education leads to disconnection from the pulse of the industry.

Over this years one question became central: how to master the challenge to produce software that stays in order? A large part of the answer to this question is to return to well established practices in other engineering disciplines. This reaches from the most broad statements about design, like Saint-Exupery's … perfection is finally attained not when there is no longer anything to add, but when there is no longer anything to take away …; via best practices like managing abstractions and names; to domain specific norms. This practices can be summarized in the terms simplification, standardization, unification and abstraction. It is always a challenge to get young, motivated and frisky teams to buy into this values and practices. With a structured environment and the living of good practices it is possible to develop teams to true engineers who understand the long term impact and responsibility of their work. By establishing this practices it is possible to transform stalled project, that require uncalcuable

Techniques

This rich career path got me in touch with a variety of technologies. During my education I got in touch with C, C++ and LabView. At the beginning of my professional career, I was more focused on data analysis and data management and developed statistical tools and a simulation system for chemical reactions (MATLAB, R, Excel). During this time I set the foundation for a solid understanding of GNU/Linux, by using Ubuntu privately and for some of the professional projects.

Our first web development projects started parallel to my work at GE Jenbacher and were developed on a Debian Stack with HTML, CSS, JavaScript and MySQL. Soon we got into a series of projects that were based on Typo3, and the knowledge of the former Stack came in handy. During this time we also implemented two larger projects utilizing CodeIgniter and Laravel respectively. Later on we started to adopt Python for a variety of scripting tasks and for web development with Django and Flask. During all this time we used rented Debian servers that were fully managed by ourselves, so setting up the OS, user management, the web servers (Apache and later Nginx), databases and Git quickly became routine tasks. At the same time we also started a comprehensive documentation on Dokuwiki that did not only contain critical information about our projects but grew also into a considerable knowledge base for the Gnu/Linux commands we used regularly and a starting foundation for general educational IT and programming material.

After the takeover of the company, I started to focus on code quality and software architecture topics, where the books of Robert C. Martin, besides other books and countless video material from conferences, were a great inspiration. In a few smaller projects I was able to practice TDD.

At my current occupation as a senior back-end developer, I am able to extend my focus on software quality, testing and architecture as I initially planned.