Friday, July 13, 2007

Things to do to become a better developer

I was listening to Scott Hanselman's 'Be a better developer in 6 months' and he made reference to a blog entry about becoming a better devloper: http://graysmatter.codivation.com/HowIAmBecomingABetterDeveloperPart1OfInfinity.aspx.

I began thinking of what I have done recently and what I want to do over the next few months to better my skills and overall approach to technology.

First, blogs. I read blogs daily and try to keep up with article/blog series on development, such as Jeremy Miller's Build your own Cab, where I learned more about coding approaches as well as seeing how different programmers do things that I've done before. Usually I like approaches that other's have taken and I adopt them over time. It's a lot like a code review, but instead of me correcting code its more about learning how and why the approach was taken.

Second, new technology. I try to keep up with Microsoft's pace to at least review the new technologies coming out. It is very difficult for me to fully grasp everything that comes out of MS, so I read up on as much as I can, but I do get my hands dirty with beta and ctp's of software that I think I'll use in the future. For example, at the time if this posting, I'm working with Beta1 of Visual Studio codename Orcas. I know I'll be using it, so I check it out with my side projects or just for fun. It's a good way to stay ahead of the game and it's nice to mix it up a bit with a new IDE or a new library to code against.

Third, books! I dont read as many programming books like I used to. I used to get 2-3 ASP books or C# books so that I could understand the language or environment that I was working with, but now I'm tending to choose books that are changing the way I think and giving me new perspectives, for example reading something like Pragmatic Programmer is language and platform agnostic, but a great programming book. I also like to read things that give me deeper insight to the platform, specifically .NET, such as CLR via C#. There are a ton of books that are great, and Scott Hanselman has a good list here: http://www.hanselman.com/blog/SixEssentialLanguageAgnosticProgrammingBooks.aspx.

Fourth, learn a new language. This is not so much learning another .NET language, rather learning a language that is completely different from your primary language. For example, if I were a completely C# guy and didn't know a thing about any other .NET languages, VB.NET would be good to know so I could read it, but not necessarily learning anything outside of new syntax for the same platform. I'm sure most people have already been aware of the Ruby or Python buzz. It wouldn't be a bad idea to learn something that is completely different than your used to. Every language has it's strenghts and weaknesses. Learning the strengths of other languages may teach you a thing or two about desgin as well as prepare you for future enhancements of your primary language. C# is adopting a lot of old ideas into the language that will be new to most .NET developers, but old to a lot of existing python/ruby devs.

And last but not least: code, code, code, code! Reading books, reading articles, reading blogs and watching movies for a year on how to fly an airplane does not mean you are able to jump in a plane and fly it at night through clouds! Without practice, we all only have is unverified knowledge. For example, Runbot is a robot that is learning to walk like humans. In this video, it tries to walk up a ramp knowing only what it knows about walking level terrain. As it tries, it falls and learns something new about its experience. As it tries over and over, it masters that ability. We as humans have superior ability to learn from our mistakes and learn from others' sucesses and failures. The only way we can make that into our own experience is to practice those skills. No amount of books, articles or books will replace actual experience.

I hope someone finds inspiration and feels challenged after reading this, becaus I know now that I have it up and shared, I will be challenged to become a better developer.
...read more!