Let’s reduce technical dept today

What is technical dept? If we ask our friend Google he will tell us something from Wikipedia for example:

“Technicall dept, also known as design dept or code dept is a concept in the software development that describes the implied costs of additional rework caused by choosing an easy solution instead of using a better approach that would take longer.”

Ok, I think we’ve got the point. Doing things right from the beginning does effect the quality and the result for the customers. So why don’t we just do that in the real world? Think about your last three projects for a moment. This was just the thinking you and your team had when you started your work, wasn’t it? But what went wrong in the past? Ok there were some milestones your team was faced with and there were not enough time to solve the challenge with clean code, a good documentation and so on until the deadline. So you and your team took the easy, quick and dirty way to code the stuff really fast down. And it does what it was supposed to do. “We should fix this after the whole work is done…”. Ok, here is my question: have you done it till now? Of course not. Nothing will run longer in a company then the crazy stuff you code for an interim solution. But all yourself: isn’t it slow, faulty and bad documented? Yes it is.

There are different reasons, why technical dept is produced over the lifetime of your application. So let’s try to categorize them in smaller parts. The first categories of technical dept are reckless vs prudent and the second ones are deliberate vs inadvertent. If your team members are not very familiar with solving a problem by a special technique like a development pattern or special language characteristics like LINQ, lambda expressions and so on or if they have developed a bad design for the different layers of the application, all that will add more and more technical dept to your project. And it’s like financial dept. So your team has to pay off the dept at a time.

“Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly with a rewrite… The danger occurs when the debt is not repaid. Every minute spent on not-quite-right code counts as interest on that debt. Entire engineering organizations can be brought to a stand-still under the debt load of an unconsolidated implementation, object-oriented or otherwise.”

— Ward Cunningham, 1992

So what can you do to solve the problem of technical dept? 

  1. At first: slower is faster! Leave a buffer after creating something great and pay off your dept, before it is in production too long. 
  2. Use agile planning like the Scrum method. It can help you developing better, faster and very transparent with real-time feedback from and to your customers.
  3. Release often. Microsoft said 3 times a day must be possible for the whole deployment process. To do so, you have to automate a lot.
  4. Automation and working together with all teammembers like admins, testers and developers is the key of being successful.
  5. Don’t feel ashamed to ask for help if you don’t know how to do things right! And let your teammembers ask you to, because today you can’t know everything at any time.

This is a list that empowered me and my teams. This had been seen by some people and more I’m the deputy head of software devision in our data center. 😉

Have a nice day and let your team know about this post and my blog. Feel free to ask questions and I will response as fast as I can.

Build, ship, run with Docker

Did you realize that every time you need a webservice, a website or an application on your staging machines like dev, integration, test and production, your admin gives you a dedicated virtual machine? This machine has a seperate Windows or Linux installed, a configuration of the whole operating system and the application host like IIS or Apache or what else configured manually. Then there is the special configuration of your app and something more…

Ok, let us now say you will no longer need this dedicated machines. Instead you will have one machine on which the operating system runs and is configured one time and only your application and the app configuration is virtualized in a virtual container. This would be cool, wouldn’t it? And now let us say there is no more need of a webserver, because it is packed into this virtual container with all configurational files as well… Docker will do exactly this stuff for you. And trust me, it just works. Amazing, isn’t it? And the best thing: Docker runs on Linux and on Windows and is embedded in Windows Server 2016 by default. This fact will give you the choise of beeing very fast in your deployment process or do the dedicated stuff if you want to.

Hint: Microsofts Visual Studio 2017 can build Docker Container by default, if you want to.

If you have any question about Docker or the VS 2017 integration, please feel free to ask me down there in the comment section.


Experience with Scrum and Microsofts Team Foundation Server

I’m supporting many different agile Scrum teams with totally different requirements to the Scrum method. So as a Scrum Master I have to find a good way of using Scrum in perfection for the DevOps teams, the classic waterfall for the middle and top management and a Scrum flavored reporting for the customers with pie-charts. Damn, they love pie-charts…! That’s the reason why I like to use the Microsoft Team Foundation Server so much. You can do all your application lifecycle management (ALM) in there. Starting from requirements engineering, planning, tracking the work and states, source control management, building your apps on a build server, testing them and deploy/release your solution with an automated workflow. It’s easy to use like using Microsoft Office, after a short period of time. If you have any questions, feel free to contact me or leave me a comment down there. I’ll response soon.

A day with Microsofts Hololense

On February 20th I was in Frankfurt (Germany) at the Basta!Spring Conference and I had the great honor to test a hololence for several hours. If you have a chance to try one, then to it! For me it was a whole new experience of virtual and augmented reality. Microsoft calls this kind of virtual reality “mixed reality”. For good reason, because it is not comparable to classical approaches. Roman Schacherl and Daniel Sklenitzka from softaware gmbh also showed how you can develop for Hololens in C# and what challenges await us developers in this new three-dimensional world.

Great technology and great developer concepts are the reason why the Hololense will be more and more interesting for many companies in the next two years.

Since the topic is very extensive it would be great if you ask your questions about Hololense below in the comments. I will answer you as soon as possible.

What is DevOps?

DevOps (a clipped compound of “software DEVelopment” and “information technology OPerationS”) is a term used to refer to a set of practices that emphasize the collaboration and communication of both software developers and information technology (IT) professionals while automating the process of software delivery and infrastructure changes. It aims at establishing a culture and environment where building, testing, and releasing software can happen rapidly, frequently, and more reliably. DevOps4You will show you an easy way of using Microsofts Team Foundation Server (on premise) and Azure Visual Studio Team Services (cloud based) every day. With easy to understand how tos, stories and many more.

Be an MVP

Yesterday I realized that I have been writing software with and for Microsoft systems for more than 28 years. I help every day colleagues, friends and the community to solve their challenges and no one actually gets anything from it. Above all, not Microsoft. So I decided to use my technical help for the community to attract more attention and to confirm this from Microsoft. This is very important to me because I spent 2/3 of the time of my life helping people with Microsoft products. I have also made it my job, as a software developer, to work out solutions for all possible challenges. Therefore, I am currently employed in a local data center as deputy head of the software development division (E-Government Center). To acknowledge this many help from Microsoft, I am currently working on the MVP (Most Valuable Professional) award. This blog is supposed to help me. I hope you like it.