Resources

A personal thanks in my software journey and team mentality goes to:

I wrote this after a conversation about what resources might be appropriate for ‘levelling up’. These are the resources that have shaped how I think about software, and I hope they can do the same for you. This is by no means an exhaustive list, but it might be a place to start.


Dev Readings

TitleAuthorRatingNotes
The Pragmatic ProgrammerDavid Thomas / Andrew HuntAOne I go back to
Tidy FirstKent BeckAMight be basic for seniors, could be a good place to start for juniors. Economics of software development chapter is worth this book alone.
Refactoring (Ruby edition)Jay Fields / Fowler / BeckA
Design PatternsGang of FourAThe Blueprints, but I’d probably recommend saving this one for last.
Domain Specific LanguagesMartin FowlerCGood reference for vocabulary — but these feel natural in Ruby. There’s better Ruby-specific resources online.
Domain-Driven DesignEric EvansBThis thing is dry. But it inspired a lot of Rails. Which is funny, because now purists suggest Rails doesn’t take this far enough — Shopify take this to an nth degree.
Patterns of Enterprise Application ArchitectureMartin FowlerA”Enterprise” gets a bad wrap. The philosophies here are true for any large app.
POODR / 99 Bottles of OOPSandi MetzAPick one, not both. One’s a reference, one’s more a guide. Recommend prioritising this one.
Patterns of Application Development Using AIObie FernandezCHas some decent ideas but most of this has already become common talk online.
The Phoenix ProjectGene Kim, Kevin Behr, George SpaffordBDevOps focused. Draws an interesting comparison with the factory line.

Talks

TalkSpeakerNotes
Solid OOPSandi MetzThe config example in this talk alone is brilliant.
Polly wants a MessageSandi Metz
Magic Tricks of TestingSandi Metz
Railway Oriented ProgrammingRyan Biggs
Hammock Driven DevelopmentRich Hickey
Nothing is SomethingSandi MetzNull objects.
All the Little ThingsSandi MetzProbably her most famous talk. A good start if you haven’t seen her before.
Workflow for AI CodingMatt Pocock

Team Readings

TitleAuthorRatingNotes
MultipliersLiz WisemanA
The Five Dysfunctions of a TeamPatrick LencioniA
The AdvantagePatrick LencioniB
Silos, Politics and Turf WarsPatrick LencioniBMore important depending on the org you’re in.
The Four Obsessions of an Extraordinary ExecutivePatrick LencioniBEven if junior, understand how the C suite might think.
Extreme OwnershipJocko Willink / Leif BabinB
Diary of a CEOSteven BartlettCThe book. Not the podcast.

Blogs

Podcasts

TitleRatingNotes
Ruby on Rails PodcastB
Ruby RoguesC
The Pragmatic EngineerAThis has a blog/newsletter which is arguably more popular.
GoTo PodcastAUsually conference talks.

Libraries & Tools

Rails

Read the internals.

ActiveAdmin / Avo / RailsAdmin / Administrate

Pick one. Learn abstract resource management.

Sorbet (runtime library only)

Has some impressive meta programming tactics. Decorators/annotation like this programming isn’t common in Ruby, so it’s interesting to see an implementation.

Dry Rb

Monads is the key part — they make railway programming a breeze. The recent additions for the railtie and allowing a better schema for params looks really interesting though.

Flog / Flay / Reek

Understand ABC metrics, similar code structure and code smells. The easiest way to start improving code quality in a way that’s measurable. RubyCritic wraps this all up for you.

View Components / Phlex

Subjective, but the view layer in Rails is one of its weakest links. These are a step in the right direction.


Wild Thoughts

I love Rails, and DHH, 37s and the community have built an insanely awesome framework. In the same breath, I am personally not amazed by their products (basecamp/hey). I say that as a hey user.