Now I have been working as a Software developer and architect for more than 10 years including 5 years using C# .NET.
The last few years I engaged in agile and Test-Driven-Development (TDD). I find it really fascinating what some smart developers came up with. These things were not around when I was at university or at least I wasn’t aware that they even exist. Some people might think those things are just hypes that simply vanish after a while to make way for some other new thing. I don’t think so. These smart developers embraced some problems in software development and found effective practices to solve these difficulties.
The customers want changes to the software all the time. So the smart developers invented agile. Gradually the code becomes worse and with that it becomes more difficult to change and extend. So they invented TDD. Of course agile and TDD do not solve all problems but they increased the quality of the work of us engineers and made us more professional.
Unfortunately it’s not that simple. Just because someone invents agile and TDD it doesn’t magically make the software engineers around the world write better code. The “new” techniques must be applied and practiced over and over. Some of the developers are told by their employer which new things are important and they are trained. The other developers have to find out themselves and learn on their own. At the end it doesn’t matter where your skills come from. It’s not your employers job to train you. You are responsible for your skills and your knowledge. You must make sure your skills are sharp and stay sharp.
What practices and techniques should we engage in? What is important? What is just a short hype bubble? What is professionalism? What is good quality? What is good architecture? What are the fundamentals? These type of questions are the point of this blog. I’d like to share my view of what I think is important and what I’m currently working on. I’m looking for your comments.
Hans Ulrich Wyss