I've known Greg Brown for about a decade. In that time he's consistently been one of the most thoughtful software developers I know. And not about silly things, like where curly braces go, or the difference between agile and devops. Greg thinks about the big issues, like how to make people humane programmers; how to think through the problems the software's users actually have; how to teach and mentor new developers; how to maintain work-life balance.
Greg has always been able to come up with a crazy idea and make it work: for example, getting people to donate enough to fund him to write Prawn, a badly needed PDF generation library for Ruby. Getting people to commit to the Ruby Mendicant University, still one of the most inventive experiments in programmer education. Getting developers to attend a virtual coding retreat on Slack. He's someone who, in a very modest and understated way, manages to push the conversation ahead in ways that are good for the people around him.
That's why I'm excited by Programming Beyond Practices. Not because it's yet another book on programming methodology, but because it isn't. It's a thoughtful exploration of how software gets developed, from the prototype onward. What is this activity that we call writing software really about? What role do the customers and users play in the software that we're allegedly writing "for" them? How do we serve their interests?
When Greg and I were first talking about this book, one of us said "it's sort of like The Pragmatic Programmer for a new generation." With apologies to Dave Thomas and Andy Hunt, it is. And it's completely different. It's not so much about the programming as it is the context in which the programming takes place: stakeholders, libraries, vendors, data. Dave and Andy taught us how to program well; now it's time to get beyond programming practices and develop the human side. As Greg writes:
My fundamental belief is that programmers are no less concerned for human interests than anyone else in the world; it's just hard to make that your main focus in life when you spend a good portion of your day chasing down a missing semicolon... And my great hope is that if we fight against the influence of our rough, low-level, tedious tools and gradually replace them with things that make us feel closer to the outcome of our work, then our tech-centric industry focus will shift sharply and permanently to a human-centric outlook. ... Take the actions today that will give you the reputation tomorrow that you'll be proud to have.
That's where programming meets the real world.