惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

K
Kaspersky official blog
小众软件
小众软件
Engineering at Meta
Engineering at Meta
博客园 - 三生石上(FineUI控件)
WordPress大学
WordPress大学
G
Google Developers Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V
V2EX
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Google DeepMind News
Google DeepMind News
Security Archives - TechRepublic
Security Archives - TechRepublic
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
C
Check Point Blog
aimingoo的专栏
aimingoo的专栏
罗磊的独立博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
MongoDB | Blog
MongoDB | Blog
L
LINUX DO - 热门话题
酷 壳 – CoolShell
酷 壳 – CoolShell
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
H
Help Net Security
Martin Fowler
Martin Fowler
G
GRAHAM CLULEY
Simon Willison's Weblog
Simon Willison's Weblog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - Franky
V
Vulnerabilities – Threatpost
云风的 BLOG
云风的 BLOG
博客园_首页
C
Cybersecurity and Infrastructure Security Agency CISA
量子位
Stack Overflow Blog
Stack Overflow Blog
Recent Announcements
Recent Announcements
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
I
Intezer
Scott Helme
Scott Helme
A
About on SuperTechFans
博客园 - 司徒正美
Hacker News: Ask HN
Hacker News: Ask HN
The GitHub Blog
The GitHub Blog
Forbes - Security
Forbes - Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
博客园 - 聂微东
人人都是产品经理
人人都是产品经理
The Cloudflare Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Spread Privacy
Spread Privacy
T
Tailwind CSS Blog
S
Security Affairs
宝玉的分享
宝玉的分享

Sophie Alpert

There are no lossless transformations of natural-language text Deconstructing “services” I don’t want AI agents controlling my laptop Materialized views are obviously useful TODOs aren’t for doing Everyone is wrong about that Slack flowchart Hire me to empower and upskill your eng team How React Changed the Web Forever: A Documentary Fast and maintainable patterns for fetching from a database React Conf: “Building a Custom React Renderer” Why review code? Metrics by proxy Voice React Conf: “React Today and Tomorrow” Why we host conference talk dry runs React Podcast: Inside React Type errors with inference need stacks Observable programming React 16: an API-compatible rewrite Hi, I’m trans. Initializing on the main thread using dispatch_once A near-perfect oninput shim for IE 8 and 9 Using React to speed up the Khan Academy question editor What I did at Khan Academy, 2012 edition Preventing XSS attacks when embedding JSON in HTML Rolling back to an old revision in Mercurial (like git reset)
Yak shaving and fixing
Sophie Alpert · 2018-12-03 · via Sophie Alpert

I have a niche at work: I like to fix stuff.

I’m not as good at big, long projects or at writing lots of code from scratch. But this works well for me. I especially like when there’s something Big and Important that’s super broken and needs to be fixed Really Soon — I can really get into it. (The adrenaline helps. I’m a competitive person so I like racing to see how fast I can find the fix.)

My strategy here for being useful is different from what most people do but it works well for me. I think there are a few elements that contribute to making this be a success.

I know everyone always says that yak shaving is bad, but I’m not so sure. If I’m trying to use some tool we’ve built and then I notice that it’s buggy in an annoying way, I often sit down to fix it. Or if the build system for whatever I’m working on is borked, is it a good idea to try to fix it for the next person or just work around it and leave it broken?

Conventional wisdom seems to suggest that I shouldn’t dig in and fix it. It’s probably true that my immediate goal would happen a little later. But I don’t think that anyone else (including future Sophie) will ever feel as motivated to fix the annoying bug as much as I am in the moment that I hit it. And I’m making everyone else’s experience just a little bit better when I do these fixes. One way I often like to think about behavioral questions is this: if everyone followed in these footsteps, would it make the whole organization (or community) overall better or worse? (Is it OK to tailgate when driving? No, because if everyone did then driving would be a hellish nightmare, plus traffic would be worse.)

Here, I think the answer to “Would we collectively get more done if we all stopped to fix bugs in infrastructure and tools when we hit them?” is a clear yes. Because our tools would get so much better, practically overnight — and in turn that would speed us up. I personally fix lots of small stuff in our tools and I think even my contributions alone have made a small but significant difference. (I use the word “tools” loosely. At work, we use Facebook for work communication, so even bugs in Facebook can be an excuse for me to do this and fix quirks. Being able to fix stuff yourself instead of waiting for someone else is one thing that is nice about working at a company that builds most of its own internal tools.)

To be able to fix effectively, you gotta be willing to dive into code that you didn’t write. And into lower layers of the stack than you might be used to. I’ve gotten pretty good at this. I wish I knew how to teach it. Mostly I think it takes a lot of practice. And it gets easier the more you do it: so often when I’m fixing something, I’ll lean on knowledge that I got from a previous fix I made. If you’re newer to doing this, I’d just suggest you persevere: there is always a logical explanation for why a computer is behaving in a certain way, and you can find it if you dig enough.

Finally: if you spend some time chasing a bug then give up, that’s OK too! You probably learned something in the process, and you can always fix the next one.