I’ve been curious about the meaning of the phrase “from scratch” recently—especially as it pertains to technology. We don’t really use the phrase in tech, except perhaps to describe the “reinventing of the wheel.” That said, I was curious what others thought about it.
Table of Contents
- Classroom Activity
- Drawing a Parallel to the Real World
- Making a Program From Scratch
- Gaslight, Gatekeep, Girlboss
Classroom Activity
Recently, I was introducing the idea of abstraction to my students. Inevitably, this concept leads to the idea of layering, where one piece of technology is built on another.
As a part of introducing this idea, I had the students pick out some technology that they use regularly. There were a variety of choices from laptops to phones to video games. Once they figured out what tech they use, I asked them to see if they could describe what’s “under-the-hood”. In other words, how do these pieces of tech actually work?
This discussion worked well, but I wanted to link the role of the software developer more explicitly. So, I reframed the question as: imagine you were developing this piece of technology, how would you do it? Naturally, this conversation led to all the tools “under-the-hood” for tech like video games and TikTok.
By the end of the day, I had run this activity about three times, finally honing in on a good flow in the latest class. By that point, I was introduced to this idea of “building something from scratch.” After all, the whole point of abstraction is to layer your work on work that already exists. No one builds a video game from scratch, right?
Drawing a Parallel to the Real World
When folks use the phrase “from scratch,” my mind immediately goes to baking. For instance, you often hear people ask, “did you make these muffins from scratch?” Of course, what I think this means in the context of baking is making the baked good from the base ingredients (i.e., nothing is prepared ahead of time). But, is that really from scratch? I have to imagine that most folks buy their ingredients from a store. They don’t farm them. In that case, is it really from scratch?
Then, we sometimes hear the phrase in other contexts. For instance, the phrase is sometimes used to refer to businesses that are built from the ground up (i.e., no initial investments, no starting capital, just labor). But, of course, this is also a sort of silly phrase in that there are really no self-made business folks. Not to go on some leftist rant, but businesses require labor and customers, not to mention knowledge and skills which are unlikely to be completely self-learned in isolation. Hell, they probably used roads, right?
All of this is to say that the phrase “from scratch” requires a line to be drawn somewhere. In other words, at what point does a creation become “from scratch”? I’m not sure I know, but I did pose this question to my students out of curiousity.
Making a Program From Scratch
When I posed the idea of making a program from scratch to my students, it seemed that a lot of students felt like assembly would be the line. In other words, if you can create something using just assembly, then you’re some tech wizard.
Of course, assembly itself is an abstraction. You can program without it, you just need to know how to write machine code. But, you’d likely still be making use of various modern interfaces like a keyboard, a mouse, and a monitor. In fact, you might even be using an IDE.
So, maybe you go back to the days of punch cards, and build a program that way. Or, perhaps you even build your program using hardware only, like the old days with the Atari or the old arcade games.
Of course, even hardware at that time was already abstracted. There were chips with particular functions, like registers and microprocessors.
So what do you do? Do you create your own memory from scratch? Do you build your own processor from scratch? I don’t really think anyone is doing that anymore. The components are just far too small to assemble without incredibly expensive tools. Though, I know folks build basic logic systems with hardware (even just mechanical hardware) and even simulate them in software.
Then, at a certain point, you would have to actually become a wizard, so you could move electrons at will. Perhaps then, you could argue you built a program from scratch.
Gaslight, Gatekeep, Girlboss
All of this is to say that I never intended for the conversation around completing tasks “from scratch” to be around gatekeeping. Whatever level of abstraction you choose to work with is entirely up to you, your interests, and your career goals.
I personally can’t stand anything really lower level than Java, and I much prefer to be in Python land with all my excellent tooling. That said, I know a lot of folks who love systems work and would rather have the power and control to manipulate memory.
All of that is to say, do the work you want to do, and don’t make it your entire personality to shit on others for their preferred level of abstraction. You are not better than anyone because you use C and Vim. If that really mattered, everyone would be building their own computing systems “from scratch.”
As usual, thanks for taking the time to check this article out! If you enjoyed this, you can have a laugh at another article I wrote with “from scratch” in the title. Alternatively, here are some other solid articles that call into question some of the elitism in tech:
- There Is No Value in Ranking Programming Languages: The Cost of Gatekeeping in Tech
- Who Gets to Decide What Is and Isn’t a Programming Language?
- What is a Programming Language?
And finally, here’s the link to my ways to grow the site! You’ll find a variety of resources there like my Discord, Patreon, and YouTube. Take care and see you next time!
Recent Posts
Recently, I was thinking about the old Pavlov's dog story and how we hardly treat our students any different. While reflecting on this idea, I decided to write the whole thing up for others to read....
In the world of programming languages, expressions are an interesting concept that folks tend to implicitly understand but might not be able to define. As a result, I figured I'd take a crack at...