Programming is about writing down your knowledge of a complex system in a form which computer can understand. The more the computer knows, the less you need to memorize. We write our knowledge down in different programming language because the system, the knowledge, and our taste are different.
The formula of programming complexity
Here is the formula of programming complexity:
C = P + U
C is the total complexity we need to achieve to solve the programming task.
P is the complexity we can express in the form of code.
U is the complexity we have to address in the form of non-code, such as documentation and unit testing.
The more complexity we can address in
P, the less
U we need.
In other words, if we program in a language can express all kinds of details such as “Is this function pure?", “Does this method mutate the object itself?", “What kind of parameters does the function need?", “Is the function thread-safe?" without looking into the implementation. We can avoid a lots of tedious paper works.
The document will never out-of-date if there’s no need of document.
So, how do we write maintainable software without unit test and documentation?
Choose your programming language wisely
The programming language you choose decided the maximum of
P. If the maximum of
P is higher than
C, you might not need
U at all. If your programming language can’t produce a
P large enough. You need a huge amount of
U to satisfy your
Or, choose your problem wisely
C part of the formula is decided by the task programmer need to do. If we can achieve business requirement with a task with small enough
C, we can solve the task with little codes and no document. And we still have a maintainable software because it’s so simple that anyone can understand it in hours, not months.