In the beginning there was the command line. And it was good.
We all started somewhere. I began with dumb terminals, cassette tapes, Wuzzles, and the like. But then came the Apple ][+. And my eyes were opened. On a 5 1/2 floppy disk, you could read and write programs, store data forever, and you had 360Kb! How could you EVER use all of that? But we did.
I created my first software company in 1980, “Zodiac Software” and we specialized in Menu systems, (ie, what files and applications you had on a disk) and Hello programs (fancy pants graphical scenes that executed while the pages were loading). I wrote sprite editors, and created my first homegrown database. The folks at my Junior High School were terribly impressed.
And look at us now. Millions of software engineers all still argue about the best way to implement some system. And the number of users has soared beyond belief. And perhaps we have moved too far, too fast, and technology has outpaced morality–
But thats a philisophical discussion for another day.
Today, we struggle and strive to learn the latest and greatest technologies as determined by Hacker News, Reddit, Facebook, Amazon and Google, and the rest.
So this morning, as I was standing up another K8 cluster, angry that the control plane is now costing me $73 a month at Google, I thought — have we started using and leveraging technology to build our resume, to impress the neighbors?
Why on earth would I run the complexity of K8 on a simple side hustle kind of project–Besides it being a blast to do, and to show off for the kids, just like I did a very long time ago. And truth is, there isnt a good answer. Docker and Docker Composer suited my needs, and took no time at all to write up the YAML required.
But Kubernetes is more fun.
So I pay my $73 dollars to google, and grouse to my sweetie. But in the back of my mind, I wonder why have we embraced all of the complexities, all of the added layers.
When I started writing code for the web in 1993, there were a number of hard and fast rules. Pages were 25K, graphics were limited, and the point was to express your thoughts clearly, and stand back to be judged by your peers. We were expected to be good neighbors. If our pages got bloated, people just walked away.
But as the audiences grew, so did our need to impress. These days, the average web page is more than 2MB, the load time just under 4 seconds, but the informational load is about the same. so in essence, we have increased the size of what we expect our readers/users/clients to consume, and for us to maintain by 100-150 TIMES what it once was.
Have we increased the value by as much?
Perhaps.
Think about it. Now we have responsive pages, that are viewable in screen readers, across multple platforms and languages. But is that functionality what made up the massive increase of resources required to simply render a form?
I had an experience a few years ago, where an application was written to show some graphs on a page. It was a complicated set of statistical analysis. and the code to do everything on the business side of the app, including responsive design, and 508 compatability came in at just under 7,000 lines of code.
All it needed was a login system. A trivial one too. Register with a unique email, set a password. fill out 4 details. Done.
Login, password reset, bit of validation. The “quick” solution was to just grab a framework with these things, and call it good.
Not a terrible idea. But in the end, the 7,000 lines of code grew to 3.4 MILLION.
Had we reinvented the wheel, and run a homespun login system. Or even grabbed a simple login system from one of the thousand of repositories, we could have probably implemented the same thing in an additional 1,000 lines of code. But instead we went with a commen framework that came with it built in. And now we had a MASSIVE structure to maintain. And yes, the framework was obscene overkill, but it wasn’t a WRONG decision. just inefficient I think. And that sort of experience led to this post–
Are we playing safe, using large, complex frameworks for simple tasks because they are fun, pad our resumes, and let us move really fast, perhaps at the cost of maintenance down the road? Are we “Keeping up with the jonses” at the cost of efficiency, maintainability, and sanity? (and don’t tell me a framework of 3.5 million lines is easier to maintain than a 1000 lines of code. you are embarrassing yourself).
But the framework isnt wrong…just sometimes makes me wonder if the added complexities are the right path forward. And then I think back to trying to fit code into tiny processors, tiny memory segments, and tiny disks, and remember that efficiencty used to matter…but maybe now? ease is better.
Makes you wonder.