David Ing's Weblog

My most recent weblog and probably the next one for the chop.


Time To Diversify

December 1st 2010

After many years I’ve decided to change nearly everything I do in terms of software development. This blog will be used to help me record that journey. Either that or I’ll fail quietly and remove all pointers to its existence – but let’s start positive and try not to spoil it all in the first paragraph.

/Skippable background… just imagine some wavy-line ‘going back to the past’ script.aculo.us animation here please, as it’s late already

I started out in around 1989 using HP-UX as my ‘work platform’ and being freshed-faced, annoying and reasonably clueless; as is the specialty of CompSci graduates throughout time. Given a small amount of dangerous knowledge I reeked havoc using my dual weapons of C and vi. After a few years, by more or less chance, I tripped over something new to me called Microsoft Windows. It had no credibility at the time but had the lofty aim of being ‘For Workgroups’ and even the LAN had it’s own Manager – it seemed legit albeit a bit ‘Noddy/Micky Mouse (delete where applicable). Everybody at work laughed at it and swizzled their long beards at its lack of more or less everything Unix had. OS/2 perhaps stood a better chance at that time, but having worked for IBM during college, I knew they alone had the sheer power of massive ineptitude to go ruin it and snatch failure from the jaws of PC victory.

At the time the hardware that we used to sell as part of the system’s my employer worked on was criminally expensive kit – huge cathode ray specialist monitors, expensive graphical workstations and luxury mice: We were at the time of the hardware being the majority of the cost of a bespoke system purchase, with the software carved out by spotty upstarts such as I on the cheap (I lied about the fresh faced earlier).

It seemed obvious to me then that I could champion the PC and Windows, I could push an agenda where the hardware vendor and those expensive custom equipment would be defeated by comparatively cheap beige boxes of PS/2’s, WM_ messages and tiny fishbowl-like monitors. I spent all my energy trying to convince people that Windows would be the future and we should move our products across. I tried to do good, for a good cause and make a lot of money – not necessarily in that order.

/End of long self-indulgent wordy retrospective

After about 20 years of that I sit here back at a Unix prompt (a very purpley looking one, but still) with no .NET, no Windows and no Visual Studio nearby.

Before I go on I should probably state that, tragically, this is no angry and bitter rant or rage against some corporate monster. It would probably be much more entertaining if it was. I still think .NET is a great piece of engineering, that C# is a good language and that the people I know from Microsoft are smart, courteous and relevant. There are also groups of very smart people pushing the better work and design ethos up that hill in that community and moving things ever forward. I very much enjoyed being a Microsoft Architect MVP for all those years. In summary, ‘It’s not you, it’s me’

The macro reasons for moving on to other platforms is in a constant quest to become a well-rounded ‘full stack’ developer. To be able to see the good and bad in different languages and platforms and use that experience to improve. There is so much good stuff out there that it would be criminally negligent of me not to go explore some of it while I have the opportunity.

I like to imagine that somewhere in Redmond there is a small office facing the rainy car park where a junior PM is tasked with recording reasons for people leaving the Microsoft development ecosystem. Here’s my thoughts for the benefit of that person:

  • The last bastion of ‘used in corporate development’ will crumble, it just takes longer. If .NET is what people do just to ‘get employment’ then eventually even ‘work’ will start not to use it. The long-standing prediction of the AlphaGeek is coming true. Where you ‘code for fun’ is ultimately where you’ll end up, and people who just do it for the money get left behind. ‘No-one gets fired for using X’ was meant as a derogatory comment the first time around.

  • The web is going to win. There will always be desktop apps, phone apps, console games and various specific scenarios. Win in those area’s all you want, but never deny that the choices today for web development are nothing like the choices we had 5 years a go. You could still make the best ever web platform in the history of software but that fact is the chances of consolidation like we saw in the Win32 days isn’t going to happen again. The choice geni is out of its browser bottle.

  • The Bazaar is more powerful than the Cathedral. I’ve been amazed, excited and humbled by the amount of goodness I’ve found on github recently. I’ve always known about sourceforge, the way linux came together and various on-line code sharing sites/methods but things are now reaching a crescendo. I spent about 5 months recently working with python, some with of it on Django and more recently in the last couple of months with Ruby and Ruby-on-Rails – this ability to read others code, reuse other gems and packages goes far beyond any work of art a single religion could build. It’s not the quality, it’s the quantity – the choice and pure Darwinism selection of what’s on offer is changing things in an important way. I’d like to be in that party, and not helping organize a similar one by watching what happens through the window.

  • License costs make no sense to me now. I try to run a business, I hope that business will be successful. If I can do what I want to do without paying for server software, for databases or for development environments as I grow then why would I? We’ve reached the level where the level of choice in so many different areas of software development and deployment have commoditized things. The distinguishing features that make one clearly better than another are not enough when arguing with the bottom-line of $0. License costs when put against the stark reality of rentable hardware in abstractions like dynos or VM’s just make it seem worse. There will always be a place for the buying and selling of software, but the underlying web platforms may not be it.

  • Innovation is random and unpredictable and everywhere. I think that Microsoft does innovate; I think things like monads in C# via LINQ, pushing MVC as part of ASP.NET and the adding of F# to visual studio are all great examples of this. Here’s the thing though, great ideas are happening everywhere and it makes no sense to look in just one silo or from one parent. There’s node.js, there’s jquery, there’s MongoDB, CouchDB, there’s Haml and Sass, there’s the elegance of reading RSpec and Shoulda and describing in Cucumber, there are DSLs for all manner of domains – I could go on and on and on. I want to learn everything. Now some of these new things will fail, some will be average ideas but not significant; but they are where smart people are all trying to improve how we write software. I would prefer to be an ordinary fish in a wonderful aquarium rather than an expensive old fish in the market. Microsoft does great things, but it’s become safe and dependable rather than exciting and risky.

As mentioned above, I’ve got some things I want to share about various things I’ve learnt on projects over the last 6 months or so using jscript, python and ruby but this isn’t the post for them. There are probably a few experienced Microsoft developers doing what I am am doing, and it would be good to share war stories.

While I’m sure I’ll be desperate someday with a ‘Will VB.NET For Food’ cardboard sign sat slumped outside an insurance company, today is not that day – this is my Adios .NET post.


blog comments powered by Disqus