What I am doing to become a better developer
Oren has tagged me to answer the question in the headline. I guess the simple answer would be "Code a lot", since I really feel that's the only way one can become a significantly better developer.
The more complex answer consists with subjects I don't know (or don't have much experience with) that I would like to learn. It wasn't easy coming up with this list, mainly because there I so many things I would like to learn, and I had to focus myself on the subjects that I feel that I will actually get to in the next 6 months. I feel that I have a lot of catching up to do in existing areas and technologies, but there are so many new cool technologies right now, so that I can't really stop myself from digging into some of them.
Things I should do
- Code more. As my team's lead I really don't get to do as much coding as I would like. Management takes most of my time. Lately I have adopted a method in which I stay later everyday in order to get at least one hour of coding before I go home. I also code at home, mainly on weekends. I try to always have at least one pet project to work on at home.
- Be the teacher. I spend a great deal of my time teaching and guiding the programmers in my team, and I'm loving it. Whether it's in a code/design review, or when sitting with them to solve a problem, I think that teaching is my most important job. After all, you're only as good a developer as your team is.
- Agile methodologies. I want my team to become more efficient and more productive. Right now I feel that we have a long way to go, and adopting an agile methodology (such as Scrum) is one of my main targets for the near future.
- Blog more. I promised myself to write at least one post every week, but lately I haven't really kept that promise. I definitely think that writing makes you better as a developer. Simply because when you're blogging, you know you can't bullshit anyone. You have to be sure of your facts and fully understand the subject you're writing about. Also, knowing how to express one's self in writing is an important virtue for any developer (especially if you're a part of team).
- Learn more about GIS. GIS is a main issue for my team, and I really feel I don't know enough about it. The ESRI tools we're using don't really make it easy for you to learn. The documentation is usually lacking (not to mention being able to find a decent book), the APIs are non-intuitive, and you'll be hard-pressed to be able to study at home. Anyone can practice C# with free tools like Visual Studio Express or SharpDevelop, but I'm afraid there's no free version of ArcGIS Server ADF or ArcSDE that I know about. The result of all this is that it is a lot harder to become a GIS professional than a .NET professional - we'll just have to keep taking small steps towards that goal.
Things I want to do
- WPF - This has absolutely nothing to do with my work (we do ASP.NET applications), but that's what make studying it so much fun. I'm deep into the WPF Unleashed book, and I'm telling you - the WPF team should teach classes in writing APIs (well, I guess they already do). You can get so many ideas you can use anywhere, just by learning WPF.
- TDD - Well, that's how I'm coding right now, using VSTS and Rhino-mocks. Still a long way to go, though.
- DDD, OR/M, IoC - I did a little project using the Castle offerings and Ayende's Rhino.Common library, and got hooked on these three design methodologies/patterns. Domain Driven Design and a book about NHibernate are in my reading list for this year.
- VS 2008 Stuff. Well, C# 3.0 and Linq are way too exciting to put aside.
Things I won't do
Well, I guess you can take everything I wrote in the "should" part and reverse it (won't stop coding, teaching or blogging). I will also not stop reading fiction ("Harry Potter books", as Shani would call them). I think that reading something that is not related to programming can gain you a bit of perspective. Also, I'm not ashamed to admit that I rather like the Harry Potter series, so Deathly Hollows will probably take precedence over WPF Unleashed in the next week :)