The new year has just started and it's time for me to share my professional life resolutions for the upcoming year.
Through books, articles, blogs, podcasts, one hears about that language, or that technology, or that process which would be great to try and learn. Unfortunately, since the spare time is not infinite, one has to make choices and concentrate on what might give the best return on investment in the short/medium term. The following are the two or three things which I have chosen to dive in this year:
Read the Blue Book
Domain-Driven Design by Eric Evans is one of the best book that I have come across on software design in a while. Not always an easy read (some say it'is "dense"), I am going through it slower than usual: every chapter is full of sound advices and deep concepts that take a while to sink in.
Luckily in my current project I will have the opportunity to apply many concepts from this approach. For this reason alone, this makes to the top of my list for 2010.
2009 has been for me the year of C#. The Pragmatic Programmer suggests to both to learn a new language every year and getting familiar with one scripting language. Most experts seem to agree that learning a language with a different paradigm from the one you use everyday is a big plus. Martin Fowler (who favors Ruby) states that:
[...] programming languages do affect the way you think about programming, and learning new languages can do a lot to help you think about solving problems in different ways. (It's important to learn languages that are quite different in order to get the benefit of this. Java and C# are too similar to count.)
I am not expecting to become proficient with Ruby in the near future (after all, I will still be using C# in my every-day at work). However from what I have seen so far it really looks like a great language to learn, so I am looking forward to it.
Play with Subversion
In my previous job at Motorola I was developing in a mixed Unix and Windows environment; Rational Clearcase Multisite was the company-wide version control tool. Clearcase is a real heavy weight, and probably one of the few tools that can handle teams of hundreds of developers located anywhere word-wide.
When I landed my current job I had to switch to the much more limited (and widely hated) Microsoft Source Safe (hey… always better than no version control at all, right?) Luckily, rumors has it that we might soon migrate to Subversion. Subversion is widely used in the open source community and I guess I’ll need it once I start playing with Ruby and downloading libraries etc…
Other Books to Read
Beside the blue book, there are a few other books that I plan to complete reading this year. I have already started Clean Code and Pragmatic Thinking and Learning. Next on my list is Working Effectively With Legacy Code and Agile Estimating and Planning. I promised myself not to buy any more book before I clean my current queue!
Stuff Left for 2011
As I mentioned, there are so many other things I would love to investigate and play with, but there is only so much time available, considering that 2010 will bring in .Net4.0 and C#4.0 that will surely be a priority.
Therefore, the following I guess will have to wait till 2011:
- Learning a functional programming language (possibly Haskell or F#)
- Getting familiar Domain Specific Languages (Martin Fowler is preparing a book on the topic)
- Play with Android and/or iPhone development
- The Next Big Thing from 2010!