Trashy Fiction Recommendations

I would be the first to admit that my taste in fiction is lowbrow. It’s the fairly classic nerd pattern of mostly reading genre fiction – it used to be mostly sci-fi, these days it’s mostly fantasy (I’d like to read more sci-fi, I just don’t often find new sci-fi authors I actually like these days).

But there are still a lot of really good works within those genres, and I try to make sure I read those. e.g. I strongly recommend everything from Among Others onwards (I’m not such a fan of her early work) by Jo Walton because I think she’s genuinely an incredible writer.

If you look at past book recommendations you might get the impression that that’s most of what I read. This is, uh, not the case. I have a Kindle Unlimited subscription for a reason, and that reason is not that there are a lot of hidden gems lurking in Kindle Unlimited.

So here’s a collection from the other side of my reading list: Stuff that is a lot of fun but that I would be hesitant to call good, or that I have to apply some serious caveats before recommending. Many of these are in some significant way Problematic.

(Side note: There’s an interesting gender reversal that I don’t entirely understand – most of the books I read that I think are actually good are by women, and my normal recommendation lists reflect that, but most of the books on this list are by men. I don’t really know why this is, though I have some hypotheses that I won’t go into here).

Apologies to any authors who feel slighted by their inclusion on this list. I really do enjoy your work.

Niall Teasdale

Would you like to read literally dozens of books with a variety of interesting, well-developed, characters from a large cross range of genders and sexualities, with a decent (if not amazingly well handled) range of races and cultural backgrounds? The characters are enjoyable, the world-building is top notch, the plots are engaging, and the books are generally a huge amount of fun.

You would? Great. Oh by the way it’s basically porn. And not especially good porn.

Niall Teasdale is a frustrating author for me in this regard because all of the above is true. I really do enjoy most of what he writes, but there is a very specific pattern where the protagonist is literally always a bisexual (often originally straight but made bisexual through magic and/or science) woman who has a great deal of sex which he describes in detail. If that’s either your thing (remembering that it’s written by a presumably-straight guy) or you are able to overlook it, his work is a lot of fun.

Mother of Learning

Mother of Learning is about a pair of wizards caught in a month-long groundhog day loop.

It’s pretty well written, but violates my rule against reading wizard school books (wizard school is a lazy excuse for infodumping) and my preference against extended battle scenes (lazy filler to make up the word count without having to include actual plot). Also a lot of the appeal is basically watching the endless grind of power up.

On the other hand it has an adorable giant spider named Enthusiastic Seeker of Novelty, so it has that going for it.

It has a fairly major tone shift midway through, and I kinda liked the early half better but I’m still enjoying it.

With This Ring

With This Ring is a self-insert fixfic where the protagonist gets stuck in the Young Justice universe (DC animated series. Highly recommend the series regardless of whether you read this) with an orange power ring. For those not familiar with the DC cosmology, orange is the light of avarice. His ring gives him power to achieve his goals directly in proportion to how much he wants those things, with the unfortunate side effect that he has to constantly work to not be overwhelmed by greed.

He sets about trying to address the question of “If you all have this amazing tech, why are you using it to fight bad guys instead of fixing the world?” among other things. One of this first uses of the orange power ring is to go about fixing the great pacific garbage patch, and at some point he starts using freeze ray technology to start repairing the polar ice caps.

Most people I’ve recommended it to do not like it. There are a lot of problems with it e.g. the author’s politics are somewhat objectionable in places and it shows through in the fiction, and the protagonist becomes increasingly hard to relate to in fairly disturbing ways as the story goes on.

I think some of the appeal for me is definitely the daily updates. It turns out that I’m willing to overlook a lot of flaws for daily updates. Beyond that, I enjoy the fix-fic aspects of it quite a lot – both the attempt to give the DC universe a semi-coherent cosmology and also the fantasy of using super powers to actually try to fix the world.

Worth the Candle

Have you encountered the genre of LitRPG? If not, I recommend this piece about it.

