Saturday, March 27, 2010

Be Good at Your Job

One of my favorite bits of advice anywhere is Chuck Jazdzewski's Fatherly Advice to New Programmers. Three of his points (Keep Learning, Learn to Communicate, and Own Up to Your Mistakes) I feel like I've never had a problem with, but the other three align really well with some of the goals I have for myself:
  • Be Predictable: Not much to say here - under-promsing, over-delivering, and delivering realistic estimates.
  • Never Let Bad Code Off Your Desk: This one, to me, is all about not being lazy. In a lot of my previous work, where I was the only person working on a well-defined portion of a project, the prevailing attitude was that there was no time for things like unit tests, and it was easier to just check in your work and find out if it broke things later. With this kind of attitude, not only are you robbing your team of time and quality, you are denying yourself the awesome feeling of "pride in craftsmanship."
  • Programming is Fun But Shipping is Your Job: I like this one so much that I set it in big 22 point font, printed it out and hung it over my desk where I can see it every day. The opportunities my role provides remind me frequently that I really do love learning about, designing and implementing software, but that can make it easy to forget that so many other things need to happen to make a project successful.
I've been trying to find ways to make some of the less-fun stuff easier to accomplish, less intimidating and more fun. One thing that helps me is to simply embrace that craftsman's pride that comes with knowing you've made something great that's not missing any parts: it has to be fast, understandable, simple, tested and well documented. Another is using a Hipster PDA to keep track of the million to-do items I have and help me focus on the one or two that need all of my attention at any given time. Finally, that "document strategy" I mentioned previously helps motivate me to write documentation without getting bogged down or intimidated by gigantic spec templates - when you make something interesting, spin up a new Word doc about it, write about how it works and why you made it, and share it!

No comments: