"Keep it simple, stupid": More than just an aphorism

(Warning: Minor hyperbole ahead.)

"90% of everything is crap."

- Thoedore Sturgeon, kinda

$280 million dollars, trapped in time. You've likely heard it by now, the bug in Parity's WalletLibrary , leading to all Ethereum in all Parity wallets being stuck in limbo, potentially forever. They fucked up.

But I'm not here to rag on Parity in particular, no matter how much they deserve it. I'm here to rag on all developers, and their software - or at least, the 90% Sturgeon was talking about. Today's code is garbage. The Renaissance period of the history of computing has come to an end. Elegant, unix-like C has turned to buggy and bloated C++. People are running Javascript, server side. Indian code farms pump out thousands of enterprise-tier lines of Java a day, with no regard for quality.

Whatever happened to the philosophy of clean, simple code? Code that almost comments itself as you write, concise in it's implementation. UNIX had the problem solved in the 70s, where each tool was designed with a purpose, sharing useful code in refined, well-implemented libraries. Debugged not through Valgrind nor complex analysis, but through thorough examination, rewriting bits here and there until nothing else could be rewritten. A great quote from Ken Thomson comes to mind:

One of my most productive days was throwing away 1000 lines of code.

Today, entire kernels are implemented in less SLOC (source lines of code) than the fucking Parity wallet. Proper, real, actual kernels, too - MINIX 3, roughly 12K SLOC; Parity Wallet's github, roughly 550K SLOC. It would almost be funny if it weren't terrifying. Every day, people are putting real money and real risks into the hands of these developers, and these same developers can't even write a fucking library correctly. A library, might I remind you, that managed $280 MILLION DOLLARS worth of Ethereum.

Developers: It doesn't matter if you're using a super-duper memory-safe, hyperfast megalanguage, if your code is shit. When you write code, you are writing a piece of software that is designed to achieve a goal. The best way to achieve that goal is not 100MB of npm packages or bower install everything-one-can-think-of, it's short, simple, concise code. This philosphy lasted for 50 years and largely persists in only the best of circles today, developers like those working on OpenBSD, as an example. Are the OpenBSD developers wanking off about memory safety, or are they writing code again and again, cutting it down, refining it, and keeping things simple? Which of those choices do you think is the road to good software?

Apologies this article may be a little rambly, but you should get my point. Stop overengineering. Overengineering is death. Next time you're writing code, take a good look at it. Maybe you'll be able to cut out the cruft and the bugs before it's storing $280 MILLION DOLLARS of Ethereum.

Please comment with any criticism you may have, it's all quite helpful.
Sort:  

Congratulations @gassedupoldman! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 2 years!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Vote for @Steemitboard as a witness to get one more award and increased upvotes!