Hacker News new | ask | show | jobs
by ChuckMcM 4021 days ago
I would echo the perfection/artist thing, I've known a lot of engineers and ones who are perceived as slow, are often also setting a really high bar for their code. The learning for those engineers is to develop an understanding of how good is necessary, and how good is ideal.

If you find yourself rewriting your code a lot, consider using a technique that Pixar uses for making digital films which is they work on them on sections until they are "good enough" and they put that part aside with the label "Good enough, could use improvement", until they get everything in the can, now the film is completely "done" but all of the sections can use improvement. They order those sections from most impact to least and start working through them. At any point they could just print the film and ship it, but the longer they work the better it will get. Often there are other parts of the pipeline that have to be aligned and so they will get a chance to knock off a bunch of improvements before it actually ships.

2 comments

I generally agree that it is important for a software engineer to be able to identify the quality/speed desired by the client/manager. However, I think this advice needs to be applied cautiously:

> If you find yourself rewriting your code a lot, consider using a technique that Pixar uses for making digital films which is they work on them on sections until they are "good enough"

This approach works for features where side-effects are isolated to a small part of the system (eg. UI changes). For anything major, it is worth doing right the first time. eg. A library on which other software is constructed. The mastery is in weighing up the scope and likelihood of rework that might be required in the future.

I can +1 the "good enough" approach. I write code such that it works. When I get the urge to change something (and that is a lot), I change what I have to for it to work and make a TODO comment. I rutinely parse the TODOs and reevaluate them. When the product reaches v0.9 (i.e. only bugfixing allowed, no new features) I start to look at the TODOs and work on some of them.