The short version is that LitRPG is a genre of fiction in which game mechanics play an explicit role. Characters actually have levels and gain XP and are aware of it in world. Often, but not always, LitRPG is also portal fantasy – the protagonist has found himself (gendering intentional – LitRPG is overwhelmingly male) transported into a world that is somehow also a game. Often but not always it ends up with a harem fantasy on the side. What you are imagining about both the target audience and the typical authors right now is unkind but probably not unfair.

Worth the Candle is the only one I’ve encountered that I would say is actually pretty good. The protagonist is a rather bitter teenager who finds himself in a world that has a disturbing resemblance to a lot of the D&D campaigns he has run, including some of the darkest aspects of it that he wrote when he was going through a rather bad point in his life.

I don’t know how much you will get out of this if you haven’t had some prior exposure to LitRPG as some aspects of it are explicitly deconstructions, but I think the story stands on its own.

If you want examples of LitRPG in its raw undiluted form, I can “recommend” The Arcane Emperor (which is terrible, but I somehow still read 80ish chapters of before giving up on). There’s also “My Trans-Dimensional, Overpowered Protagonist, Harem Comedy is Wrong, as Expected“, which is a rather strange instance of the genre (it’s an insert of a character from one Japanese light novel into another, with a LitRPGish overlay) but is rather better written (but I also eventually got bored of it).

The Laboratory: A Futuristic Dungeon Core

OK, we’ve covered LitRPG. Now lets talk about Dungeon Core.

What is Dungeon Core? Well Dungeon Core is kinda the dual to LitRPG (or a lot of classic fantasy) – instead of the protagonist being the hero, the protagonist is the dungeon that the heroes face.

This isn’t a metaphor. The protagonist is literally the dungeon.

In “The Laboratory”, the protagonist is very clearly GlaDoS inspired. She is an AI named Emma who has been awakened after some sort of apocalypse by Anna, the self-proclaimed “Queen of the Goddamn World” (starting assets: Emma. Her dominion is something of a work in progress). The world is full of upgrade crystals, which can be used to give people powers. Emma has a tech tree, and can see people’s stats, etc. So in this case it’s also somewhat LitRPG (there’s a large overlap between the two genres but neither is strictly a subset of the other).

One caveat: Emma is designed with the built-in flaw that she basically insults people constantly, and this takes the form of a lot of body-shaming (and slut-shaming, and virgin-shaming, and…). It’s kinda a meta-joke that she does this to everyone, regardless of whether the insults really fit, but it’s still there. If that would ruin your enjoyment of the story, best avoid, because it’s pretty much a constant feature. There is also quite a lot of graphic and casual violence.

Ancient Dreams by Benjamin Medrano

This is another dungeon core series (though not explicitly labelled as such).

To quote the description “This is a dark fantasy lesbian romance, with a focus on the dark fantasy”. I would like to note that it is a lesbian romance written by a guy and has all the male gaze aspects you would expect from that. Also the author is very clearly exploring a rather specific fetish around mind control while trying to make it clear that he understands that obviously this is a bad thing to do and consent is important, and goes to some lengths to square that particular circle.

But, you know, the fantasy aspects of it are actually pretty good. Decent world-building, interesting characters (if a bit obviously specifically crafted to fit the specific thing the author is going for), and a plot that properly engages with the way evil can become built into society (while still maintaining the fantasy classic of having a villain who you can just stab hard enough as step one of fixing everything).

I Can’t Believe It’s Not Harry Dresden

Hey do you like The Dresden Files? Would you like to read more of that?

In which case I can recommend The Iron Druid Chronicles by Kevin Hearne, the Pax Arcana books by Elliott James and the Changeling Blood series by Glynn Stewart.

I mean, plotwise they’re not carbon copies of the Dresden Files or anything. They have interestingly distinct masquerade worlds with interestingly distinct white male protagonists who make interestingly distinct pop culture references with their interestingly distinct wise-cracking sidekicks and have dysfunctional love lives for interestingly distinct reasons while saving the world from interestingly distinct enemies loosely adapted from western mythology. Um. Yeah.

I can also recommend the Kate Daniels books by Illona Andrews in this space, though I like them more and feel a little bad about including them on a trashy fiction list.

