Reflections of a coder, coding, devops, unit testing, Typemock Interview

Some of the Best Programmers are Self-taught Programmers

Tell us a little bit about yourself.

I’ve started programming when I was 7 and still love it. I live in the Netherlands with my wife Elise. I work as a consultant focused on Microsoft technology, wrote a couple of books and I speak regularly at all kinds of conferences. My main focus is on DevOps and ALM on which I’m a Microsoft MVP. I’m an enthusiastic amateur cook, like to play some chess and love to read.

How did you get started in programming?

When I was 6 my dad brought home our first computer. It was a 286 laptop with a 20mb hard disk, monochrome screen and the size of a small suitcase. At first I was just playing around with it but my brother who is a couple of years older than me started doing some programming and showed me some stuff. This quickly got me interested and I started with Quick Basic as my first language. I can still remember building a program that helped you practice the multiplication tables. Since I didn’t know what a variable was I hard coded all the answers from 1 * 1 to 10 * 10. But despite the terrible code quality it was still used at my elementary school.

What are some of the languages you use today and why?

My favorite language is C#. I really like what I can do with it while not having to worry about small details like when using C++. For frontend development I mostly use TypeScript. I like the type checking it adds on JavaScript.

What type of applications do you develop?

As a consultant, I work I with a lot of customers and all types of applications. Most of the time these are web applications build on ASP.NET. I help customers add DevOps practices to their applications ranging from unit tests to CI/CD, automated testing and monitoring.

What’s your biggest passion these days related to programming?

Architecting the application in such a way that a company can practice true continuous delivery.

What still sucks and shouldn’t be in programming?

Manual deployments. As developers, we are trained to automate everything we do but somehow we find it perfectly normal to have a manual deployment process. We need to professionalize the way we work.

What are some of the most important skills developers can have?

The willingness to learn and innovate. I don’t care what you know, I care about what you can learn and how fast you can do that. The industry is changing so fast that you need to keep up. Take charge of your own career, don’t wait for your boss to buy a book for you or send you on a training.

Do you unit test and how did you get started?

Yes! I can still remember one of the first projects where I practiced unit testing and came up with some elaborate architecture where the unit tests would run in memory on my local development pc and then ran as integration tests on the build server. This failed dramatically but I did learn a lot from it. The book that opened my eyes was xUnit Test Patterns. I recognized all the problems that the book described and suddenly had the solutions.

Do you have tips for readers who are just starting out with unit testing?

Really understand what a unit test is. Don’t start writing unit tests that use your database, file system, web services and then stop with unit testing because they are to slow and aren’t worth the effort.

How do you convince your manager to write more unit tests or practice TDD?

As a programmer, I think that good code is like art. I love to write good code. Unit tests and TDD are paramount for writing good quality code. My manager hired me to write good code. How I do that is my business so I don’t ask for permission to write unit tests or practice TDD. I just do it.

Any tips on making managers understand the importance of Unit Testing?

Don’t ask for permission. Just do it and function as a role model. Your manager cares about the end result. Becoming a high functioning DevOps team requires unit tests. Your manager will start noticing that your code is good and your deployments become more easy. That could be a good time to explain your testing strategy but depending on how technical your manager is you will probably never have to mention it.

Do you practice TDD and if so, what are some of your favorite code katas?

Yes! Not always but when building a difficult piece of code I always use TDD. I like the bowling game kata.

What are some of your must-have tools or libraries that you use in your daily working life?

Visual Studio Code! I use it as a replacement for Notepad and for most of my development work.

When it comes to DevOps I love Visual Studio Team Services. I think it’s a great service that does everything I need to help teams be successful at DevOps.

What inspires you in the technical world?

Learning new stuff and sharing it with others.

When you need a quick recess at work to regain focus, what do you do?

Reading a non-technical book (I love thrillers!), watch some Netflix or go for a walk.

What’s your horror/war story from the coding trenches?

I once joined a project where the team wasn’t using version control. Instead they had a network share where they just copied their changes to. So I wondered how they made sure that they didn’t overwrite each other’s changes. The answer was simple and terrifying: each team member had it’s own file where they did all their coding in. Those files where thousands and thousands of lines….

What’s the best advice you’ve ever received or what advice would you give your younger self? 

Choose something you love and specialize in it. IT is broad and trying to keep up with everything is impossible and will hurt your health and career. Try to have a broad view of what’s happening in the industry and pick an area you love and become really good at it.

What are some interesting links you can share about yourself? 

You can find me on Twitter and on my blog. Also have a look at my latest book DevOps on the Microsoft stack.

What is one question that we should have asked, and we didn’t and what would be the answer?

Did you go to college or university or some other formal education?

No! I learned programming from reading lots of books and was fortunate enough to get a side job when I was 16. After that things just went really fast and now after 16 more years, I still haven’t had the time to go back to school. I think our industry is unique in that self-taught programmers can become the best programmers there are.