10 Weirdest Programming Principles You Have Never Heard About

in #programming7 years ago

“An overly complex project will eventually become too complex to be understood even by its own developers.”


BlogPostImage

Image Source

I have already walked you thru by far the most important programming principles you must know about, but there is yet another type of programming principles which could demonstrate much more advantageous compared to those.

Whilst the previously mentioned principles show you the way to be wise along with your program code, the subsequent principles will educate you to become smart intelligent with the code. A number of them are unusual, and most of them are amusing, but they are all similarly sensible and essential. Take heed!

1. The “Worse Is Better” Mentality

BlogPostImage

Image Source

Nearly as if in reaction towards the Bloat Principle, we now have the Worse Is Way Better mindset, initially coined by Richard P. Gabriel within an essay he published about computer software quality:

“Software that is limited, but simple to use, may be more appealing to the user and market than the reverse.”



To put it simply, it is smart to determine the main issue your software seeks to resolve and after that be excellent in that one important thing. Keep it simple. The more you distribute oneself slim, the better unmanageable the task can become, and a lot more unwanted it will become for customers.

What will happen once you disregard this? You wind up together with the Software Peter Principle:

“An overly complex project will eventually become too complex to be understood even by its own developers.”



It came from the broader Peter Principle, which says that whenever staff is promoted according to their present competency instead of their anticipated competency at their upcoming position, all workers gradually land in a position of incompetence. Consider that principle and put it to use to computer software, and you will realize why a whole lot worse software can be far better.

2. The Bloat Principle

BlogPostImage

Image Source

This particular one has numerous variants that it is difficult to select one as being the primary one. Probably the most “official” version is definitely the Law of Software Envelopment, more often known as Zawinski’s Law, called right after Jamie Zawinski and pointed out in The Art of UNIX Programming:

“Every program attempts to expand until it can read mail. Those programs which cannot so expand are replaced by ones which can.”



It is discussing the propensity of applications to draw in a lot more characteristics with time and unavoidably drift in the direction of growing intricacy. You might know this as feature creep, the continuing inclusion of newest features which have absolutely nothing related to the primary function of the computer program. Feature creep brings about bloat, and bloat is usually unwanted.

This could also pertain to software efficiency:

“Software expands to consume all available resources.”



During the 90s, hard disk drives and CPUs and RAM had been much more prohibitive compared to what they are these days and developers worked well and hard to fit just as much they can inside the limitations. But since we now have larger hard disks and quicker CPUs and a lot more RAM, we continue to battle to regard limitations. Almost everything becomes puffed up with time. It is your task to maintain that under control.

3. Principle of Least Astonishment

BlogPostImage

Image Source

“If a necessary feature has a high astonishment factor, it may be necessary to redesign the feature.”



Initially released within the IBM Systems Journal way back in 1984, this principle remains to be remarkably relevant nowadays – probably much more than in the past.

It basically details around the delicate equilibrium in between innovation and familiarity: if a bit of software program is way too distinctive from others of its type and does not comply with end-user anticipations, chances are they most likely will not embrace it. It is preferable to shoot for incremental changes which are just adequate enough to become remarkable but sufficiently small to remain familiarized.

4. Eagleson’s Law

BlogPostImage

Image Source

“Any code of your own that you haven’t looked at for six or more months might as well have been written by someone else.”



This somewhat demotivation saying is, in fact, one thing to take hold of. The truth is, no one is perfect. You may think you are a brilliant computer programmer at this time, but there is always something one can learn, constantly much more room to develop. If you happen to reminisce about aged program code and cringe, it most likely indicates you have learned something totally new ever since then.

Put it in a different way: in the event that you have looked back upon old tasks and you cannot see what you can enhance or would do diversely the next time around, you have probably stagnated being a programmer.

5. Kernighan’s Law

BlogPostImage

Image Source

“Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.”



Brian Kernighan, the same individual who co-authored the C programming language bible, is renowned for this informative law. The crux of it is this: write great program code, write easily readable code, write basic code, anything at all so long as it is not wise code.

Attempting to flex your coding muscles tissues with ivory tower intricacy will be the precise opposite of exactly what it means to write neat and much better program code./ the tougher your code would be to comprehend, the more challenging it will likely be to debug the event it unavoidably breaks.

So when Robert C. Martin points out, it is not only about debugging either:

“Indeed, the ratio of time spent reading versus writing is well over 10 to 1. We are constantly reading old code as part of the effort to write new code . . . [Therefore,] making it easy to read makes it easier to write.”