The Lazy Girl’s Guide to Magic by Helen Harper

Ivy Wilde is actually extremely talented at magic, but she hopes you won’t notice because then you might expect her to actually do some work.

Unfortunately someone noticed (more or less by accident), and now she’s had to give up her nice easy job driving a taxi and has to solve crimes and stuff. Oh well at least she got herself a hot boyfriend in the deal.

These are a lot of fun.

Chronicles of Elantra by Michelle Sagara

Unsure whether to include these on the list. It’s a bit unfair labelling them trashy, but on the other hand they’re also not really high fiction that would otherwise make it on to the list. They’re a kind of comfort food reading almost.

Kaylin Neya really wants nothing more than to be a Hawk (basically a cop). Unfortunately she’s been marked as Chosen (yes that’s literally her title) which gives her all sorts of power and absolutely no clue how to use it. This results in a great deal of sarcasm from the various immortals she has to deal with – mostly Dragons (who are mostly human shaped until things get a bit too real) and Barrani (who are definitely not elves. Nope nope nope), but the occasional god-like entity occasionally makes an appearance too. Her greatest fears include that her anthropomorphic cat sergeant will one day tear out her throat for being late for the Nth time (he probably won’t. He likes her really) and that at some point she will have to interact with the dragon emperor in an official capacity and he will be forced to eat her for her complete lack of social graces. The greatest fear of those around her is that at some point her unbroken string of saving the world every other week is going to fail.

Bobiverse Series by Dennis E. Taylor

Bob Johansson is a fairly stereotypical nerd type character who happened to found a successful startup company. Then he gets hit by a truck.

That’s the bad news. The good news that he signed up for a cryogenics program, and now the religious fundamentalist successor state to the united states has resurrected him and wants to turn him into a Von Neumann probe. It’s a very qualified sense of “good”. Fortunately he is able to figure out a way around the blocks they put on his behaviour, and sets out to explore the universe.

Will Wight

Will Wight writes books about protagonists powering up through constant training. There’s a lot of fighting involved.

Cradle is very explicitly a Xianxia inspired series (to borrow the author’s description Xianxia is “​Basically? It’s magical martial arts. Even cooler than it sounds, if that’s possible.”). The protagonist starts out very underpowered but due to plot discovers that if nothing is done to stop it his home will be destroyed in a few decades, and he decides that it’s on him to stop it, and sets out to level up hard and fast as possible through sheer bloody mindedness.

(Despite the “level up” description, Xianxia is not LitRPG. There are however a lot of parallels – people are given levels like Copper, Iron, Jade, Gold, and have distinct paths they follow, attributes they gain from them, etc. There are no XP though).

Traveller’s Gate is another series by him which is basically… it’s not the same, but it’s not the same in the same sense that he Iron Druid chronicles are totally different from the Dresden Files books, or that this ass-kicking bisexual robot protagonist by Niall Teasdale is a totally different person from the other ass-kicking bisexual robot protagonist by Niall Teasdale. The protagonist’s father was killed and his mother left traumatised by Travellers (this isn’t actually coded anti-Roma racism. A Traveller in this context is basically a mage – they can create gates to other realms and also gain powers associated with their associated realm). He sets out to avenge himself by acquiring a really big sword and lots of cool powers.

The Dire Saga by Andrew Seiple

Doctor Dire is a Doctor Doom expy. She speaks in all caps (described as “a metallic shrieking voice”), she refers to herself in the third person (not by choice. It’s a problem with her brain) and she has cool metal power armour.

Is she a villain? Well, yes, technically. She codes scary so people assumed she was a villain from the get go, and besides: Heroes are mostly about preserving the status quo. If she were a hero she’d get in trouble for doing things like overthrowing the oppressive dictator of a country and installing herself as its rightful ruler.

OK she still gets in trouble for it, but at least she pulled it off first.

She is a colossal ham, but does so deliberately. adopting Kayfabe as a battle strategy – in a debate you are not actually trying to beat your opponent, you’re trying to win over the audience. A fight is just a debate with more punching and high explosives, so you might as well make a spectacle of it.

