echo thoughts » internet

Book Review: The Mediocre Programmer by Craig Maloney

Posted at — Apr 14, 2021

If the description of this post caught your attention, then you likely need to read this book!

I’ve just finished reading The Mediocre Programmer by Craig Maloney, and I was surprised by how much I felt like I needed this book even today.

The book covers a wealth of subjects related to fitting in as a contributor in the world of Software Development. The chapters tackle various permutations of imposter syndrome, or the commonly self-imposed idea that an individual does not feel that they are providing adequate value to a given community or work environment, and are just narrowly avoiding getting discovered as an “imposter”. Naturally, I’ve felt this throughout my professional career, and even in my personal hacking projects! I’m getting better about it these days, but The Mediocre Programmer really just serializes into words all of the things that helps get to that point.

The book caught my attention in just the first few pages, but is also a short read which makes it a perfect book for my consumption as I’m not a prolific reader of books. I downloaded a freely available EPUB and threw it into Google Play Books (my preferred e-reader app given my current series of devices). The quality of the digital copies is excellent.

Below you’ll find a few quotes from the text that I highlighted, as well as some of my personal thoughts on the information.

Approachable Learning

The book establishes early on that a key contributor of imposter syndrome is the idea that there’s a mountain of information that one needs to learn on a given subject, and a seemingly short time to get up that mountain. The author proposes a few strategies, but I wanted to highlight this one in particular because I’ve run into it myself:

The second option (trying to cram and becoming frustrated) is the least optimal path. Trying to learn by grabbing every available resource and jamming it into our brains is a path to frustration, fatigue, and burnout

On one hand, I find that I tend to surround myself with many types of resources when I’m learning a subject… AND I’m really enjoying it. On the other hand, I’ve also found myself doing similar with other subjects that I’ve not even started to explore, and I always end up being unproductive with that subject. Why is that? If I had to put it to words, it’s the idea that surrounding myself with tons of information generally helps contribute to forming the mountain I have to climb. The first scenario usually doesn’t start with “every piece of content available” being placed in front of me. It usually starts with one or two pieces of content and then I start to build the pipeline of information after I really start digging into things. These are very different scenarios.

I’ll leave the remaining options for you to explore while reading.

Allowing for Down Time

There’s a tendency to believe that because we work with machines that are tireless and ready for more work that we need to adapt ourselves to these machines. We feel the urge to always be “on” and ready to give the machine more work. Idleness is regarded as a waste. We try to become like the machine; tireless and always ready for more work.

This really hits home as well, especially as you try to tackle the mountain of new knowledge that you feel the need to acquire. The reality is that humans are not machines. We have emotional and psychological states that impact are ability to receive new knowledge which machines do not share. Later chapters discuss the physical and mental aspects in detail, but this particular quote stuck out to me because most folks that suffer from imposter syndrome and feel the need “catch up” do not allow space for mental and physical exhaustion, which ultimately causes progression to stall.

Logistics & Strategy

We should replace soft deadlines (deadlines that aren’t externally imposed on us) with a commitment to work on a particular project for a given length of time. One trick I’ve found useful is the idea of a “timed focus container”.

The book goes into tools and approaches to help organize your time. After all, time is the resource that everyone agrees cannot be generated. With this in mind, the author details an approach to time-boxing, which I’ve done with a tomato timer website that handles the focus container and break containers automatically for me, with mixed success.

Treat your learning as an iterative process, with regular check-in periods to note your progress. Think

I’m not looking to be prescriptive about the logistics of your approach, but it’s worth trying a few options. It’s also important to not be buried in trying all the options - at that point, you’re no longer learning and are instead spending resources on “process”. This is another danger, and I believe the book touches on this in similar contexts.

Learning specific methodologies and technologies is not a good long-term strategy for programmers. We’re better served by learning how to learn, and more importantly, how we ourselves learn.

This is a critical piece of information! I took education-focused classes in University, and while I don’t actively teach in the public school system today, learning how humans learn was a key lesson I took away from that time in my life. Learning how you learn (or if you teach, learning how others learn) greatly contributes to efficient uses of your time when learning new subjects.

In Summary

The book ends with a quick snapshot on the author’s technical history which is a great read in itself. I enjoy hearing people’s origin stories, as it helps solidify this idea that everyone gets to where they are in tech by forging a completely unique path.

Regardless of whether you’re actively experiencing imposter syndrome, or have overcome it - I would highly recommend the The Mediocre Programmer. If you want to contribute, the book source appears to be available and open for review/commits (accessible via the links previously shared).

Happy reading!