At the Crossroads

512 days or 17 months or 1.5 years. That’s the time between todays post and my last one. Not as long as the Duke Nukem Forever development time, but it still strikes me how much time has gone by since I’ve written something down here.

Today is probably going to be a very personal post and for that matter also non-technical one.

So, what happened in those 512 days?

First of all, 512 days ago I deliberately stopped blogging. I had lost all fun in writing. It felt more than a burden than anything useful to me. Well I guess that had something to do with a slowly and painful kind of burnout I experienced during my time at a large German consultancy. It took me a while to realize what’s going on with me, but in the end, I think, I made the right decision leaving the contracting, ups sorry, I mean consulting business.

I’ve spend a lot of my free time in the last 2 years doing some form of community work. Not via blogging, but rather by

Besides I helped sucesfully delivering 3 large projects in the time. Two of them exceeded the customers expectations. One didn’t. Simply put, I will never do any form of TFS customization again, never ever.

In mid 2010, out of curiosity, I bought my first Apple computer, a MacBook Pro. I started to play around with it and actually liked it a lot. Guess what, I’m an IPhone and IPod owner, too. I’m not religious about Apple products, though. They work for me and excactly deliver what I expect and need from those devices.

Well, and after a while of using OSX, I began revisiting Ruby (after my initial steps in 2008) and picked up where I left the last time. I learned the basics of using VIM, Git and started to play around with Ruby on Rails and with Rails the whole topic of web development (after having left the topic in 2003).

Big changes are coming for me in 2012

As you might have noticed, I’ve revived my blog. The design and the technology chosen might give you an idea where this is all heading.

Next year I’m going to work in a new team, with non .NET technology, with a unix based OS as my primary development environment. I’m really exited to join XING as a developer working on their Ruby on Rails based platform.

Besides I’m planning to learn a new (non .NET) programming language next year, that currently feels completely alien to me, namely Clojure. If everything goes as planned we’re going to re-use the bookclub format we used in 2010 for the F# bookclub in Munich, though in a somewhat virtualized form, and try to get into the Joy of Clojure.

Last but not least, I’m not nuts and discard everything I learned during the last years.

I’m probably going to play with MonoDevelop and try to learn how to build iOS, Android and Cocoa apps using Mono. At least that’s the plan.

On leaving .NET

What does leaving acutally mean? Let’s break this down a bit:

  • Am I going to stop playing the active role for Machine.Fakes? Undecided, but probable since I won’t be using it on a day to day basis next year. I’ve ideas for re-using it under Mono, but I haven’t actually tried so far. We’ll see …

  • Do I stop being in touch with parts of the .NET community? Don’t be silly

  • Do I stop visiting .NET Open Spaces or UserGroups Well, that is at least not my plan.

What, no leaving .NET rant?

In the last 4 years of active community involvement I had the honour and pleasure to get to know a great bunch of .NET developers. Talented and gifted people, from all over Germany (and even outside Germany), each of them awesome in his own way.

Just to name a few @agross, @sforkmann, @ilkerde, @StefanLieser, @mikebild, @sshishkin, @lanwin, @cdeger, @oakinger, @jpboodhoo, @kostjaklein, @torstenweber, @gregyoung and a lot more. I could probably make the list a lot longer, but those are the people that managed to leave a lasting impact on me. Thank you all!

The German .NET community has changed tremendously (for the good) in the time I’ve been working with .NET, which is in great parts a result of the work of those people. Moving away from focus solely on tools crafted by you know who, to embrace and teach practices/principles of of professional software development, like SOLID, TDD/BDD/ATDD, Continuous Integration, Continuous Delivery, et al.

Microsoft (at least in my opinion) has also changed a lot (well at least in some areas, thank you ASP.NET team!). They’re hosting code at publicly available locations, they’re accepting patches from the outside and they actually listen carefully to community feedback. They still got a lot to improve, but hey, I wouldn’t believed you if you’d told me 4 years ago how parts of MS engage with the community today.

Why a technology change?

Change often implies frustration or dissatisfaction with something. I want this to be as clear as possible: Those are not my primary reasons.

