Books/The Mediocre Programmer

From Wiki
< Books
Revision as of 13:35, 26 May 2020 by Joseph (talk | contribs) (Add 7th chapter stub)

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.

TODO


References

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