Alright, I call uncle. Justice tagged me way back on April 17, 2007. I emailed him back saying that my major plan for the summer was to spend more time with my family and overall, I’ve been successful at that. Seems that this answer wasn’t good enough for Justice and took me to task publicly. Look, bud, at least I had the guts to stand up on stage and make a fool of myself. BTW – I haven’t seen a whole lot of publicly-announced progress on that massive book list of yours, Justice!
So now that it’s July, I’m thinking about my professional goals for the remainder of the year… I’ve mentioned before the crazy pace of change in the Microsoft world these days. I’ve dabbled in a lot of different server technologies over the years – SharePoint, BizTalk, CMS, Reporting Services, etc. Looking back, what I’ve always loved is custom software development rather than server technologies. Working in code – not designers – and solving real problems. I love elegant software and design patterns. I love agile development and TDD. These are the things that get me out of bed in the morning. In my opinion, agile development techniques are on the cusp of making as big a splash as object-oriented programming did back in the 90s. So that is where I am focusing my energies over the next 6 months, likely much longer. Let’s take a look at my multifaceted approach…
Books
I’m a voracious reader and prefer books about concepts rather than how-to. Most of these books have to do with agile concepts and/or patterns. Let’s take a look at what I am currently reading:
- xUnit Test Patterns by Gerard Meszaros
- This book was just released and I’m already few chapters in. It contains great information on how to get the most value out of your test suite. This book was definitely written with a TDD mindset, but lots of great information on writing effective test code regardless of your development style. Recommended.
- Enterprise Integration Patterns by Gregor Hohpe and Bobby Woolf
- This book has been recommended by many colleagues and discusses why messaging systems are important in the enterprise. The book is technology agnostic. Many of the patterns are implemented or can be implemented by commercial EAI products, such as BizTalk, Tibco, and others. Even if you’re not using a commercial EAI product, understanding the patterns can help you build better integration solutions. Definitely an interesting read. As an aside, I had the pleasure of meeting Gregor Hohpe at the Global MVP Summit this year. You’ve never seen such a look of fear and confusion on a ‘softie’s face as when Gregor says, “Hi, my name is Gregor Hohpe. I am a MVP. I work for Google.”
- Windows Presentation Foundation Unleashed by Adam Nathan
- This is honestly a how-to book, but Adam goes into a lot of detail regarding the practical theory. WPF is such a different rendering model than GDI/GDI+ that it’s worth understanding how it works. I expect to see a lot of work around WPF in the next few years since WPF is the foundation for desktop apps going forward as well as Silverlight, Acropolis, and other technologies. The book is a fun read and recommended.
In the chute…
- Extreme Programming Explained by Kent Beck and Cynthia Andres
- I’ve read and talk a lot about Extreme Programming these days, but I want read the book that started it all. There are arguments whether the dogmatic 1st edition or the toned-down 2nd edition is better. I’m starting with the 2nd edition.
- The Pragmatic Programmer by Andrew Hunt and David Thomas
- Another classic recommended by a wide variety of people.
- User Stories Applied by Mike Cohn
- I’m well-versed in use cases. I want to see how user stories compare as they are getting a lot of press these days. I’m also interested in knowing more about techniques like story cards.
- Agile Estimating and Planning by Mike Cohn
- I consider myself a competent estimator and have taught teams how to estimate effectively. I’m interested to see what Mike has to say about the subject.
Technologies
- Dive deeper in Castle Windsor and maybe pick up a little Boo while I’m at it.
- Use MonoRail on a project.
- Learn more about Aspect-Oriented Programming (AOP).
- Although I’m tempted to spend the time learning LISP, F#, or Ruby, I think this is best left until early next year. This year is already busy without trying to learn two new programming languages. (Boo is my first choice, noted above.)
Speaking Engagements
My presentations in the coming months will focus on agile development and related techniques. Jean-Paul Boodhoo and I will be presenting at the Calgary .NET User Group on July 19 at noon on Simple Patterns for Simple Problems. I’m organizing a Western Canada User Group Tour through the MSDN Canada Speakers Bureau. I’ve got an outstanding invitation to speak in Toronto, which will likely happen sometime this fall. I’ll be up to Edmonton to harass Justice and give a talk at the Edmonton Code Camp (and likely the User Group too). I’m also looking into hitting the speaker circuit to talk at some combination of DevTeach, VSLive, and DevConnections. TechEd Barcelona is tempting, but November is already looking too busy.
Teaching
I love teaching. I love seeing the light go on in a student’s head when they “get it”. I truly believe that you cannot become a better developer if you don’t understand the fundamentals. So I am developing a course on object-oriented principles and patterns that I’ll be delivering this fall. Details will be forthcoming in the weeks ahead. Drop me a line if you (or someone you know) would be interested in attending. I’ll be rounding out the course line-up with additional agile-related courses in the future.
Projects
I have a number of pet projects that I would like to release in the coming months.
- VstsUnit Plugin for ReSharper – I am currently updating the plugin to support ReSharper 3.0.
- Project Perseus – Top secret project developed test-first. That’s all I’m going to say at the moment.
- Project Dex – Even more top secret than Project Perseus. I’ve revealed too much already…
Blogging and Casting
I definitely haven’t been blogging as much as I would like to. Blogging takes time. I am not the type of person who can whip off a post in 15 minutes. A good blogpost takes a few hours to write. I have also been meaning to do some screencasts. (I jettisoned my first screencast due to technical difficulties with the recording.) But I am hereby committing to a blogpost or screencast per week. I want to share my knowledge with the community and blogging, podcasting, and screencasting are all effective ways to do it.
Summary
So there you have it. Focus on agile. Engage with the community. Share knowledge. Have fun.
Tag, You’re It
I pass the gauntlet to: