Constantly be thinking, critiquing your work in real time. ~ The Pragmatic Programmer
A big part of my job is to turn a critical eye on the work of others: code review, job applications, and so on. My harshest criticism falls on the code I wrote years ago. I've been at Harvest longer than any other developer on the team. Few at Harvest get to live with their terrible five-year-old code like I get to live with it. Daily it is in my face. In the course of our days we all run into our prior code failures. The idea of turning a critical eye on myself even more frequently than I'm already forced to is daunting, but embracing this fact is probably for the best.
Self reflection helps you become a better programmer. Most programmers go through the process once per year. Hello annual review! I believe a habit of frequent reflection is a habit with compounding returns. Understanding your strengths and weaknesses will allow you to learn, adapt and grow at a rapid pace.
A weekly reflection on your work feels like a nice compromise between annual reflections and a daily journal. I did this for a couple of years during my Getting Things Done® phase. I think weekly reflections can be pretty effective, but they have two failings. First, I don't think a weekly reflection saves any time over a daily journal. A proper weekly reflection should take one or two hours. Second, I don't think a weekly reflection is habit forming. If you miss a single weekly reflection you've pretty much broken the habit. Trust me, the weight of doing a three-hour reflection about the past two weeks is too much to bear.
I've never made a fair attempt at a rigorous daily developer journal. If I try a true developer journal, I will go into it with a checklist of questions:
- What did you do today? (Be detailed.)
- What decisions did you make?
- How could these decisions backfire?
- Did you have any conflicts today?
- Did you enjoy the work you did?
- What can you do better tomorrow?
- What are you grateful for?
I often struggle with my memory. For whatever reason I find others more capable of retrieving experiences from months ago. Perhaps my brain is just built differently than most. Perhaps a daily journal is just what I need to better internalize the lessons learned from my daily successes and failures. Perhaps a daily journal will help me better collect and communicate my thoughts.
Perhaps I just need the courage to find out.