Review of Code Ahead by Yegor Bugayenko

I want to sell strawberries.


Alarm clock wakes you up. You eat something, drink a coffee and rush to the office so you’re not late for the pointless meeting your team is having each day at 8:00 am. You spend a day in a few more meetings even more pointless than this first one. When you find some time to actually do something useful - write code - you end up spending most of it cleaning up the mess your idiot genius colleague left for you - because it was just faster this way. At 5:00 pm everybody goes home, but you stay because you want to finish this feature, and do it right. Why? Somebody else will just mess up your code tomorrow. You will not get paid less if you just put a quick hack like the other guy did, you might actually get paid more. Should you stop caring, do bare minimum and spend the rest of your time on your open source project? Or should you just go sell strawberries? Is there a third way?

Code Ahead is a very strange book. It is a fictional story about a software company and people in it. But it’s also a non-fiction book, even more so than it is a fictional story. It is also a technical book about management and software engineering. Bugayenko has gathered insights from literally hundreds of books and articles about programming, DevOps, testing, management, philosophy and more, and used a story, very familiar to every developer, to glue them all together into one cohesive work. Quotes from these books and articles are gathered in footnotes at the bottom of almost every page and are used to substantiate the points in the story. On the other hand, they themselves are the whole reason for the book, but since reading a dry literature review would be rather boring (especially to me, since I’m not that interested in management and processes), the story makes them come alive.

There are good news and bad news regarding this. The good news is this format makes a vast body of knowledge very accessible, making Code Ahead incredibly valuable in that sense. The bad news is the story becomes only of secondary importance and is at places not as deep as I would like. It is still interesting, especially because it is extremely relatable to me as a developer, but I wanted more drama, conflict and intrigue. There is some of that, and in those places I had to really force myself not to skip the footnotes because I was hooked and wanted to see what happens in the story, and the footnotes can really distract from that. In other places, however, the plot seems to be the protagonist just standing there and mechanically reading sections of Bugayenko’s blog posts.

The technical content itself is great. There are a lot of interesting ideas about Continuous Integration, testing, quality assurance and more, some quite counter-intuitive, some of which I haven’t heard before. I especially liked the thoughts about testing. There is also a strong existential component, something that really makes you think about what you are doing and why. Bugayenko is sometimes very provocative and sometimes refreshingly funny, something you find less and less these days. Not everything in the book should be taken literally, but it is thought provoking. It changed my attitude to what I’m doing, perhaps not drastically, but it did.

There are some things that seem wrong to me as well. The author is too hung up on this bizarre marxist view of the world where society is divided into classes of people “who do the work”, and people “who steal” or otherwise exploit them. He even quotes Marx (really?) and Thomas Piketty, whose book has been debunked many many times. Still, it’s not too annoying, and it’s often hard to tell when Bugayenko is serious, and when he is just trolling, which is also why I really like Code Ahead.

Even though it has a few flaws, Code Ahead is strange, interesting, useful and really thought provoking, and I am glad I read it. Looking forward to volume 2.

Written on November 25, 2018