After the last post, I thought it might be worth talking about the things that have already led to me becoming a better developer.
- Converse – That’s it. As often as possible, talk about developing software development with other developers. Cultivate personal relationships. Talk to people that disagree with you. Talk to the more experienced guys. Talk to folks with different experiences. Go to user groups, especially the kind of user groups where the conversations are free flowing. I’ve never been that big of a fan of the “Presentation o’ the Month” meetings, but I’ve gotten a lot out of lunchtime and happy hour type groups with no set agenda.
- Environment – I’ve met several developers that I thought had all of the makings of greatness, but just hadn’t had the opportunity to work in a good environment. By a good environment I mean a place where you’re surrounded by good developers who are willing and able to share their knowledge. If you’re a junior developer your career path can be greatly shortened by solid mentoring relationships. If you’re a solid developer you can only get better by being intellectually challenged and stimulated by your peers. My first real development job was in a truly awful shop. I had a few relationships that I treasured (the brotherhood of the smoked chicken enchiladas), but it was obviously a place with limited possibilities. I made the personally risky move to an elite consultancy where I interacted every single day with great developers. It wasn’t a great move on the personal and family front, but it supercharged my career growth.
- Do an OSS Project – Your job is probably boring, and quite possibly not that interesting. You’re never on a project that gives you every possible kind of experience. That’s where participating in an OSS project becomes so beneficial. I’ve used StructureMap for years as a personal laboratory, and looking through the code I can trace my personal development from VB guy to what I am now. Preferably, pick something interesting that you’ll enjoy. Something that forces you to expand your skills or let’s you try out new design ideas — where they won’t damage a real project.
- Write a blog – I’ve told my wife several times that writing The Shade Tree Developer is the single smartest thing I’ve ever done for my career. A lot of the posts I’ve written have turned into book reports or research projects. Writing blog posts, especially argumentative blog posts, is a fantastic way to organize the thoughts in your mind. Nothing makes you think more than the simple act of expressing yourself – especially when there’s a couple thousand people reading what you write. Oh yeah, you might get some attention and name recognition out of it too.
- Read a lot – There’s a tremendous amount of stuff out there in the blogosphere. Take advantage of it.
- Expand your reading – Your OPML file is one of your best intellectual tools, but make sure there’s some balance in your RSS feed diet. My OPML file still leans too heavily to Agile-flavored writers, but I’ve expanded my reading intake quite a bit to include developers, testers, and project managers from outside of the .Net community to see how the rest of the world is doing things. Just to get you started, and feel free to write in suggestions, break out of the .Net mold with: