Anyone else struggling with committing to code every day? There’s no time for anything. At least that’s how it feels, doesn’t it?
I’ve recently been implementing an X-Card strategy for writing.
The basic idea is that I try to write a specific number of words each day for seven weeks. Every day that I do, I write an X down on a notecard that I’ve created. Eventually, I’ll build a chain of X’s that will help keep me motivated to continue.
As a Software Developer, I would like to translate this strategy over to programming, which has been difficult for me to do in the past. I’ve been making excuses about how building a habit of daily coding is different than building a daily habit of writing.
I know that’s completely irrational, but I can’t be the only one going through something like this. I’m talking about coding as a part of a deliberate practice strategy, not just pressing widgets during a 9-to-5.
So I decided to do some research to help myself out. I think it can be helpful for you also.
What Deliberate Practice for Coding Might Look Like
Anders Ericsson, a psychology professor at Florida State University, coined the term “deliberate practice” to describe a special type of work. In a nice overview he posted on his web site, he summarizes deliberate practice as:
[A]ctivities designed, typically by a teacher, for the sole purpose of effectively improving specific aspects of an individual’s performance.
The good news is, unless you’re a professional athlete or musician, your peers are likely spending zero hours in deliberate practice.
There isn’t a perfect road map for programming mastery, but it’s still possible to have a general sense of which direction you should head in during your journey. You can’t follow someone's journey exactly because everyone is different and unique. Therefore, before going into when to code for people who don’t make excuses, I want to touch on the types of things these coding sessions might intell.
Here’s a quick list of deliberate practice coding sessions:
1: Coding Katas – A code kata is an exercise in programming which helps you hone a skill through practice and repetition. The term was made popular by Dave Thomas, co-author of the book The Pragmatic Programmer. Using the word “kata” is a nod to the Japanese concept of kata in martial arts. Though katas can be an effective form of practice, don’t fall into the trap of solving the same katas every single day. That’s not going to help you at all; instead, you need to continually increase the difficulty. More about that in this article on why some don't do code katas.
2: Pair Programming – They say that two heads are better than one. Pair programming is a technique where two programmers work together at one workstation. On person drives while the other reviews what they type. This is a great way to work on a problem while stretching boundaries.
3: Bug Fixing – Many different types of programming bugs can create errors within a system. The process of debugging can be very challenging, but overcoming those challenges normally leads to growth. Open source projects are a great place to find bugs to fix.
4: Code Reviews – Some say that a great way to learn more about programming is by reading code. I feel that code reviews help you do that, but in a more structured way, which is better for deliberate practice.
5: Implement A New Feature – This could be adding something to the code base of an employer, a personal project, or even an open source project. The key here is that the feature isn’t something you know how to add fully at the start.
6: Code Refactoring – Whether it’s code you’ve written or someone else's, a new refactor is a great way to solve a problem in a new way.
7: Writing Test – To write an effective test, you need to have a decent understanding of the application you’re testing, which can help improve your skills.
A Few Coding Session Options Outside of a Deliberate Practice Environment
Quick disclaimer. Most of what I talk about here isn’t going to be related to coding, but I’ve found that it can easily fit into these same session periods.
A great point that John Sonmez brings up in a video about deliberate practice is that there isn’t a way to fully master Software Development. The field is continually changing, so most of us will need to change also.
Another interesting thing John brings up is how the job of Software Development isn’t all about being a technical master. It might be good, then, to spend time working on other things besides deliberate practice of technical skills.
Let's call all these other things Side Projects. Side Projects can benefits your career as a Software Developer. They could even help you improve personally. In fact, Side Projects could eventually become your main projects.
For example, about four months ago, I started a podcast with my wife called the Stream Team Show. It’s a weekly pop-culture podcast covering what to stream on platforms like Netflix, Hulu and Spotify. It has nothing to do with Software Development at all. It’s clearly a Side Project.
Podcasting has helped me become a better speaker, and story teller. It’s definitely helped me present my ideas better. I’ve already been able to remove some audio ticks that I didn’t even know that I had until now. I’m sure that becoming a better communicator will help my career in the future.
Some Other Options for Your “Coding” Sessions
1: Teach Others Technical Skills – This can be over whatever medium you want: written, video, audio, via social media, in person, etc.
2: Start Your Own Side Project – Your first Side Project could be a mobile app, a video game, a new product, or anything really. Whatever it is, just make sure you finish it.
3: Build an Online Presence – An online presence can be one of the best ways to get new job opportunities coming to you, instead of having to hunt them down yourself.
4: Get Involved in an Online Community – Communities like the one here at Simple Programmer are a great way to meet peers and bounce ideas off of others.
5: Learn a Soft Skill – Yes, developers need soft skills too, and yes, there’s a book for that.
For more on how to pick your next Side Project, see this post on finding what to learn next.
Again, this is a personal journey, so some of this might work for you while others don’t. The key of deliberate practice is that you’re continually pushing yourself, doing more things that are just a little bit more out of reach.
It Boils Down to Excuses
So back to my original problem. Why was I not finding time to grow my skills as a Software Developer?
I decided to attack that question head-on and come up with seven ideas for when to code for people who don’t make excuses. Moving forward, I hope that we’ll all be able to become more committed to coding more often.
1: Before Work
Most of us have 9-to-5 jobs. A good option is to wake up a little bit earlier to get a coding session in. It’s definitely tough if you’re not a “morning person” (did you find the excuse?), but trust me, it will feel good to start your day by not making excuses and getting few lines of code in.
2: During Work
You could find a quiet place at work to quickly code for 15 minutes. If you work 200 days a year, that’s 50 hours. That’s a web application; that’s one level of a mobile game.
3: Right After Work
Trust me I get it; right after work the last thing you want to do is come home and start working again. Even if all you want to do is come home and start watching Mr. Robot, or start gaming… code instead. You know how important this can be and this shows it.
4: When All Your Friends Go out on Friday Night
This is a tough one. It’s tempting to want to put down your laptop, get changed, and rush out to meet everyone. But ask yourself, “What’s truly important to me? Getting drunk with my friends, or improving my craft?”
You might think that’s sad. You might be right. That’s commitment.
5: When That New Season Just Dropped on Netflix and You’ve Already Binged the First Five Episodes
It’s now 2 in the morning. Do you really need to watch the sixth episode? You should probably go to sleep, but I’m going to say you should be coding right now. But honestly, please try to get at least six hours of sleep each night.
6: You Can’t Sleep and It’s Late at Night
Sometimes you just can’t sleep at night. What a good time to get up and get a few more lines of code in.
7: When Something Is Not a Hell Yes
Something I heard from CD Baby founder Derek Sivers is, “If it’s not a hell yes, then it’s a no.”
It’s easy to get pulled into things that you don’t really want to do. This is a double negative because not only are you doing something you don’t want, but there’s also an opportunity cost.
I recently said no to joining an adult kickball league for a second season. Was it difficult? Yes, It’s hard to say no sometimes, but now I have time to code more which is something I really enjoy doing.
It Comes Down to Priorities
Excuses are just lies wrapped up more neatly in reasons. The real reason boils down to you choosing what is and is not a priority.
The things in your life that you make a priority are the things that you do not make excuses for anymore. If you want to improve your skills a software developer, then it will have to become a priority.
Coding is a commitment. If we don’t make time for it, chances are we won't do it.
Your coding sessions don’t need to take a lot of time. Even 25 minutes of experimentation every day adds up quickly.
If you enjoy the process of reaching the goal, the process will become a priority, and priorities get accomplished!