I’m going to tell you a little secret right now, well sort of. Some of my older colleagues know this, some still don’t:

I never owned a computer before my 21st birthday. I didn’t even write a program till I was 22.

Let that sink in for a moment. Nevertheless, I somehow managed to leave every company I’ve worked for in the the last 10 years with the impression that I was one of the top software developers they ever worked with.

I often wondered how I managed to pull that off, but I guess it boils down to this: I really, really, really badly want to be good at what I’m doing (whatever that is) and am willing to work as hard as necessary in order to reach that goal. I’ve had my ups and downs with this strategy, but in the end it made me how I am and helped me to get where I am today.

I honestly believe that you can achieve much more than you might think (though some people prefer to tell you the opposite and are very resistant with that).

If you remain in your comfort zone you will not go any further

Catherine Pulsifer

If you’re passionate about what you do, if you put yourself in the mood that you basically know nothing and that you can learn (in one way or another) from nearly anybody around you, if you accept that you will fail in one way or another and failing is ok if and only if you learn from failure, and last but not least if you accept that for the most of us being good at something actually is the result of continuous learning, hard work, deliberate practice and experience (as opposed to talent only), than you define what’s possible for you and not somebody else. At least that’s my way of thinking …

I’d like to think about myself as a developer, not as a C# developer, not as a OO developer, not as an ASP.NET developer, nor Javascript developer for that matters. Developer, just developer. Building awesome products in teams is my passion, but not building awesome products with technlogy X,Y or Z. Languages, technlogies are part of my toolset, not something I’m married to till death tears us apart.

Is that all?

It’s no big secret that being an engaged person that likes to think outside the box and not limits his views to the Microsoft way of building software, can sometimes have a hard time in the Microsoft ecosystem (especially if you like to work with teams and don’t want to go down the independent consultant road).

It’s utterly frustrating to hear from Microsoft evangelists that you’re not part of the target group for their product (!!! Visual Studio !!!) if you ask for more extensibility and less re-implementations of existing open source solutions (No shit, that really happened to me 1 month ago and I still can’t believe they actually said that).

I like the .NET framework and I especially like C#, but I’m more and more frustrated with their sales driven approach to software development. The frustrating part is that in the end I can understand why they bundle/entangle their products from a sales perspective. It’s probably my fault for not realizing earlier that this somewhat clashes with the idea of continuous improvement.

I sometimes tend to think that a greater part of us (of the .NET community) would live a lot happier professional live outside the MS ecosystem and those of us that do manage to pull that off inside that MS ecosystem have build themselves a beautiful oasis in a vast and wide desert.

My current project team is an example of the latter, using a mix of techniques from Lean, ATDD , BDD, with feature branching and extensive code review sessions. And all that is possible without the TFS and without 80% of the features of Visual Studio. Who would have thought that …

However this team is breaking apart at the end of the year and I’m in the position to start something new next year. Trying to get a new .NET team to the same state (or above) was an option, but I decided against that. Instead I decided to venture into new territory, to extend my toolkit with a new language and a new platform.

Why Ruby?

I skate to where the puck is going to be, not where it has been

Wayne Gretzky

I really, really like the quote, I really do, but do I think Ruby is the next big thing?

Honestly, I don’t

I don’t say this in any negative way. At the end of the end of the day Ruby is just a tool (though awesome tool) that can be used, misused and abused for getting things done.

What I’m more interested in is the Ruby community itself or even more precise the state of engineering practices in the community. From the outside they look far ahead than the common denominator in the Microsoft world. Lots and lots of .NET OSS frameworks and tools have been influenced by the Ruby community in one way or another.

The Moslems have a proverb, to understand a man, you’ve got to walk a mile in his shoes, whether they fit or not.

Raymond Wiley Miller 1964

The Ruby community seems to be a great starting point for my venture. Lots of innovation going on, lots of passion involved, very OSS centered and goal orientated. However, I will never know for sure if those expectations hold up to the reality unless I work amongst them for a while.

So as you might have guessed, the focus of future posts will probably a lot less .NET centric …