Scratching “From Scratch”

by Cosmo Catalano

From openings I’ve seen and interviews I’ve been to, there seems to be something of a fixation on coding things “from scratch”.

It’s as if hiring managers had stumbled across a WYSIWYG one day, realized that *gasp* applicants might not have written all the code in a website themselves, and issued a dictum that all future candidates for positions must be able to code things “from scratch”.

Ignoring the fact that WYSIWYGs seldom deliver decent (or even passable) results in real-world use, I think the line of questioning is ultimately self-defeating. While it can be accomplished solo, serious web development is almost always a team effort. Whether that team consists of co-workers delegating various scripts amongst themselves, or a worldwide community building a framework that saves time and hassle, is kind of irrelevant.

Too often packages like Rails and WordPress are viewed as crutches—and they’re not. They’re powerful foundations that integrate the distributed skill and experience thousands of developers from millions of websites. They eliminate redundant work, incorporate best practices, and avoid the early-stage gotchas that can lie dormant and cripple a project months down the line. I love to build things from blank files, but that just isn’t how serious, complex websites begin anymore.

Then there’s the question of what qualifies as “scratch”. I have my personal definition of the term, but it wouldn’t be hard to argue that I’m standing on the shoulders of a ton of other developers who conceived of and refined the programming languages I use.

There’s also the http software I didn’t write, running on the operating system I hardly use, all installed on the server infrastructure I didn’t configure. If you push the term back to the hardware level, it’s safe to say no one has ever built a website “from scratch”—not too many developers mining, refining, and extracting their own tantalum these days.

Rather than “from scratch”, I think we should adopt the term “de novo“. It means “starting afresh”, or in respect to algorithms, starting again a the beginning of the loop. Because I think the idea behind the “from scratch” question—especially as it’s used in job interviews—isn’t so much to determine that the applicant built the entire website, but that they could, from the same starting point, create an entirely different product that works just as well.