Notable achievements include punching Hitler and introducing Dungeons and Dragons to the damned in Hell.

Starship’s Mage by Glynn Stewart

Another one that is borderline unfair to include on the “trashy” list. These are actually pretty good, although they are still solidly in nerd power fantasy territory.

These are set in a world where faster than light travel is accomplished entirely by mages (who are mostly descended from genetic engineering experiments performed on Mars a century or two back) casting teleport spells. There’s plenty of high tech in the world – fusion reactors, computers, anti-matter (produced by mages using transmutation spells for the most part), etc. It’s just that there are also wizards and they are able to consider certain laws of physics to be somewhat optional.

Damien Montgomery is such a mage. He’s a bit underpowered compared to his peers (in ways that will change over the course of the series…), so he isn’t able to find himself the berth he wants on a starship until a ship arrives that is slightly desperate for a replacement jump mage. It turns out he should probably have asked more about why they were desperate, and hijinks ensue.

Also has a parallel series “Red Falcon”. I like it, but am looking forward more to books in the main series (which has some emerging mysteries that I would like to see the answers to).

Glynn Stewart has a number of other series. The only one of them I’ve read is the Castle Federation series, which is perfectly passable military sci-fi but nothing to write home about.

Others

It turns out I read a lot of kindle unlimited, and that going through the list I actually just don’t remember reading most of these books. Some of them are ones that I probably got, read for ten minutes, and then went “Nah” to, but there are ones where  I’ve clearly read an entire series but have almost no memory. Fortunately, I think that probably disqualifies them from the list criterion of being fun enough to recommend.

I’m also more than happy to accept recommendations, either in the comments here or on Twitter as you prefer.

This entry was posted in Books on by .

Older women as protagonists in SFF

I asked on Twitter the other day for examples of science fiction and fantasy where the protagonists were middle aged and upwards women.

Why? No amazingly good reason. Mostly just I was rereading “A Key, An Egg, An Unfortunate Remark” by Harry Connolly, which I really like, and I was thinking that most of the examples of such books I’ve read I’ve enjoyed. There’s a broader political point about representation, and I do care about that, but I was mostly just looking for good and slightly different books.

Here are the results from that thread:

Ones I can personally recommend

These are the ones I’ve read and what I think about them.

A Key, An Egg, An Unfortunate Remark by Harry Connolly

This is the one that started the thought process. It’s good. It’s a mystery novel about a 60 year old high-society lady who used to be a monster hunter but has turned pacifist. She now basically dominates the magical scene of Seattle and forces people to play nice.

It’s stylistically a bit odd (at least partly due to a conceit you find out about a third of the way in that I enjoyed as a one off but think would get old fast), but a lot of fun and I definitely recommend it.

Gentleman Jole and the Red Queen by Louis McMaster Bujold

Probably doesn’t make a lot of sense if you haven’t read the previous books in the Vorkosigan Saga (which is very good but mostly does not count for this list) – it’s a book about the Cordelia Vorkosigan, the mother of the eponymous protagonist of most of the rest of the series. It’s also a book about how much of her life that her son (the protagonist of most of the other books) has been completely oblivious to.

I think everything Bujold does is great, but I really enjoyed this one in particular.

Paladin of Souls by Louis McMaster Bujold

I confess I remember literally nothing about this book except that it was by Bujold and didn’t change my opinion that I like almost everything she writes. So recommended on that strength but not much else.

The Ninth Rain by Jen Williams

Only partially counts and only partially recommended. The book arguably has three protagonists – a middle aged black lesbian, a young woman persecuted for witchcraft, and an immortalish man who is somewhere between a vampire and an elf and acts a lot like he was a young man.

I like Jen Williams but I only weakly recommend the book. The protagonist who gets it onto this list is great, but I felt like the story overall had a bit too much going on and didn’t quite live up to its promise.

The Fifth Season by N. K. Jemisin

A middle-aged mother tries to find her daughter, who has been abducted by her husband. A rare instance of the genre of post-apocalyptic high fantasy (which I enjoy in general).

