Development for Developers
I got an email today from David, who says, “So, I am looking to see what I can do to develop my skills as a designer. The trouble that I have, is simple. Where does a programmer that is over 40 years old, with a good job, and a good family turn to to learn something like this?”
David, developing in any career means taking risks, trying new things, making mistakes. Some specific things you can do to improve your developer/designer skills include:
- Examine your goals. Do you want to be a better coder, a better designer, a better tester? What’s better to you? Fewer lines of code? More lines of code? Faster code? More readable code? More documentation of code/design? More thorough designs? More testable code? More unit tests? Set yourself a list of goals and examine it on a regular basis to keep yourself on track.
- Read some books and articles, like Writing Solid Code, and re-write some of your own code using the techniques you’ve read.
- Pick your favorite feature in your favorite application. Design it. Implement it.
- Read and review other peoples code to see what they do, especially in languages and task you’re unfamiliar with to get a different point of view.
- Pick a bug out of the bug database. Find the real cause. Find the implementation mistake that caused it. Find the design mistake that caused it. Change the implementation and/or design to find other similar bugs in your code base. Change the design/implementation to make similar bugs impossible in the future.
- Run a code review to get your peers’ feedback on your code.
- Get together with a group of developers at your job for weekly lunch lectures. Teaching someone is a great way to learn.
- Take the time to really do something “right.” You can’t always do this due to other real-world constraints, but if you never do it, you’re much less likely to get things right in the future.
- Take the time to follow your “fetishes.” I can’t tell you how often I’ve followed up on something that didn’t have anything to do with what I was doing, but I just couldn’t leave it alone, and then it dove-tailed with something else I needed to do almost immediately. Most of this web site is a result of following this advice.
- Attend a conference and ask a lot of questions. Really drill the speakers to make sure you “get it” (especially if it’s me : ).
- Write an article on something and send it around to your peers or put it up on the web. Writing about something is the only thing I can think of that’s better than teaching as a way for you to learn.
- Hang out on the mailing lists and news groups, but only answer questions you don’t know the answers to. Don’t worry about being wrong and thank everyone who shows you when you are.
- Write a hunk of freeware/shareware/open source software and put your software up on the web along with an installer and documentation. Maintain it.
- Find yourself a mentor. Ask lots of questions and get them to review your work. I’ve had a number of mentors of my own over the years (Mike Woodring, Paul Crutcher, Don Box, Tim Ewald, John Robbins) and it’s made a world of difference.
If you’d like some “hands on” guidance to improve your skills as a developer, I’m available as a mentor. I’ve mentored a number of folks over the years and they’ve had some nice things to say about the process. But don’t feel you need me to take advantage of these tips. Take risks, try new things, make mistakes.