tl;dr:“If you’re not making a narrow technical point, you should avoid making narrow technical claims. Arguments about technical details are the absolute worst way to persuade another engineer to do something for you. If you get them on your side, you can work out the technical details together. If they don’t believe in your mission, you’ll never convince them by proving that they’re wrong about the technical points. Even if you succeed, some engineers will be so resentful about being comprehensively proven wrong that they won’t want to help you anyway.”
tl;dr:"Also unlike most popular advice, this post is for people who are already competent software engineers, not less-technical people looking to vibe code a working app. They’re techniques I use daily as a staff engineer at GitHub. I use Copilot for most of this stuff, but the techniques are tool-agnostic: you can use anything that exposes a chat interface."
tl;dr:“It’s harder to be a software engineer now than at any time in the last decade. The good times in tech are over, at least for now. It’s not just a tough job market, but a tough environment for already-employed software engineers. What can we do about it?”
tl;dr:“It’s harder to be a software engineer now than at any time in the last decade. The good times in tech are over, at least for now. It’s not just a tough job market, but a tough environment for already-employed software engineers. What can we do about it?”
tl;dr:“What defines a strong engineer is the ability to do tasks that weaker engineers can’t, even with near-unlimited time. But what are the concrete skills or traits that make up that ability? What is it about strong engineers that makes them able to do a much wider range of tasks? In order of importance, I think it’s self-belief, pragmatism, speed, and technical ability.” Sean elaborates on these qualities.
tl;dr:“What defines a strong engineer is the ability to do tasks that weaker engineers can’t, even with near-unlimited time. But what are the concrete skills or traits that make up that ability? What is it about strong engineers that makes them able to do a much wider range of tasks? In order of importance, I think it’s self-belief, pragmatism, speed, and technical ability.” Sean elaborates on these qualities.
tl;dr:“I have delivered a lot of successful engineering projects. When I start on a project, I’m now very (perhaps unreasonably) confident that I will ship it successfully. Even so, in every single one of these projects there is a period - perhaps a day, or even a week - where it feels like everything has gone wrong and the project will be a disaster. I call this the valley of engineering despair. A huge part of becoming good at running projects is anticipating and enduring this period.” Sean discusses how he tackles this phase.
tl;dr:“The principle here is something like the psychological trick door-to-door evangelists use on new converts - encouraging them to knock on doors knowing that many people will be rude, driving the converts back into the comforting arms of the church. It’s even possible to imagine AI models deliberately doing this exact thing: setting users up for failure in the real world in order to optimize time spent chatting to the model.”
tl;dr:“Personally, I feel like I get a lot of value from AI. I think many of the people who don’t feel this way are “holding it wrong”: i.e. they’re not using language models in the most helpful ways. In this post, I’m going to list a bunch of ways I regularly use AI in my day-to-day as a staff engineer.”
tl;dr:“Personally, I feel like I get a lot of value from AI. I think many of the people who don’t feel this way are “holding it wrong”: i.e. they’re not using language models in the most helpful ways. In this post, I’m going to list a bunch of ways I regularly use AI in my day-to-day as a staff engineer.”