N. K. Jemisin is very good and I recommend most of her books, including this one.

A Crown for Cold Silver by Alex Marshall

The protagonist is a retired revolutionary who conquered the known world and then deliberately faded into obscurity, but her past catches up with her and she’s forced out of retirement.

My Real Children by Jo Walton

A sort of sliding doors style exploration of a woman’s life as she lives it in two alternate histories of the world based on the differences caused by a single choice she made that turned out to have far-reaching ramifications. It covers most of her life from a young age but primarily the middle of it.

This novel is very good but absolutely heart breaking.

The Annihilation Score by Charles Stross

One of the many books in Charles Stross’s Laundry Files, this one focusing on Mo, the wife of the protagonist from earlier books.

Doesn’t really stand on its own without the rest of the series, and I’m kinda tiring of the Laundry Files a bit, but they’re still worth reading.

Rule 34 by Charles Stross

Not 100% sure this one counts, but the protagonist is a fairly senior police officer so is at the very least not young.

Good book, although it’s been long enough since I’ve read it that I’m hazy on the details. Would nevertheless recommend.

The witches books by Terry Pratchett

• Equal Rites
• Wyrd Sisters
• Carpe Jugulum

Nanny Ogg and Granny Weatherwax are some of my favourite of Pratchett’s characters. Can definitely recommend.

Jackalope Wives by T. Kingfisher

T. Kingfisher (secretly Ursula Vernon) is great and you should read everything she writes, but the titular Jackalope Wives and a few other stories in that collection (including “The Tomato Thief” where the protagonist of Jackalope wives reappears) is a grandmother who likes tomatoes and magic and puts up with very little nonsense.

Recommendations from Others

I haven’t read these yet, but I aim to fix this.

• The Marq’ssan cycle by L. Timmel Duchamp’
• Tea With the Black Dragon by R. A. MacAvoy
• Holy Fire by Bruce Sterling
• The Gaia Series (Titan / Wizard / Demon) by John Varley
• Tehanu by Ursula Le Guin (I think I actually have read this one but it was ages ago and I have no memory either way of it)
• Woman on the Edge of Time by Marge Piercy
• The Year of the Flood by Margaret Atwood
• Fair Peril by Nancy Springer
• The New Moon’s Arms by Nalo Hopkinson
• Remnant Population by Elizabeth Moon
• Sassinak by Anne McCaffrey and Elizabeth Moon
• The Baba Yaga by Una McCormack and Eric Brown (this is the third in a series where the first two don’t seem to qualify)

I’m currently reading through The Memoirs of Lady Trent series by Marie Brenna (which will probably count in some of the later books I haven’t read yet – the protagonist is writing her memoirs from an age where she would definitely qualify, but I’m so far only on book three where she’s only just in her 30s, which I am determined not to count as middle age while I’m still in them). After I’ve finished this series I’ll start making inroads into the above list and report back.

In the meantime, feel free to suggest more books, or point out ones I missed from the thread, in the comments.

This entry was posted in Books on by .

I like short books

(and I cannot lie)

I made a comment on Twitter the other day that short books, especially textbooks, tend to be atypically good – it requires skill and focus to condense an idea down into a compact text, and you often end up with a much better work as a result of it. As a bonus, you can often read through them over the course of an afternoon which lowers the cost of rereading significantly.

People asked me for some recommendations based on this observation, so I had a rummage through my shelves…

…and ended up actually much less convinced of my thesis than I started out. A lot of the shorter books seem to be ones I never finished or only half remember the contents of.

Another thing I realised is that my impression of what counts as “short” is very much influenced by printing – some books have thinner paper than others, some have larger pages, etc. and the result is that books that are within 50% of each other in terms of page count can look be radically different in size.

Despite those caveats, some of the books I dug up are still pretty good, so here’s a sampling of short books from my shelves that I’d recommend.

Best Kept Secrets of Peer Code Review

This was the book I was reading that prompted the observation. I reviewed it the other day. Nice, short book about some of the research on code review effectiveness.

Totals 164 pages, of which you’ll probably want to skip about 35 due to them being outdated.

Probability with Martingales

