10 ms·
I completely understand the desire to build something practical that's your own. I just built a small web application framework that I can build some basic per
by arpyzo 6y ago
I completely understand the desire to build something practical that's your own.
I just built a small web application framework that I can build some basic personal apps on top of. Just like the author's, it's "shitty". It lacks features, doesn't handle edge cases, isn't particularly secure or performant.
None of that matters. It's locked up behind HTTP authentication and it's for my use only. It has exactly the features I desire, and none that I don't. I understand it top to bottom. It was fun to write and extend. It serves my needs perfectly. I didn't have to fight with, or conform to someone else's notion of how software should be built.
- crdrost 6y agoI wish I could upvote this multiple times. You go into any experienced woodworker’s shop, you can divide it into maybe 20% of the tools that see the vast majority of the action—table saws, band saws, milling machines, proper hammers. But then there is a halo of 60% or more of the things there are little helpful things—doodads, mallets, jigs, often even shelving and work surfaces—such that she uses a bunch of these on any build she undertakes, and she made them herself. “Why would I stumble around with someone else's mallet when it’s about the same cost and about half a day’s work to machine my own mallet down in a router that has exactly the weight and shape that I like it to have? Pays for itself.” We are so far from this ideal. All of our software breaks because we imported left-pad and somebody unpublished left-pad. Wasn't even a world changing perfectly V8-on-x64-tuned performant version of left-pad, but we gotta “not reinvent the wheel.” I don't think we do it for no reason, there is something about software itself right now that is amateurish. We’re still writing subroutines working on data structures; our brains are FORTRAN even if we call it Java, and whatever that is makes it really hard to decouple the tools that we are using to build software from the final outcome that has been built. The woodworker has a sense of the “shape” of the artifact, we routinely build the equivalent of gorgeous wooden tables that start spewing garbage onto their shiny surfaces after three weeks unattended, “oh, I didn’t realize that the built-in trash chutes could get clogged.” Wait—what? “Yeah, we allocate more wood at the bottom of the table to make up for the wood that we remove at the top of the table every night so that the surface is always clean.” Your user doesn't clean the table? “Hahaha you’re silly, users could not possibly have the technical knowledge to keep anything clean, they are not trained in sponges, and I especially could not trust the with something as beautiful and delicate as this table.” The problem has a beautiful sort of fractal quality to it, every zoom-in is more WTF.
- abiogenesis 6y agoObligatory: https://xkcd.com/2347/ https://xkcd.com/2347/
- 411111111111111 6y ago"don't reinvent the wheel" is specifically for projects which other people will be forced to maintain. You can reinvent the wheel as many times you want. If you however do that at work, your colleagues and your replacement after you left the job likely won't think too kindly of you.
- jraph 6y agotrue, but it is a balance. If you import packages for things that can be done in one small function, you force them a lot of dependencies, which can be worse.
- tutfbhuf 6y agoI think that developers, albeit knowing about "don't reinvent the wheel", will do it nonetheless. I think psychological factors play a role here, like the "IKEA effect": > The IKEA effect is a cognitive bias in which consumers place a disproportionately high value on products they partially created. The name refers to Swedish manufacturer and furniture retailer IKEA, which sells many items of furniture that require assembly. A 2011 study found that subjects were willing to pay 63% more for furniture they had assembled themselves, than for equivalent pre-assembled items. https://en.wikipedia.org/wiki/IKEA_effect https://en.wikipedia.org/wiki/IKEA_effect I think this effect also applies to developers. They tend to value self-written applications subconsciously higher than "pre-assembled" applications.
- vbezhenar 6y agoI value self-written applications consciously. Because I know everything about them, I can quickly change everything, adapt it as I need, fix any issues. That's not true for other applications and might be impossible for proprietary ones. I don't think that this is the same about Ikea, though. If I bought Ikea table, I can't really adapt it, unless I'm advanced woodsman with proper tools. If I'm just ordinary guy with screwdriver, I can just follow the script to build that table. I think that Ikea analogue is someone building his vim environment from other's plugins following guides. He does not know C, so he can't hack vim, he does not know vim configuration language, so he can't hack plugins.
- Donckele 6y agoIs there a better word than “shitty” - slightly more positive, more positive, something not totally crap, more fun and whole lot of learning.
- clubdorothe 6y ago"mvp"
- matthewmayer 6y agoHacky
- CGamesPlay 6y ago"bespoke" is probably the one you'd want to use.
- munificent 6y ago"Bespoke" implies made to order for someone else. I would just use "personal".
- bonzini 6y ago"minimal"?
- jraph 6y agopositively shitty. err...
- Izkata 6y agoPurpose-driven? Custom? Personal(ized)? Custom-made?
- otikik 6y agoThe thing is, I really really like the word "shitty" here. Because, let's face it, most software out there (especially most software built by individual hobbyists) is ... let's say not great. I realize that this is a cultural thing. In the US for example they tend to favor soft language more. They would call it "beta", "early access" or "personal project". As an European I tend to see it more as... well, "shitty". And that is fine. It is in fact refreshing not to have to filter out the marketing buzzwords like "innovative" or "minimalistic". The title immediately put me in a good disposition towards the author. It feels honest.
- neetrain 6y agoFew people accept it but most people love reinventing the wheel.
- cwp 6y agoI really hate that expression. Nobody EVER reinvents the wheel. We all know about wheels, and how they work and why they are useful. But we invent new types of wheels all the time. Maybe we put teeth on it and invent the cog. Maybe we invent the tire to improve traction and reduce bumps. Maybe we put spokes between the hub and the rim and to reduce rotating weight. These are all new and useful inventions despite still being wheels. Sometimes an existing wheel design is perfect for our use case, or at least good enough that creating a new one isn't worth the effort. Sometimes a tweaked wheel is what we need. Sometimes a radical departure from established wheel design is required to make a new machine possible. Build vs buy is an eternal question, and it's reasonable to examine and reexamine it for any project. But "reinvent the wheel" is just hyperbole.
- naavis 6y ago> Nobody EVER reinvents the wheel. We all know about wheels, and how they work and why they are useful. You greatly overestimate people's knowledge of wheels.
- pushrax 6y agoAn average engineer in any field probably has developed enough systems thinking to reason a great deal about the variation of wheels across applications.
- _puk 6y agoIt's the axle that was truly revolutionary.
- IanCal 6y agoPeople absolutely build solutions to problems that are already solved, often worse than the existing solutions. Your complaint about the phrase seems to be that it doesn't well describe the process of adjusting another design to work better for a specific use-case. But that's not what the phrase is trying to describe, it's literally describing the problem where people reinvent that which absolutely does not need to be reinvented.
- stiray 6y agoI am using Hugo for my personal site... and I suffer. If I just disregard strange formats etc. there are just a things that Hugo doesnt do, as a design decision, like start a binary when you are rebuilding the site. Which is to me extremely strange "security" decison that is just making updating site (like putting `software --help` on to a webpage) more annoying and workarounded by bunch of scripts instead relying on hugo only. I think that over the time all the software starts creeping with bunch of features that most people dont want or need and strange decisions from the past hunts it.