6. Law of Cybernetic Entomology

BlogPostImage

Image Source

“There’s always one more bug.”



Typically referred to as Lubarsky’s Law of Cybernetic Entomology, it is uncertain who this Lubarsky really is. Even so, his principle rings real for many programmers: regardless of how cleanly you write your program code, less of how robustly you test out your components, irrespective of how frequently you refactor your classes, there will almost always be one more bug.

In such a way, this really is a liberating principle. Basically, we should really focus on bug-free program code, it is also essential to understand that perfectionism is definitely the foe of good. Search for bugs, resolve them whenever they come up, and after that move ahead.

7. Brook’s Law

BlogPostImage

Image Source

“Adding manpower to a late software project makes it later.”



The very next time you are delayed over a task, which is probable because most programming jobs require more time than allocated, keep in mind that incorporating coders will not fix it any quicker.

In fact, it will most likely take more time to accomplish. Not just you are long to provide the latest coder(s) as much as speed, they will most likely clash together with the pre-existing coders. A lot more issues will have to be recorded, a lot more bureaucracy will probably be required to maintain everybody on the same page, and a lot more rubbing will emerge from the entire crunch-time experience.

8. Rubber Duck Debugging

BlogPostImage

Image Source

This particular one is not a whole lot a principle as it is a technique, but it is so beneficial and unusual that we’d be remiss to leave it out.

First shared within The Pragmatic Programmer, rubber duck debugging happens when you debug damaged computer program by outlining your code to an inanimate object (e.g. a rubber duck) a single line at a time. It functions due to the fact the action of description causes various parts of your brain, and you are very likely to locate inconsistencies and find out where you went completely wrong.

That is why, a rubber duck could be an amazingly great present for programmers, regardless of whether you purchase it for yourself or perhaps for a coding mate of yours.

9. The Ninety-Ninety Rule

BlogPostImage

Image Source

“The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time.”



This cheeky tiny proverb by Tom Cargill gets at the heart of why coding can be so annoying: regardless of how near you believe you might be to becoming done, you are a lot further apart than even the best estimations. Whenever you think you are accomplished, you are only halfway there.

It is in conjunction with Hofstadter’s Law:

“It always takes longer than you expect, even when you take into account Hofstadter’s Law.”


10. Parkinson’s Law

BlogPostImage

Image Source

“Work expands so as to fill the time available for its completion.”



This particular one, coined by Cyril Northcote Parkinson, is an actually broader principle that totally pertains to programming and moves together with the 90-90 Rule aforementioned: even so a lot of time you will need to complete a task is precisely the length of time it is likely to consider. In software development, “finishing early” is really a fantasy.

Parkinson’s Law is why appropriate due dates are essential if you wish to accomplish and deliver your computer software. That is why present-day professional programmers usually suggest nimble task managing principles and task management instruments like Asana.

Moving Forward Being A Programmer

BlogPostImage

Image Source

As you now know these principles, you are basically more suited for the real-life programming, not only what you have experience in class, within a web training course, or perhaps in a boot camp. These principles originate from numerous years of experience and breakdowns.

Using this type of newly found knowledge, you may now set forth into a high-demand programming profession with a lot more practical anticipations. For this, figure out how to improve your programming career prospects. And in case you choose that programming does not suit you, never fret – think about one of these brilliant non-coding technology tasks as an alternative.

Sort:  

I commend the hours that you have had sacrificed just to establish such an informative piece.

Thank you! ;)

Never heard of such principles. Thanks

Always my pleasure of sharing stuff.

The @OriginalWorks bot has determined this post by @ruelrevales to be original material and upvoted it!

ezgif.com-resize.gif

To call @OriginalWorks, simply reply to any post with @originalworks or !originalworks in your message!

I assure you that a lot of programmers will be utilizing these principles.

I assure them too that it will give them a profound wisdom.

Great writing skills.

Years of looking up resources in different search engines. Hehe.

I rubber duck debug a lot :)

Who doesn't? Hope you've enjoyed reading the other principles. ;)

@jbp life of a programmer :D

Good post, I agree with the principles.
What do you think about agile methods?

If in rush, use agile method. Hehe

When in doubt - Waterfall method - tried and tested.

But it's more efficient if you know a lot of methods, just saying. :P

I bet programmers/developers love getting rubber ducks as presents. :D

But they might see it as a hypocrisy haha.

Coin Marketplace

STEEM 0.22
TRX 0.20
JST 0.034
BTC 92640.23
ETH 3113.67
USDT 1.00
SBD 3.17