A highlight of my second week as an Exterminator1 was thinking about my career goals for this year. I decided on two habits I want to establish that would improve my abilities the most, the ability to focus and attention to quality.
This is an annual activity and this time around I tried to approach it differently. While my usual goals are fun and challenging, they don’t go deep. Instead of thinking up a laundry list of things to learn or do, I wanted to build lasting habits that fundamentally change how I work. Throughout the process I tried to concentrate on why I wanted to improve and why these specific areas.
In order to stay accountable I decided to share the goals I set for myself.
Inspiration Behind My Goals
Last year I started reading Dan Blumenthal’s blog and found it to be a treasure trove for career advice. Dan has a very insightful series on mastery, which has inspired me to become better at my job. Here are the links to the series. Go read it. I’ll wait.
- How “Senior” Software Engineers are Different
- Anti-Mastery (a.k.a guaranteed ways to not be awesome)
- Mastering the Basics
- Intermediate Mastery
This series outlines many fundamental elements of being a developer. Many of these elements require lots of time and practice to learn. Others are habits or how you approach your work. Dan’s final post shares insights into what might be required to become a truly epic developer.
The ability to focus shows up on the Mastery list, and aspects of quality (or lack thereof) are on the Anti-Mastery list. After watching other developers I respect, I realized that they ooze both focus and quality every single day. I began to wonder what I could be capable of if I focused like they did and if I never created another bug again.
This series made me aspire to be one of those amazing developers. Reading about the many skills and attributes these legendary individuals possess helped me understand where I fall short and need to improve. I don’t know if I have what it takes to be at their level, but I want to try and get there. With my two goals this year, focus and quality, I believe I can dramatically improve and help close the gap.
Why do I want to improve my ability to focus? I believe if I worked with a higher degree of focus I would get more done, be more effective and learn faster. Two primary ways I want to build this habit is to focus on doing fewer activities at a time and eliminate distractions.
Work in progress is not done, and only when we are completely done are our results valuable for our clients. Building great software requires dedicated focus and attention, which is impossible if you are juggling many different tasks or projects. Delays between intermediate steps slow down work and result in getting less done. Conversely, eliminating delays and rework will increase what I am capable of accomplishing.
Being able to block out the world and focus on one thing is a skill. Continuously focusing on small tasks which add up to bigger features will become easier the more your try to do it. Since most development activities are the sum of many small parts, being able to focus and complete each part will result in working more effectively.
Improved focus will help me to deliver value to our clients. My definition for value includes helping others, sharing knowledge, or merging new code ready to be shipped. The bigger the positive impact and lower the risk for our clients, the better I am delivering value. Understanding the value being created, and concentrating on activities to maximize that value, will lead to better outcomes.
Doing fewer tasks at a time means I can pour all of my attention into a small area. The added concentration on small details will help me to understand the risks of changes I am making and produce better results with fewer defects.
There is another category of work competing for my time and energy: distractions. It is the little things like checking email or attending meetings. Few of these activities contribute to my work and rarely add value. While working in the office it can be great to rapidly collaborate with others, but can turn into a distraction if I am not careful. I believe reducing my distractions will make it easier to focus on my tasks and get more done.
Another benefit of intense focus is that I will be able to learn faster. I have tried to cultivate a wider range of skills normally peripheral to developing products. My opportunity with Exterminators allows me to hone my developer skills with an endless stream of small projects. Focusing on only one project at a time will let me learn as much as I can from each project before moving on to the next one.
How am I going make the ability to focus a lasting habit?
By doing fewer things at a time
- Understanding and reducing my work in progress
- Before July 1st, reading and applying the book Getting Things Done
- Completing small tasks immediately, not as an interruption
- Breaking up larger tasks into smaller tasks that provide value
- Doing one project at a time
- Spending less time performing status updates (email, task tracking, etc.)
- Checking email less often and disabling email alerts
- Attending fewer meetings and favouring collaborative sessions
- Working from home at least one day a week
Do fewer things at a time. Do each thing amazingly. Learn. Repeat.
Why do I want to improve the quality of my work? Do you like defects? I don’t. I like it when programs I am using work as designed. Every time programs behave badly I stop trusting them. I want to build products that users love and trust, are simple to support and can easily grow over time.
Our team has resolved to have zero defects. We will decide whether a new issue will be fixed immediately or not fixed at all. If we (the team and our clients) think a fix is required, we will fix it right away. Otherwise the issue will be left as is and we can continue focusing on more valuable features.
Prior to starting our zero-defect policy, we had a backlog of defects. This surprised me because I thought we were doing a great job and had excellent quality. Talking about our defects and problems encountered by our clients has made me realize I was wrong.
Looking more closely, we had many aspects of our product that were difficult for our clients to adopt or caused them to do more work. There were some issues that I didn’t think were a big deal, but meant a lot to them. By ignoring those issues, we were missing opportunities to work better with our clients and improve the entire system. We had tried to move too quickly and had caused defects. Ultimately, the defects slowed us down with extra maintenance.
Fewer defects, along with the trust gained from working together more effectively, would allow us to iterate faster and build the most optimal solution with less effort. Having less defects would mean spending more time on new features instead of revisiting old problems.
I want to help our team’s goal by personally producing fewer defects. I was directly responsible for defects and need to be part of the solution. Not understanding the risks involved with changes I made, or assuming our test suite would protect me, led to defects. Every change presents a risk, and making sure those risks are mitigated will help me build better products. Improving our test coverage and knowing more about the system will improve the quality of my work.
To make quality an intrinsic part of how I work, I have decided to adopt the following practices/guidelines:
- Include high-quality automated tests with all new development
- Increase automated testing for existing solutions
- More in-depth validation prior to pushing code
- Favour quality and understanding over speed
- More analysis of proposed work to identify how to ship smaller pieces
- Better collaboration with Testers and Product Owners throughout development/testing
Fewer defects. Lower Risk. Better Products.
There is no number three. I was asked several times whether I was going to include another goal, but I felt that anything else would detract from the original two. Having more goals would contradict my first goal and cause me to fail. Start small.
These goals complement and balance each other well. If I try to focus solely on productivity my quality will suffer, and if I am spending all my time on minute details I will not be getting enough done. On the other hand, improved focus will improve the quality of my work. I want to focus on what our clients value.
Making Myself Accountable
The trick with both my goals is following through. There is no secret formula. The next step is to live out these new habits. I want to be part of the minority who achieve their goals, unlike New Year’s resolutions.
I need help to keep these habits. The entire reason I decided to write them up and publicly share them was to keep me accountable. I don’t want to let you or myself down, so the only thing I can do is keep up these habits.
There is another way you can help me with my goals: ask me how they are coming along or tell me about your own goals. Talking about my goals reinforces why I am trying to do them. I am inspired by passionate people. If you are excited about what you are doing I would love to hear about it.
Please keep me accountable with sticking to my habits. I hope you have goals of your own and are able to follow through. I challenge you to tell others your goals and use them to keep you accountable. Good luck.
I would like to thank my lovely wife Angela for her help turning my collection of reflections into a cohesive blog post and helping me become a better writer. This week I learned that paragraphs of topic sentences don’t tell you anything at all. Just don’t do it.
1. I intended to post weekly during my time as an Exterminator. I have fallen behind in writing and publishing them. Life happens.
In spending more time on this post I have been able to reflect further on my goals, begin putting them into action and understand what I am learning. Being intentional about what I am learning while on Exterminators and reflecting on it has been valuable for me. The blog posts are taking longer than I would like, but are better as a result and I’m learning more from the writing process.
Thank you for your patience as I continue working through this pseudo-series. I hope you enjoy it as much as I do.