30 minutes every day for your craft: Committing code to GitHub for 365 consecutive days
“We are what we repeatedly do. Excellence, then, is not an act, but a habit.” (Will Durant)
Last year I decided to establish a new habit: Dedicate at least 30 minutes every day to code in my spare time. I wanted to take time out of my schedule to practice every day. I got the idea while reading Uncle Bob’s attitude towards work ethic as a software developer in his Clean Coder book:
“Professionals practice. True professionals work hard to keep their skills sharp and ready. It is not enough to simply do your daily job and call that practice. Doing your daily job is performance, not practice. Practice is when you specifically exercise your skills outside of the performance of your job for the sole purpose of refining and enhancing those skills.” (The Clean Code, Page 19)
In the past, I often tried to take some time at work to practice but then unexpected issues occur, bugs are reported, coworkers appear with problems, features are waiting for their delivery and your planned practice time shrinks or even disappears. So to avoid these distractions and really focus on sharpening and enhancing my skills, I had to do this outside of the daily working environment.
For motivation and to track the progress of establishing this new habit, I used GitHub to push my code on a daily basis to have a visual overview of my what I’ve already achieved:
In this post, I’ll share my experience with this habit, show you what I achieved in this year and which obstacles occurred and how I solved them.
What to do during those 30 minutes?
I used the time frame mostly to hack some quick prototypes for current problems in my projects, explore a new technology/framework or harden the development skills on a specific topic. In addition, I sometimes worked through online tutorials or technical books and “pair-programmed” with the instructor.
So one example was a prototype to evaluate the right Java library for manipulating Word documents and generating PDF files out of them. I first did a quick research about the available Libraries, set up a simple use case and measured the performance and usability of the library.
Within these 30 minutes, I always had fun to explore something new and skipped a technology when it got boring as it should feel like joy and not as an obligation.
To not run out of ideas and technologies to explore, I created a small list where I added topics for the future and crossed out the listings I’ve already worked through.
But I have no time for this!
To stick to this new habit you first have to find a suitable time slot to do this. As I am personally most productive and able to learn new things in the morning, I decided to wake up every day one hour earlier. The first days were of course quite hard, but after it became a habit, I was more and more looking forward to code in the morning hours.
You have to overcome your excuses why you can’t do this. You’ll always find time for your personal development if you want to. Use the “dead time” while commuting, while on a plane, traveling by train or just waiting on something.
No company, no manager or coworker is responsible for your personal skill level and achievements, so you have to take the initiative to sharpen your skills and keep on track with the latest trends in your craft.
Another obstacle to solve was the coding during holidays and when I was not at home. The first challenge came with a two weeks trip to Thailand. I decided to buy a small and cheap laptop on Amazon for about 250 € and code while traveling or relaxing in the jungle:
During the first days with a new family member or a friend, their reaction was rather abstruse when I opened my laptop. But until I explained it to them, they accepted it and I could concentrate for at least 30 minutes every day.
So if your family or friends try to block you from doing this, explain it to them and keep strong. It’s your professionalism, not theirs. Take care.
Positive side-effects
Dedicating time every day to improve your craft, you’ll get more insights into your community and stay up-to-date with the latest trends. There were so many positive side-effects of sticking to this habit, that I not only improved my development skills but also gained attention in the community:
- I started to join Stack Overflow to help other developers and not only consume from this platform
- I also decided to start my own blog and write about the topics and frameworks I explored
- To follow my role models in the Java community and to get attention for my blog I started to actively use Twitter
Sticking to this habit I also achieved one small win every day in the morning and was ready to tackle the day. You’ll convince yourself that you are able to stick to your decisions and this has positive impacts on any other area of your life.
What to do when you have no time or energy?
Trust me, there will be times when you have no motivation or energy to stick to this habit. These days are the most critical for the success of your new habit.
I had days during holidays were my friends were calling me weird or I was tired after coming home from work. But while opening my commit statistics on GitHub I saw my current track and I didn’t want to break it. During such days I sometimes updated existing source code to newer libraries, updated my own documentation on GitHub, read a technical blog post or created new repositories for an upcoming tutorial or book.
I even had one day where I totally forgot to commit the produced code to GitHub but this didn’t prevent me from staying on track.
So there will be days when you’ll feel tired or sick. Just do a little bit and always remind yourself how far you already came.
For a summary, I’ll give you the top five requirements to succeed with this habit:
- Do it in the morning hours, you might be tired after work and you’ll start your day with an already achieved task
- Find interesting and challenging tasks to work on e.g. use online tutorials (Udemy, YouTube …) and code with the instructor in parallel
- Stick to your decision and track what you’ve already achieved
- Learn something new to become a generalist with one or more specialists (a better term for full-stack these days)
- Have fun while doing it otherwise it will be hard to stick to it
Looking back after one year, it’s incredible how much I’ve read, watched and learned. 365 days x 30 minutes makes 10950 minutes (182,5 hours) of additional development time in just one year.
Have fun while improving your craft,
Phil