Score a Job by Keeping a Programming Journal

It worked for me, and can for you too

Steven Curtis
6 min readJan 5, 2020

I’ve transitioned into a development career, and sunk thousands of hours into coding and developing myself. Coding is both challenging and rewarding, but many give up and quit along the journey to becoming a full-time professional programmer.

Here are some of the journal writing secrets that both those developing into professional programmers, and professionals themselves use to sustain and enhance their motivation?

The Theory

Intentional learning and deliberate practice in both improving the standard of coding and new concepts can help us to deliver better results in our learning journey, and make the most of the time we spend in front of the keyboard (as well as thinking about problems!).

Why keep a learning journal at all?

Articulating throughts

Coders tend to think through problems, and this is just the sort of strategy that interviewers wish to see in interviewees.

The techniques and strategies that you will go through when encountering a new problem do not change (are invariant) across different problems, and even different programming languages.

A beginner may use a try-experiment loop that works for simple problems, but can’t scale for more complex and innovative problems.

An intermediate begins to put into place a pattern of attempting known good strategies for solutions, based on problems that have been attempted before.

A learning journal records these strategies (steps of algorithms, design processes and even fixes for IDEs etc.) so patterns can be found and drawn out.

With a formal process in place you are assisted in the following:

  • seeing the problem before you with clarity
  • break the problem down into smaller parts(decomposition)
  • see links between previous problems and the current problem
  • put steps into place between simple and complex problems
  • eliminate errors through documenting the problem and previous errors

Increase productivity

Analysis paralysis is a real problem and can prevent us from improving in our work as we move from task to task and problem to problem.

There is so much going on in life. Being productive can mean having a focus.

The act of writing down a problem makes it real, and can leave you to focus on the problem at hand, and improve concentration.

You only have a limited amount of memory resource, and focusing on one area or problem not only limits distractions but frees you think about what is really important.

Planning and focussing keeps your mind on the problem, and in reality pushes you towards planning and away from those hours of unfocussed debugging of a problem that you do not even truly understand.

Recording your progress and development

One disadvantage to learning to code, or improving your existing work is that you are blind to your own progress and feel like you just aren’t getting better. This is tied into our development, since until we are 4 years old we do not understand that information is tied into our perspective, and the ability to understand ones past self as someone without access to your current knowledge a further leap.

Not understanding your own progress is toxic for motivation, and makes some people stop developing altogether.

Keeping a log of your work shows you not just the work you are putting into your development, but how far you have come in your understanding and progress.

Physical writing

Many developers keep their learning journal by hand rather than on a computer.

One possible advantage of this is the action of writing can help improve memory, but another is the permission to take a break from using a computer all day.

There are real benefits to taking a break from work at a computer, not just for your posture but for your memory too.

According to a 2014 study you should be taking 17 minutes away from a computer for every 52 minutes of work. Hiding in the toilet is not a good use of that time, having a learning journal enables you to record your progress away from a screen.

The Practice

Break large tasks down

Project Management is sometimes seen as a soft skill in software development, and one that has less value than coding or sitting down to solve a problem. Yet decomposition is a well-known technique within software engineering and involves taking a complex problem and breaking it down into smaller pieces that can be solved individually.

By taking learning coding as an overall goal, and breaking it down into subtasks has several advantages:

  • you know what to do at any given point
  • you have tasks to cross off each day
  • crossing off tasks you feel that you have achieved something as you are closer to completing your goal

When Jocelyn Glei wanted to launch a podcast she did just this. Breaking down the problem into episodes and interviews gave individual goals to work towards.

A podcast progress list from Jocelyn Glei

Each task can be further broken down until the tasks are acheivable. The overall goal can then (slowly) be reached!

Using achievable goals

The human mind is primed to remember the beginning and the end of tasks. In fact there is ample evidence that the peak-end rule can be used to help us motivate ourselves, in that when you complete a task at the end of the day you will remember the day’s learning as a positive experience.

To get the maximum benefit from this you can separate a task into smaller sub-tasks to increase your motivation, and leverage the Zeigarnik effect to leave the overall goal unfinished at the end of your current session.

Log your time

It is so hard to actually track your progress, and be conscious of the time you are spending on what, and when.

In order to do this, you can use RescueTime to track your progress. You can even set up alerts for when you hit a target, and you can look back over your progress to see how you have done over a span of time.

Knowing you are making progress, knowing you are putting the hours in is valuable and keeps you motivated!

The evidence

Anders Ericsson is widely credited with coining the term deliberate practice in the 1990’s. Educational researcher John Hattie included deliberate practice as a major factor in student achievement.

There are several meta-analyses confirming the effect, but there is discussion whether deliberate practice is only effective in Music and educational domains rather than a professional context.

The take away is that focusing on improvement is transferable from other domains, and provides an impact on learning no matter the context. We should be looking to improve, and use a journal to aid us in this goal.

Conclusion

Keeping motivated is important. Making progress is important. A learning journal can help you to improve your coding skills whether you are a beginner or a professional — or like most of us somewhere in between.

Writing a journal can help you learn, and develop yourself. It is about growing, and using your mind as well as you possibly can with the tie you have. I hope you make the most out of it

Want to get in contact? I’m on Twitter:

https://twitter.com/stevenpcurtis

--

--