I am 41. I started developing software when I was 12 using a Sinclair ZX80. That means I have been developing software for … 29 years!! (Do I get an award of some kind when I get to 30?). I also was a very good developer – but you will just have to take me word for that as I pretty much suck these days :-) The reason “I suck” is for the the last 5 years I have developed relatively little code. Instead I perfected my white boarding skills as a Solutions Architect and my Excel skills as a programme manager. Things did change for the better about 12 months back when I switched roles in Microsoft UK and started doing more development again as a Developer Evangelist (The clue is in the title). BUT… I have still only written hundreds, not thousands of LOC (or better still 10s of thousands).
What I have learnt over the last 12 months is whilst I was off choosing between a red or green pen, the world of .NET development was changing. There are still lots of projects being worked on in a way I recognise from my development days but there is a small but growing number of developers and teams doing things very differently.
Over simplifying hugely, there are broadly two types of developers:
- Developers who only use technology, tools, approaches and guidance from Microsoft to build great Windows software.
- Most .NET developers fall into this category, myself included (Bear in mind – I am over simplifying hugely)
- A great example would be the take up of Object Relational Mapping by Windows developers is very low as many developers have waited (years!) for Microsoft to ship an ORM. This is in stark contrast to other parts of our industry – just look at the widespread acceptance of ORMs by Java developers.
- Developers who endeavour to use the best technology, tools, approaches and guidance no matter where they originate to build great Windows software.
- Some of this group of developers align themselves closely with a “movement” called Alt.NET. (For more on Alt.NET check out http://altnetpedia.com/)
- Some of this group don’t align with Alt.NET – but still are striving to continually improve how they build software. For example, check out Software Craftsmanship.
Which leads me to “Can you teach an old dog new tricks?” In this case Eric is “the dog” and none Microsoft technology, tools and approaches is “the new tricks”. In other words, I want to jump camp from the majority to the minority and see how it feels.
My plan is pretty simple – to have an ongoing background project to build “something” which as far as possible is “Microsoft free” but is still a great Windows application. Which would be fun in its own right but I also plan to share what I learnt in a “Hi, I’m new to this, but I think I just learnt why X is really helpful” sort of way.
Hopefully by the end I will also be able to say that I am a very good programmer again. Or maybe that is a stretch target and a simple “I don’t suck anymore” is more achievable.
The immediate next steps are:
- Identify the specific technologies, tools and approaches I want to explore
- IDEs, Testing Framework, Mocking, ORM, IOC Container, Continuous Integration Tool, Version Control etc
- Identify useful resources and forums to help me when I get stuck (which no doubt will happen a lot)
- Identify a fairly simple application to build – but something that can be used to explore the above
- Set up my development environment
- Build a “hello world” that touches as much of the dev environment as possible
- Start building the actual app
- Extend out what I’m doing in ways I can’t think of right now. Perhaps open source it, perhaps simulate large scale refactoring
- Importantly, constantly share what I find out.
Anyway – the above was the easy bit. The hard bit starts next.
P.S. NEric is naff name for this – but a handy tag for these series of posts :-)