Martingales are essentially a mathematical model of gambling (and other gambling like things like literally all of finance). It seems to be named over the classic betting model of doubling your bet every time you lose, and is the theory you need if you want to understand why that’s more or less the only way to beat the house and if you have a finite amount of wealth then you can’t.

The book starts with a good introduction to probability and measure theory, then moves on to the theory of martingales. It’s reasonably comprehensive for the narrow area it covers, but takes quite a direct path through it. It’s generally well organised and well written, with just enough of the author’s voice coming through that it’s much less dry than many textbooks.

I really like this book. I don’t really know what level you need to read it – I had already covered about 30-40% of its contents in my degree before I read it – but it does require some level of mathematical sophistication.

Totals 251 pages, of which the main content comes to 191, of which the first 92 are mostly about probability and measure theory.

Finite Markov Chains and Algorithmic Applications

Confession: Despite this being one of the shorter books on the list, I’ve only actually read about half of it. I really enjoyed that half though.

I got this book because I wanted to learn more about Markov Chain Monte Carlo methods. I succeeded at that, and found its explanation of them to be fairly lucid and easy to follow. It also has some good sections on statistical counting

Unfortunately I then never used that knowledge so it dropped out of cache and I no longer really understand how they work. But if I need to I would definitely pick this book up again, only this time I’d do it while writing code to implement the algorithms in question.

Totals 114 pages, but they’re quite dense pages so it’s not fast reading.

How to Improve Your Foreign Language IMMEDIATELY

Finding this book reminded me that I should reread this book, despite the fact that I’m not currently actively working on any foreign languages.

As far as titles go, this is probably even worse than “Best Kept Secrets of Peer Code Review”. I guess you can’t judge a book by it’s cover? I wonder why nobody ever told me that.

This is basically a book about how to talk to people when talking to people is hard and you lack confidence. This is particularly valuable when you’re trying to talk to people in a language you don’t speak very well, but it’s also a more broadly applicable skill,

Totals 111 pages.

Combinatorics: Set Systems, Hypergraphs, Families of Vectors, and Combinatorial Probability

I really like this book but unfortunately turned out to really not care about most of its subject matter. If I needed to care about something it covered I would definitely read that chapter and do the exercises.

It did introduce me to Hall’s theorem, for which I am very grateful.

Totals 177 pages.

Foundations of Rational Choice Under Risk

This is basically a series of essays poking at the boundaries of subjective expected utility and seeing where it breaks.

I think I’ve read this book three times now, and enjoyed it every time, but I still can’t remember exactly which information I got from here and which information I got from elsewhere. Still, it was essential in fuelling some of my weirder opinions about decision theory.

Totals 161 pages.

Epistemology and the Psychology of Human Judgment

I actually don’t own a physical copy of this book, only a kindle edition, but the previous book reminded me of this one and I realised that I should really fix that, so I’ve now ordered a used copy.

I am barely trolling at all when I say that this epistemology textbook should be considered required reading for people who conduct interviews.

It’s all a bit epistemology inside baseball, but it contains a lot of good information from the heuristics and biases program as seen through the eyes of epistemologists, which is a useful thing for almost everyone who regularly has to make decisions (PS. That’s everyone).

I think this totals 204 pages, but I got that information from Google books.

Essays on The Theory of Numbers

A reprint of a number of papers by Richard Dedekind about the construction of the real numbers. This is (within epsilon of) my favourite construction of the reals, but you almost never see it in an undergrad course (cauchy sequences are more popular for some ungodly reason), and this is a nice, clear presentation of them.

Totals 115 pages.

A Short Course on Banach Space Theory

This is a really good book by a really good author which I sadly bought after my interest in the subject had waned somewhat. As a result I probably haven’t read more than a third of it, but I think I’d like to. I may revisit it as a result of writing this post.

I suspect it might make good companion reading to “Probability with Martingales” because it covers a lot more of the more general functional analysis and geometry that you get with $$L^p$$  spaces, much of which comes from and is touched on things that are covered in the former book.

Totals 184 pages.

Mathematical Methods in the Theory of Queuing

