Paradigms matter. The Pythagorans killed the discoverer of irrational numbers because they didn’t fit within their world view. The Romans had a numerical system that was actively antagonistic to arithmetic, and made no significant mathematical discoveries. The Arabs, on the other hand, had much the same numerical writing system as we use today, developed the […]
Category Archives: Performance
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 […]
TripAdvisor has been growing ever since I joined almost five years ago. In that time we’ve gone from around 80 to 200 engineers, and occasionally I’ll be asked in an interview whether I’m concerned about how fast we’re growing. The thing is, I’ll reply, there are two ways to scale an engineering organization – fast, […]
I screw up, all the time. Mostly little stuff, but sometimes not. Most of the time I’m letting myself down – not working out when I’d planned, snacking at work, staying up later than I should because I’m surfing the internet (do people even call it that anymore?). Nothing, though, equals the gut-churning feeling of […]
Dear _____, Welcome to the team! We’re very excited that you’re finally here. Here’s your desk, your MacBook Pro, your Linux workstation, monitor, etc. etc. Of course, get whatever keyboard you want (this one is surprisingly popular), and let me know if you need any other equipment. Most people use Eclipse, but feel free to […]
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 […]
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 […]
Broken code gets fixed; poorly-designed, hard-to-maintain, not-quite-bad-enough-to-refactor code is left alone. Modifying it is like placing a rusty fork a centimeter away from your eye – impossible to ignore, emotionally painful to endure, and something you try to make end as quickly as possible. The code is harder to understand, easier to break, more frustrating […]
You are a water-filled sack of flesh, your actions and decisions largely determined by the multiplicity of hormones, chemicals, and nutrients coursing through your body. And no, I’m not just talking about teenagers, with their “raging hormones.” I’m talking about you, a rational, reasonable, experienced, mature, highly organized, professional adult. You are at the mercy […]
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 […]