Books/The Mediocre Programmer

From Wiki
< Books
Revision as of 14:16, 26 May 2020 by Joseph (talk | contribs) (Added summary till 7.3)

Author: Craig Maloney


What it is about

Most programmers are trying to be great. The author says that in order for a programmer to be great, they must pass through the mediocre stage first. This books is all about going from a novice programmer to a mediocre programmer.

This is not a technical book. It is mostly about life experiences of the author as a programmer and his advice for programmers.

Skill gaps

The tools of the trade are constantly changing. A programmer is expected to keep up with them. There will always be gaps in knowledge and skills required to accomplish the task at hand. The author advocates for a measured approach of learning as much as you can at a steady pace.

Performance anxiety

We compare our backstage with others' performances. "If we strip away the barriers of perceived rank and meritocracy we can better engage with and learn from each other."

Mistakes

Programmers should engage their curiosity. They should give themselves permission to make mistakes and learn from them. Recording our mistakes and their fixes in a journal is a good way of maximizing the learning process.

Community

Joining a good community can help you become a better programmer. It is not always easy to find the right community. Sometimes, you might have to start one yourself. A good community usually has the following:

  • Code of conduct
  • Moderators
  • Spaces for questions and guidelines for questions
  • Joy
  • Compassion and empathy
  • Kindness

Productivity

The machines we work with are tireless, so we adapt to keeping them busy all the time. We aren't giving ourselves the time to relax and reflect. We don't have to be "on" all the time. These are feelings of inadequacy. Periodic breaks are required during work that involve doing something without a computer. The break can be a short one, but it should be a full context switch.

Our desire to meet arbitrary productivity targets is a form of chasing deadlines too. These deadlines can be eliminated as they can cause undue stress. The author talks about a technique that worked for him called "focus containers". A focus container is a short amount of time that you are going to spend on the task, just doing it, not chasing a deadline. It helps get rid of inertia to start a task and also eliminates the stress of completion. Keeping distractions at bay and focusing using containers can lead to stress-free productivity.

The changing technology landscape

Change is the only constant in the field of computer programming. We cannot keep up with the umpteen tools, languages and frameworks coming out every week. This is a losing proposition. We should instead learn how to learn. We should have a deep understanding of our own learning patterns.

Have dedicated learning time everyday. Pick something interesting and learn it well. It should be something that sparks joy. Start with the materials at hand instead of hunting for the best possible materials.

Learning is not like filling a cup. It's more like peeling away the layers of ignorance. Notice your feelings during the learning process and adapt as required to be more engaged in the learning process.

Having a positive mindset towards learning is important. It helps you to not give up too quickly and stay with the subject. Enjoy the journey rather than worrying about whether the skill is valuable in the job market. But it is also okay to give up learning a certain thing sometimes if it brings you no joy. keep the curiosity alive. Don't let Enterprise Java kill it.


Emotions

This felt that the 7th chapter is the most important part of the book. I've read it multiple times. It is an exploration of what leads to programmers burning out.

Programming is usually thought of as a logical, emotionless activity. But there are many emotions going through a programmer's head while programming. There is fear, doubt, insecurity, guilt and shame. There might be a strong sense of the "impostor's syndrome". Programming is itself taxing enough and we have these emotions to deal with as well.

There are many emotional drains.

  • is the work purposeful or futile?
  • is the work engaging or boring?
  • are you awake and active or tired and running on fumes?
  • our desires and our current mental state might be at odds with each other

We should be aware of our mental state. We should learn to be mindful of our emotions, well, to the point that they are not overwhelming or causing PTSD.


References

1. Book website (full text available)
http://themediocreprogrammer.com