Software Engineer living in Berlin

Senior Java/JEE Software Engineer with 8 years of solid industry experience. Currently leading engineering team at PayPal. Shoot me an email at mkrtchyan.artur {at} to get in touch.

Laws of Computer Science and Software Development

Like in any other field there are laws in computer science as well. Knowing laws of computer science helps you make better decisions and create better software.

Parkinson’s law

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

Abraham H. Maslow’s law

If all you have is a hammer, everything looks like a nail.

Brooks’s law

Adding manpower to a late software project makes it later.

Murphy’s law

Anything that can go wrong — will go wrong.

Finagle’s law

Anything that can go wrong, will — at the worst possible moment.

Hofstadter’s law

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

Wirth’s law

Software is getting slower more rapidly than hardware becomes faster.

Amdahl’s law

The speedup of a program using multiple processors in parallel computing is limited by the time needed for the sequential fraction of the program.

Conway’s law

Any piece of software reflects the organizational structure that produced it.

Demeter’s law

Each unit (method) should only talk to its friends; don’t talk to strangers.

Ninety ninety rule by Tom Cargill

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.

Wheeler’s law

All problems in computer science can be solved by another level of indirection.

Lubarsky’s law

There is always one more bug.

The list is not limited, so let’s make a break here.