There have been a lot of developer-related “sharpening the saw” articles published and almost all of them speak to the technical aspect of becoming a better developer. A couple of popular ones (Hanselman, Atwood) have some suggestions like having technical brown-bags or reading programming blogs. These are wonderful suggestions for improving your technical abilities as a developer.
However, if you look at the actual description of “sharpening the saw,” originally from Steven Covey’s 7 Habits of Highly Effective People, it talks about having a “balanced program for self-renewal.” If all you do as a developer is focus on increasing your technical skills, you’re not really keeping in balance.
Perhaps it’s time to broaden your thoughts on what it means, as a developer, to “sharpen the saw.” What can you do to increase your skills/value that doesn’t involve technical abilities? Here are some ideas:
- Take a writing course. Your local higher-education facilities (and many correspondence schools) most likely offer courses in basic writing. Not writing code, just writing. Prose. Why is that important? Most likely you aren’t writing just code all day. Whether it’s email, design documentation, blog posts, or other communications, you’re writing. If you want to be sure to be understood and if you want your communications to come across in a reasonably professional and proficient fashion, you need to be able to write in a cohesive fashion with a minimal amount of grammatical problems. This is not to say you need to become a novelist or write for The New Yorker, but especially in this social networking day-and-age where spelling and grammar are pitched out the window in favor of shortcuts and 140-character limits, having a good set of solid, basic writing skills will help you long-term.
- Learn about UI design and user experience. It’s pretty well known that developers generally create some pretty horrible UI out of the box. It’s not because developers are incompetent, but because when they’re crafting that UI they’re not thinking about design principles or the user experience of the thing. Like UI is best left to “those folks on the other side of the office with those fancy turtlenecks and their copies of Photoshop.” Just as developers need to understand testing and not defer to QA, it’s valuable for developers to understand at least fundamental ideas of UI design and user experience. At the very least, this will allow you to take part in conversations about the UI in a more meaningful fashion and understand not just what you’re doing when the UX team asks you to fix something, but also why you’re doing it.
- Take a class on being a mentor. Hanselman mentions in his post that one idea to help sharpen technical skills is to create a mentorship program. That’s a really good idea. But do you know how to be a mentor? Do you need a mentor on how to be a mentor? What does “mentoring” even mean? If you have a mentor to help you learn new things, do you know how to be mentored? It sounds like it’s a simple thing, but think about it: Has someone ever asked you a question, and when you answered it you knew they didn’t understand the answer but you also didn’t know how to give them an answer they would understand? Learning how to answer questions (as a mentor) and learning how to ask the right questions (as a mentee) is huge. I’ve taken the Practical Leader class on peer mentoring and I honestly can’t recommend it enough. It’s one of the best courses I’ve ever taken and it totally changed the way I approach helping and teaching people.
- Improve your interpersonal communication skills. If you’ve worked in any sort of team, you’ll have run into a situation where there was a confrontation between two team members that probably could have been handled better. In coding, for example, sometimes ego gets in the way of what’s best for the code. Maybe someone on the team has a strong personality and you don’t know how to make suggestions to them. Maybe someone on the team has a milder personality and you don’t know how to coax their input/feedback from them when trying to make decisions. Whatever the case may be, strengthening your communications skills will help you work better in the team. One course I’ve taken and highly recommend is the Vital Smarts “Crucial Conversations” training. It’s one of those classes where, as you’re going through it, it feels like it’s revealing information to you that you already knew but didn’t consciously recognize. Suddenly, being conscious of it, you realize all the things you did wrong in previous poor interactions, how things could have been handled better… and how you’ll approach things next time you encounter the situation. Well worth the time.
Again, the idea here is that there are things other than technical skills that will help you sharpen your saw as a developer.
What do you do in a non-technical capacity to sharpen your saw?