Keep It Stupid Simple please
KISS is possibly one of the most important axioms you can learn when it comes to software development. Simply because it "encapsulates" SOLID, and every existing "best practice" out there.
Join the DZone community and get the full member experience.Join For Free
If you do a meta analysis on constructs such as SOLID, or any other architectural best practices, you'll easily see how there's another abstraction layer above these principles, arguably being the foundation of everything you do, which is KISS. KISS of course implies ...
Keep It Stupid Simple
I would go further and argue that unless it's simple, there's something fundamentally wrong with it! Even extremely abstract and theoretical concepts such as e=mc2 is ridiculously simple to understand once you make an effort. In fact, Einstein himself would claim that there seems to be a fundamental law in the universe implying the universe is simple, and unless it's simple, it's not the truth.
I just finished a code review on some Hyperlambda one of our partners had implemented, and there was roughly 3 months of work in it, 169 files, where 165 of these were actual code. In total I'd say some roughly 7,800 lines of code. Of course, since this was a Hyperlambda project, the computer generated probably more than 80% of its code, but regardless of this fact, I was able to do a complete and thorough code review on the project in 15 minutes. In fact, after studying the code for 15 minutes, I was able to have a complete understanding of the entire project, every single code file, what it did, and how it did it. Try code reviewing a 3 month old C++ project in 15 minutes, and come back and tell me with a straight face you understood every single part of it ... ;)
Anyways, software development is not more complex than physics or space time. In fact, quite the contrary. Software development, at least so far, is deterministic in nature, ignoring Google's Quantum Computers of course. This implies that everything can be reduced down to a set of conditions, using constructs such as state machines, conditional executions, loops and function invocations. And if you can't keep that simple, you should probably do a SHIFT+DELETE refactoring of your codebase. Because at the heart of matters, exists an intrinsic truth in this Universe, which is that if it's the truth, it's simple!
If it's the truth, it is simple!
We just finished re-writing the documentation for Magic and Hyperlambda, and as a purely theoretical exercise, we made sure the website could be printed. This allowed me to arguably "measure Hyperlambda's complexity" by clicking CTRL+P on every single tutorial and reference style documentation parts of the project, and the numbers I found was that there exists 82 pages of tutorial style documentation, and 129 pages of reference type of documentation.
When I started out learning C++, I bought Bjarne's reference guide, and I think I spent a year before I was able to finish it, simply because you could probably commit murder with the book, due to its weight. It took me another 5 years before I felt "comfortable" with the language. With Hyperlambda you could probably read through some 60 pages of tutorial style documentation, and you'd arguably understand 95% of the language, and its libraries. Besides, how much simpler can it be?
I think the above facts tells you everything you need to know to understand software development ... ;)
Opinions expressed by DZone contributors are their own.