This is one of the real reasons why I’m pretty disenchanted with mainstream tech. The preoccupation and network effects surrounding what are, at best, tools that promote easy over simple are really depressing. It’s like we don’t, collectively, understand the value of composition at all. We’d rather pore over half-baked docs of a Weird Framework With a God Complex than sit down and actually use the host language. Hype trumps substance, because hype looks like a startup with a clever domain name and marketing.
We call ourselves rational, but we’re just making easy choices to cover our own asses, and blending in with the crowd. We succumb to the same vapid marketing used in the commercial world. We continually defer to social proof over actual technical excellence, which we’re reluctant to assess. Frankly, we deserve whatever problems we fall into by these attitudes.
I’m sick of ridiculous groupthink labeled ‘best practices’. I’m sick of a complete lack of intellectual humility, and ignorance of history that came before. I’m sick of self-promotion for it’s own sake, and “GitHub is your resume” and a culture of entitlement that emerges from tons of people viewing open source as a bunch of free stuff.
P.S. this story has a happy ending: I’m a lot more careful about where & who I listen to now about tech. I prefer communities of people who aspire to simplicity & minimalism in their software over the mega bells and whistles-style of development. It makes a big difference.
If I’m interested in simplicity and minimalism, which resources could you recommend?
I’ve had minimalism as a goal in my recent projects (e.g. no ORM, simple APIs, avoiding frameworks where possible, preferring small semi-independent subsystems), but it mostly came out of my own experience and stumbling on interesting links on Lobste.rs.
It’s not quite minimalist-oriented, but first thing that comes to mind is reading through Growing Object-Oriented Software Guided By Tests. I’m thinking specifically of working through what it takes to architect and design great software, which is a prereq for minimalism, as you don’t have the guard rails in place. Learning to build just enough structure (aka architecture) to grow your app is a very powerful idea.
I think I tend more towards simplicity than minimalism, mostly for ease maintaining said software. I extract a ton of benefit from using the ideas of the IO monad in imperative code; that is, isolating side effects (such as databases/UIs) into their own module, and only calling them from a certain place. Watch Gary Bernhardt’s Boundaries talk to get an example of this.
FP, to me, is very simple once you learn it. Understand why FP encourages pure code, and how it interoperates with impure code.
Brian Lonsdorf has some interesting suggestions for writing JS in a FP style. The talk “Hey Underscore, You’re Doing It Wrong” is a good starting place for his work. His other talks are also good, and I’ve been enjoying his new project Loop School.
And +1 for Boundaries, and the work of Gary Bernhardt in general. Destroy All Software did a wonderful job showing me a good way to write in a gradually-more-functional style in an imperative language.
Great, this is exactly what I was looking for.
You could join the #lesscode channel @ freenode (the author of this article hangs out there, and people who share similar preferences too).
Edit: There is also a collection of links on the r/lesscode subreddit.
Also, check out the suckless-project (http://suckless.org).
If you strive for the unix-philosophy, many things will just fall right into place, and in numerous cases, you end up more flexible and efficient than with the popular kitchen-sink solutions.
Quoting from the article,
Cuba itself is extremely easy to work with because it barely does anything. You can read the entire source in 5 minutes and understand it completely. I’m confident future teams could pick it up.
Some context: http://amirchaudhry.com/bitcoin-pinata/