Maybe you read my blog for some time. Maybe you just came over for the first visit to my blog. You might be browsing through some content. And there it comes, the inevitable question:
“What is this guy doing here?”
In my blog, I don’t make it easy for visitors to see the common theme of my blog: Software Analytics, Clean Code, Legacy Code, Agile – and then there is this philosophy thing about Epistemology and its influence on Software Development.
In this post, I want to reveal the mystery: These topics are all interconnected!
Let me start explaining at the beginning:
Back in 2006, I studied computer science and specialized in usability engineering, software architecture, and knowledge management. During my studies, I attended a course lectured by Prof. Dr. Alfred Holl, who did some “weird things” (as perceived at that time) with requirements engineering and Epistemology. It sounded somehow interesting, but I couldn’t do anything with the stuff I’ve learned there.
I also worked at a research institute as a working student at this time. We prototyped some demos for this Internet of Things thing but hadn’t any clue about a useful application for all those tiny little devices (I’m glad to hear that neither do the people in 2017 🙂 ). At this time, I got my hands on Robert Martin’s Clean Code book. I was fascinated by all those great tips he gave about programming in Germany. After working as a researcher for a while and having plenty of time to program some green field software based on Clean Code, professional software development looked like an easy thing to do. So I left the research institute and tried my luck at a real software company that worked “Agile” (“Scrum” they said…).
This was around 2011 and here I was: Doomed in Legacy Code hell. The back cover of the book Object-Oriented Reengineering Patterns resembled the software system I had to maintain:
The documentation is missing or obsolete, and the original developers have departed. Your team has limited understanding of the system, and unit tests are missing for many, if not all, of the components. When you fix a bug in one place, another bug pops up somewhere else in the system. Long rebuild times make any change difficult. All of these are signs of software that is close to the breaking point.
I survived because of this book and many others about refactoring (especially Martin Fowler’s Refactoring and Michael Feathers’ Working Effectively with Legacy Code). And it wasn’t that bad in the end. I did many (and sometimes clever) refactorings at that time and even got the chance to create my first refactoring improvement backlog. Here I identified and assessed problems in the software including an estimation of the costs of the problem as well as the economic impact of an improvement. I found that idea really powerful and wanted to learn more about economics in software development.
Luckily, I got the chance to go back to the same college to pursue my Master’s degree in Information Systems & Management. I wanted to learn everything about IT management, cost controlling and so forth to be able to get better arguments for gaining budgets for improving software. Deliberately, I also choose an advanced course by my former professor Dr. Alfred Holl. This time I got his message about Epistemology! It was the missing key for creating sound methodologies for improving knowledge-based work like software development. I even wrote a conference paper about how one can evaluate methodologies (in this case Extreme Programming aka Agile!) based on the epistemological dilemmas.
But I also found a new area of interest at this time: Business Intelligence and Data Science. The logical step was to write my Master’s thesis about identifying improvement opportunities in Legacy Code with the help of data analyses of software artifacts aka Software Analytics!
So here I am: Developing a new methodology for reproducible Software Analytics in an Agile way based on the foundation of Epistemology with the aim of improving Legacy Code towards more Cleaner Code.
Any questions left? 🙂
Image: Designed by Freepik
Yes, what do you think is the to you most important (research) problem in these areas? Putting it more bluntly: what do you want to tackle?
I enjoyed reading your personal history and about your motivations behind them.
Keep it up!
The most important research area can’t be found in the area of software development or computer science. It’s in the research field of cognitive psychology. We do know what doesn’t work but we do it nonetheless. This is often called “politics”. But in most cases, it’s just whitewashing for “being subjected to cognitive biases”. But this topic is currently (due to time constraints) out of the scope of my work here. If the research area should be located in computer science, I would ask something like “How much can computer science research help companies at creating software more smoothly?”
What I’m trying to do here is providing developers with the means to “hack the political games”. My attempt is to provide every software developer with the abilities to easily gather data (read: insights or facts) by analyzing their software ecosystem. The results should (among other things) support or disprove “blanket statements” (especially the one that have pure political backgrounds).
Pingback:Data Analysis in Software Development – feststelltaste