This is a really good introduction to queuing theory that I have read cover to cover and completely forgotten the contents of because I don’t really use queuing theory on any sort of regular basis. I should reread it and see if I can figure out how to make the contents stick, because this seems like a thing I’d actually like to keep in my head.

This was one of the books I had in mind when I made the claim that short books were really good.

Totals 120 pages.

Large-Scale Inference

This is a good book about empirical Bayesian methods, false positive control, etc.

Unfortunately I’ve only read about a third of it. I started reading it when I was in my “I should learn more statistics” that resulted in my getting distracted and writing Hypothesis instead. I found the bits that I did read to be very helpful explanations of things that I still don’t entirely understand.

I guess I should reread this one too.

Totals 263 pages, so it’s heading into the territory of being a bit too large for this list.

Counterexamples in Topology

AKA “A gallery of stupid shit you can do when constructing topological spaces” or “Murphy’s guide to topological spaces”

I really enjoy topology, but this book is a nice guide to why topological spaces are not quite as intuitive as you might expect them to be if you mostly use topology to provide nicer proofs while working primarily in metric spaces. It’s got lots of weird and wonderful examples of connections you’d expect to be true but aren’t.

Unlike most of the rest of the books on this list, this one is really not for reading cover to cover and is more of a reference book, because each example only takes a page or two.

Also in the category of subjects in which my interest has waned, but if you like this subject I can recommend this book.

Totals 244 pages.

To Mock A Mockingbird

A collection of neat logic puzzles wrapped in slightly contrived stories. I enjoyed it, but other people seem to enjoy it much more than I do. I’ve always liked logic puzzles slightly less than I would expect to and much less than other people would expect me to.

Still, it’s undeniably a good book which many people really enjoy.

Totals 243 pages.

Conclusion

It turns out that I have far fewer really short books than I thought, but I still feel like I believe the thesis that (non-fiction) books whose size is in the region of 100 pages are often very good. It seems like as you approach or exceed the region of 200 pages (which is where most of these books lie) this property weakens significantly and you have enough space that they just become slightly shorter “normal length” books.

These still have the potential to be very good (and I’ve picked up a bunch of the ones listed to reread. Argh/yay), but that doesn’t feel like it’s true for any particularly interesting reasons other than that I’ve bought good books because they were good.

So I guess I’m seeking recommendations. Can you suggest good non-fiction books that total somewhere in the region of less than 150 pages?

This entry was posted in Books on by .

Review of a book that reviews (code) reviewing

In an earlier version of my recent software development advice post, I said the following:

I also think this will not significantly reduce the number of bugs in your software. Code review is just not a cost effective bug finding tool compared to almost anything else.

I appear to be wrong in this claim, if the literature is to be believed. I don’t have a strong reason to doubt the literature, and on examination I’m not actually certain why I believed the contrary (it appears to be cached knowledge), so I’m going to change my opinion on this: Code review is probably a very cost effective way of finding bugs if you do it well, and may be reasonable at it even if you do it badly.

The thing that’s updated my opinion on the subject is reading “Best Kept Secrets of Peer Code Review“, after Richard Barrell sent me a link to a chapter from the middle of it reviewing the literature.

With a couple caveats (the title being terrible definitely counted amongst them), the book is pretty good. There are two chapters worth skipping, but that’s more a function of the fact that the book is from 2006 than anything else (GitHub’s pull requests, while far from a stellar code review system, are in all ways better than what was widely available back in 2006 and for the common path probably not much worse than the state of the art).

The authors clearly have an agenda and the book is there to promote that, but that’s OK. I have an agenda too – it’s very hard to have expertise without also having an agenda in support of that expertise. And even if I believe they’re overstating the case, the case they present is reasonably convincing. It’s also refreshingly empirical – most software engineering advice is full of anecdotes and opinions and, while this book absolutely contains some of those, it’s also got a really pleasant amount of actual research backed by actual data. The data is often not of amazing quality in that many of the studies are quite small scale so the statistics are likely under powered, but that’s still a better standard of evidence than I’m used to.

