My New Favorite Programmer

Recently I discovered a Rubyist by the name of Ben Orenstein and today he is my Programmer of the Day and my new favorite programmer. He currently works for Thoughtbot in Boston. He didn’t invent Rails or the first compiler, but I think he’s a good programmer to look up to and learn from because he’s a great communicator who understands that there are real human people in front of the computer screens. A lot of his work so far has also focused on people who are new to programming, so for a new programmer like me, I find most of the things he’s got out there to be really useful.

Ben Orenstein


“To become a better programmer, one should practice like a musician.”

On Chad Fowler:

“Chad puts the ramming back in programming.”

On presenting:

“It is more important to be entertaining than informative.”

“People like stories. People especially like stories if they’re about you and they’re embarrassing. And programmers especially like stories if they’re about code that you wrote that’s worse than their code.”

“If all else fails, plant a nodder.”

On salary:

“If you ask for something, and you get more, oh my god did you blow it. If you ask for something and you get it, you blew it again, actually. If you ask for something and they say no — yes, you got it.”

“Start with your closest friends at work, and be like, Hey, I think we should both do this thing where we tell each other how much we’re making, and I think it might help both of us.”


Ben gives great presentations, and this is what first caught my attention. Here are the ones I was able to find (there are also a few different versions of some of these out there):

My favorite is the first one in this list on how to give presentations. I plan to steal most of his tricks for my own presentations. What’s so interesting about it is that it’s so obvious — it’s classic showmanship. But it’s also such a different approach for a technical talk because it’s human-centric. As a programmer, it’s sometimes easy to forget that the whole point of programming is to impact real humans and that creating software is a social exercise. There are people on both sides of the screen. Ben applies this philosophy to technical presentations, recognizing that there are people in the audience, and people get bored and tired, even developers. You’ll often see tips like “it helps to include a cat picture every fourth slide,” which is good advice, but Ben goes so much farther with this same basic idea of being entertaining. Another reason Ben’s talk is so great is because he uses real actually useful mini-talks to demonstrate the techniques he talks about. Just a great presentation overall.

Ben also has good advice for how to get your conference talk accepted. Prior to RailsConf 2010, he had never given a talk at a big conference before and was unknown by the conference organizers, but because of his enthusiasm and his ability to communicate well and quickly, he was accepted. Chad Fowler talks specifically about this story here: How to Get Your Conference Accepted.

Ben’s blog is also filled with posts like these – succinct, practical advice on a variety of topics relevant to new programmers. Every time I go to his blog, I end up reading and rereading bunches at a time.

Some sample posts:

40-Minute Conference Talks Should Die Simple Rules for New Programmers
Thoughts After Coaching 12 Rails Developers How to Sell a Hundred Screencasts
Programmer Resumes are Deprecated 2011 Boston Rails Developer Salary Survey
Screencast: Watch Me Patch Some Rails Code Don’t Use Rails’ Scaffolded Controllers
How To Land a Rails Job with No Experience

Tool Sharpening

Ben Orenstein is a bit like Rails, in that he’s got strong opinions on the right way to do things. On a recent Ruby Rogues podcast he came on to talk about tool sharpening. He is an obsessive optimizer and tries hard to eliminate unnecessary keystrokes, for productivity reasons as well as personal health reasons. To that end, he said he spends a bit of time every day working on his environment and workflow. While at the Flatiron School, I’ve had a little bit of the same mindset; I’ve had to learn bash, git, Ruby, Rails, Javascript, and be a beginner in all of these things at the same time. This means that, on most days, at least some portion of my day is spent learning new keyboard shortcuts or better file system management patterns or finding new plugins for my editor. I don’t have quite the same structured approach to tool sharpening, but just by necessity I have been slowly expanding my toolset and trying to optimize.

Ben is a big fan of Vim, and this day-by-day approach is perfectly suited to learning and optimizing Vim. One of Ben’s suggestions on this topic is to grow your own .vimrc. In this approach, instead of grabbing a popular set of commands and shortcuts like you would find in Janus, you slowly add things as you need them. This requires you to devote some time to tool sharpening on a regular basis, but in the end you will have a tool that’s much more personalized. Most importantly, you will understand and probably make use of each piece you add. This makes a lot of sense to me and as such I’ve planted a few seeds in my .vimrc garden and tried to learn a bit more every day.

Another really cool thing that I have adopted via Ben is this bash function:

$ history | awk '{print $2}' | sort | uniq -c | sort -rn | head

This lets you see your most used bash commands, so you can track exactly what is costing you the most time and what you need to make aliases for. Right now I see that git and rake are my top bash commands, by a pretty wide margin. So now the next time I use those commands I will think about how I can write an alias for them.

Barbershop Quartet

And now, without further ado, here is Ben kiling it in a barbershop quartet (second from left, the low voice):

They won the 2013 Northeastern District Barbershop Harmony Society Contest.

And that’s Ben Orenstein. A respected Rubyist, great presenter, multi-talented gentleman, and my new favorite programmer.