Under the hood and working with .Net, TDD, Software Design, and Agile Stuff
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:
- programming.reddit.com & joel.reddit.com
- Raganwald
- Giles Bowkett
- Jay Fields
- Neal Ford

About Jeremy D. Miller
Jeremy began his IT career writing "Shadow IT" applications to automate his engineering documentation, then wandered into software development because it looked like more fun. Jeremy previously worked as a systems architect building mission critical supply chain software for a Fortune 100 company and learned agile development practices as a .Net consultant at ThoughtWorks, one of the pioneers of agile development. Jeremy is the author of the open source StructureMap (http://structuremap.sourceforge.net) tool for Dependency Injection with .Net and the forthcoming StoryTeller (http://storyteller.tigris.org) tool for supercharged FIT testing in .Net. Jeremy's thoughts on just about everything software related can be found on his weblog "The Shade Tree Developer" at http://codebetter.com/blogs/jeremy.miller, part of the popular CodeBetter site. Jeremy is a Microsoft MVP for C#.