I had planned to write this blog at the very start of the year, but having only just started a new job at the end of last year, which would finally give me the opportunity to work in an agile environment where I can practice TDD and BDD, apply design patterns and SOLID principles and refactor code, I wasn't certain what I wanted or needed to focus on for the year ahead.
However, nearly a month into the year, I fell down the stairs and find myself instructed not to move with my leg elevated, finally giving me the time to clarify my plans and goals. The first of which is to be more careful around stairs!
My goals for last year were to understand design patterns, refactoring and clean code practices. I also learned MVC and a few other technologies along the way, but not having much opportunity to put these in practice became increasingly frustrating so I focused on practicing what I had learned and seeking a company where I could apply my new knowledge and learn more, which I believe I have found that at 7Digital :)
So my todo list for 2010 is...
Learn another language
I don't believe that I have completely mastered C#, on the contrary, the language is still evolving with a new version scheduled for release in April with VS2010, but I believe delving into different types of languages, which I haven't really spent much time on since university, is beneficial in understanding what language is suitable for which problem domain. Therefore this year I want to have an understanding of at least one dynamic language such as Ruby and a functional language like F#. I'd also quite like to get an understanding of DSL's and where they are used.
Become more proficient at refactoring
I am finally in a position/company where refactoring is actively encouraged and the 'boy (girl) scout rule' is expected. This will give me the opportunity to understand and improve my refactoring skills everyday and put into practice the knowledge I have learned.
Learn to apply design patterns
I spent a lot of my spare time last year learning Design Patterns and SOLID principles and I want to discern how to effectively use these in my code - apply the theory! The people I am now working with posses extensive experience in this area which I intend to learn from.
Learn more testing frameworks
The benefits of TDD and unit testing are well known. I am now using NUnit at work but there is still so much more I want to get my teeth into, like BDD and specifically Cucumber and WatiN.
Read the following:
This list of technical/best practices books has been collated after various recommendations from people in the development community. Obviously this isn't an exhaustive list and I'd be happy to hear any other recommendations:
- Working Effectively with Legacy Code - After sinking my teeth into Head First Design Patterns and Clean Code I've been advised that this will build on my learning so far.
- Pragmatic Programmer - always quoted and highly recommended so it's about time I read it.
- Domain Driven Design - This seemed to come up in conversation regularly last year and I'm really keen to know what all the fuss is about.
- Agile Principles, Patterns and Practices in C# - I believe this is very similar to the Clean Code book but with examples in C# so I'm keen to read this too.
I meet lots of interesting people, regularly attend varied technical events and read/code all the time so I'm determined to blog about anything I find interesting.
Attend more varied events
I already attend many events but would like to increase the scope of these and move from just .net specific to otherlanguages, frameworks, patterns and practices.
Give something back
I've gained so much from the development community in the last few years and would like to give something back this year. I don't think I'm expert enough to become a speaker on development specifically but I could use the knowledge I have gained to add something to the community which it is serverly lacking...more women! I plan to be more actively involved in getting women into technology and find it a breath of fresh air to be in a development department with not one, but two other females :)