It’s also pleasantly short. The whole book is only around 160 pages, and I read it over the course of an afternoon.

Anyway, that’s the review section of this post done. Now it’s time for the review section.

I have a couple take homes from this book which are currently in the state of “Plausible sounding statements that I will think about further and probably upgrade most of to actual beliefs”.

• Code review is a very cost effective way of finding defects compared to manual QA of the application – it both has a higher rate of finding them per unit of time and also finds bugs that QA were probably never going to find.
• As your notion of “defect” broadens to include things like your coworkers having no idea what you wrote down, the above statement becomes stronger.
• Code review should be done by individuals (possibly multiple individuals working in parallel) rather than teams working together. As well as being more expensive per unit time, team code review seems to be less effective in absolute terms at finding defects.
• The generally believed opinion that a 10 line change gets more useful review than a 500 line change seems to be actually true but too generous – the actual cut off seems to be more like 200 lines. It’s unclear to me whether this means 200 lines added or a 200 line diff, but I believe it means the former.
• Code review effectiveness drops off dramatically as the time taken approaches about an hour. It’s unclear to me if you can fix this by walking away from the review and coming back later. This may also be the origin of the 200 lines limit – it may be impossible for most people to effectively review code at a rate much higher than 200 lines / hour.
• Code review benefits greatly from a careful first reading of code before you do any reviewing (and doing this stage more slowly is better. Presumably this hits diminishing returns at some point).
• Code review benefits greatly from being structured with checklists.

The checklist one is interesting, and I am actually pretty convinced by it: The overall literature on checklists helping construct reliable processes seems to be reasonably convincing (but my opinion here is very trend driven and I have not actually read any primary research on this subject. It conforms to my biases about the world though, and thus must be true), and the specific data presented in favour of checklists for reviewing is moderately convincing. This is the advice that is the most likely to make an actual practical difference to how I review code in future.

The advice on checklists is interesting in particular in how it’s constructed: They strongly recommend not having just a “standard” checklist, but actively curating one over time: When something is found in review that seems like it would make a good check list item, add it to the list! When an item hasn’t found anything useful in review in a while (say 6 months), think about removing it.

Here are a couple example check list items from the book that look generally useful to me (the example list this is from is much longer):

• Documentation: All subroutines are commented in clear language
• Documentation: Describe what happens with corner-case input.
• Testing: Unit tests are added for new code paths or behaviours.
• Testing: Unit tests cover errors and invalid parameters.
• Testing: Don’t write new code that is already implemented in an existing, tested API.
• Error handling: Invalid parameter values are handled properly early in the subroutine.

There are plenty more. The book suggests that checklists should really only have about the top 10-20 items that you’ve found most useful over time (the sample checklist has 25 items, so apparently they didn’t test the invalid input case here).

One interesting thing worth highlighting is that at least some checklist items may be worth automating out of the review entirely. e.g. “Testing: Unit tests are added for new code paths or behaviours” would mostly be better handled by enforcing a code coverage metric I think.

As well as improving the quality of the review itself, the book highlights another interesting application of checklists: It doesn’t have to just be the reviewer who goes over them! Doing a sort of self review by following the checklist yourself before submitting seems to be nearly as effective at removing bugs as the review itself would be (it is unclear to me if that remains true if you skip the review altogether – my feeling is that people are likely to get sloppy at the checklist if they imagine someone is not going to be checking it later). This presumably speeds up the review process a lot by reducing the number of back and forth exchanges required to pass it.

One suggestion off the back of this self review that they made (which seems to come from the Personal Software Process world) is that as well as maintaining a global checklist for reviews it might be worth maintaining individual checklists for reviews, where people maintain their own list of things that it’s worth them pre-checking because they often make a mistake in that area which then comes up in review.

Anyway, I’m really glad I read the book. I can’t swear to its correctness, but it’s an interesting and plausible perspective that I’ll be thinking about further.

PS. If you’d like to fuel my book habit, I have a public Amazon wishlist. I’ll happily review any books you buy me…

This entry was posted in Books, programming on by .

This is the weekly reading post. It should have been published yesterday but I forgot.