All programmers are forcing their brains to do things brains were never meant to do in a situation they can never make better, ten to fifteen hours a day, five to seven days a week, and every one of them is slowly going mad.

Six Months of Git Commits

Once upon a time I saw an interesting tip, implemented it on one project, then forgot about it.

Today I found a mysterious folder full of selfies in my work Mac.

Proper Interview Questions

Puzzle or trick questions have their place1, and coding toy implementations of complex data structures can be useful2, but I’m not sure either tells you much about a potential hire besides their ability to Google3 and cram for an interview.

As much as non-IT management4 may want to treat software development as a plug and play endeavor, and developers as interchangeable parts, it isn’t and they aren’t.

Software development is a craft, and perhaps the most important measure of a craftsperson is "are they trying to get better at their craft"?

To wit:

  1. What development related book or books are you currently reading?
  2. What’s your Github username?
  3. Are you active in any user groups?
  4. What’s your favorite text editor?
  5. What’s your favorite language or tool for automating tasks?
  6. Has a programming language ever changed the way you think about an entire class of problems?
  7. Has a programming language ever made you smile?
  8. What was the most thought provoking software development article you read or presentation you watched in the last six months?

If you’re not already asking questions like this, sprinkle a few in with your usual ones next time you interview someone.

You’ll see some blank, or even confused, looks—*sigh* you’ll get a lot of blank and confused looks, unfortunately.

That’s okay. Assess their other skills in whatever way you can, and if you like what you see, put them on the Maybe list.

Every now and then, though…

You’ll see something else.


Not only will they have answers, but they’ll have enthusiasm.

It’ll be as if they are glad you asked the question, and not in that stilted “I’m glad you asked that” way everyone thinks they’re supposed to be in an interview.

No, it’ll be the full on, eyes laughing, infectious across the table, "HAVE YOU HEARD THE GOOD NEWS ABOUT FUNCTIONAL PROGRAMMING?", genuine delight that someone appreciates their love affair with their craft.

Find a place for that person. You’ll be glad you did5.

  1. In the nearest recycling bin. 

  2. Provided you’re in the toy data structure sector. 

  3. Which is a valuable skill, but you don’t really learn anything about it, either. How much Google-fu does it take to type “interview questions” in a search box? 

  4. Plus a dismaying portion of IT management. 

  5. Of course I’m oversimplifying (have you seen the rest of this blog?). You don’t want this person if they’re completely devoid of people skills, likewise if they’re so in love with their craft that they’re only suited for ivory towers, but the former will reveal themselves in the interview process and the latter are rare and unlikely to be interviewing with you

The whole point of learning new things is to learn new things. Please, if you find yourself looking at something and scoffing and saying “Well, it’s not like this other thing that I’m comfortable with”, then say “GREAT!” If you find yourself outside your comfort zone then you’re doing it right.

[T]o be a hacker you have to get a basic thrill from solving problems, sharpening your skills, and exercising your intelligence.

If you aren’t the kind of person that feels this way naturally, you’ll need to become one in order to make it as a hacker. Otherwise you’ll find your hacking energy is sapped by distractions like sex, money, and social approval.

For the want of a :w

For the want of a :w, the save didn’t happen
For the want of a save, the auto-reload was meaningless
For the want of an auto-reload, the fix didn’t deploy
For the want of a deploy, the developer saw no change in the browser
For the want of a change in the browser, the developer killed the server instance
For the want of an server instance, the REPL could not introspect
For the want of introspection, the REPL was killed
For the want of a REPL, the developer scoured the web in vain
For the want of help from the web, the developer restarted the REPL and server, only to find nothing had changed
For the want of change, the developer quit his editor
For the lack of unchanged buffers, the editor refused to quit
For the lack of his editor quitting, the developer realized his error
And that it was all for the want of a :w

Pump Up That Reading List

Go watch David Nolen’s Everything I Have Learned I Have Learned From Someone Else.

Don’t worry about keeping track of the citations you want to read, because I’ve already done that for you.

That feeling when you fire up vim .bashrc1 to add a utility function, only to find that you’d already added (and forgotten) it.

  1. Of course I actually type a much shorter alias.