As someone learning how to program as both a hobby and a class requirement, a major thing that comes up is the ability to reuse something you’ve done. That is to say, to write code that can only does one specific thing, once, is not very efficient. For you, or for people attempting to build upon your work. To give an example of this, over the summer I used “R” to construct linear regressions of climate data. Part of this involved trying different kinds of linear regressions for a months worth of data, for all the months. That meant making 5 regressions per month, or 60 regressions per year. It would be insane to individually write this, or to call an identical for loop for each region that was being studied. So I built a couple functions that would generate the regressions and then plot the data with the regression. Then I just called that for each region.
The tedium of making this “work-all” and more general purpose (but still highly specific) tool made doing further work in that field easier. Almost nothing being made had a single purpose. It would be rewritten to be generally applicable for the same process, if the process was being re-run. That isn’t even a great feat, and the tools being made were still basically useless outside of what I was doing. But it just doesn’t make sense to spend a bunch of time making this one thing that does absolutely one thing.
This comes up in life often, when looking at how many things are produced for highly specific purposes and their possible utility ignored. From the ubiquitous single use plastic wrappers to automatic tie racks, many things are designed with one use in mind. Tools and objects are created to be bought, used, and tossed. Generally within a matter of days. It’s incredibly wasteful. An old boss of mine one day said, “Have you seen how much wrapping is on a single flash drive? There’s a ton of paper and plastic to get a tiny bloody thing.”
It doesn’t take much to fill a sheet of paper with the amount of items that are used and discarded, and never touched again. An artist friend of mine walked around with all the trash he generated for the week in a large garbage bag. It turned into 2, and was filled mainly with empty coffee cups, cigarette packs, and beer bottles. The first and third item on that list could be transported in reusable containers, quickly reducing the amount of waste produced.
This idea, to me, is paralleled with another issue: That of making things so general that they lose their specific purpose, and their identity as an object. Take a poorly made multi tool – Sure it has a ton of stuff including a corkscrew, but when will you use a cork screw on your utility knife?! Maybe I am speaking from ignorance of necessity. You get this item that tries so hard to be useful that it is useless.
I recall this coming up with some software, but can’t recall it at the moment. If you have any examples of this with software, please shoot off an email or leave a comment!
This is not to say that either general purpose tools or specific tools (think of a single head screwdriver) are inherently bad. This is to call for tools built to last, built to be learned and reused, built to help the user. Not built to break or tossed away after one use. Not built to sit in a box, waiting for the next time someone needs to tighten the screws on the bed frame.
This is a call to consider the materials around you as part of your life, to bond with the people and things in your life. Not to find solace in materials, but to understand that items are not useless, not one-time throwaway junk made by some faraway factory. Take pride in what you have, and take care of it. Take pride in what you make.
And stop throwing away so much stuff!