Hackers and Software Engineers

Hackers are cool. Described and celebrated by luminaries such as Eric Raymond and Paul Graham, they’re the self-styled “rock stars” and “ninjas” of the industry. Indeed, who wouldn’t want to be the next Wozniak, Torvalds, Carmack? Who wouldn’t give their right shift key for entry into The Guild? Hackers are min-maxers – working late into […]

Mastery

This is the fifth part in a series about achieving mastery as a software engineer. The first part described senior software engineers. The second part discussed common flaws that could derail one’s growth. The third and fourth parts got as specific as possible about the skills you need as you develop, from junior, to mid, to […]

Intermediate Mastery

This is the fourth part in a series about achieving mastery as a software engineer. The first part described senior software engineers. The second part discussed common flaws that, quite apart from coding skills, could undermine an engineer’s professional and personal growth. In the third part I got down to business and talked through the foundational […]

Disaster Movies

In every disaster movie you’ve ever seen, there’s a key transitional moment when the characters change from believing that they can go back to the way things were, to accepting that the old world is gone. Up until this point they’ve been fighting a losing battle, frantically trying to shovel back the tide, and it’s […]

Mastering the Basics

This is the third part in a series on what it means to achieve mastery as a software engineer. The first part described senior software engineers, the second part discussed common flaws that, quite apart from coding skills, could undermine an engineer’s professional and personal growth. In this post, I’m going to try to get […]

Questions I Want to Ask, but Can’t

The perfect interview coding problem is one that will be easy for a great candidate, hard for a good candidate, and impossible for everyone else. Unfortunately, most of the problems you come up with are going to be way too hard, and will have to be thrown away. It’s great if a candidate gets one […]

Staying Technical

We used to see them all the time, before we knew the signs and started to avoid them. Engineers who had moved into management, turned architect, been CTOs and VPs for so long they didn’t know how to program any more. Long-time technical managers. Directors of engineering. And then, of course, at some point you […]

Hard Problems

I interview a lot of software engineers, and people (especially college seniors) frequently tell me that they want to work on “hard problems.” When I ask them what they mean, they generally talk vaguely about doing something algorithmically challenging on the back-end, maybe related to machine learning, natural language processing, or big data. They don’t […]