Software Engineering Principles in Everyday Life

In the next few paragraphs I will talk about how to apply software engineering principles in everyday life.

Why on earth would I even want to do such a thing, you may wonder. Hold your horses. I will tell you why. Just read on.

Long ago, before I became a banker, I used to be a software engineer living the Information Technology dream of yearly foreign trips, eating out, drinking, using jargons, sleeping through meetings and generally expanding my waist-line (increasing prosperity, some would call it).

While there was plenty that was bad in the IT outsourcing set-up, there were quite a few things which were really good and which have helped me in my life.

First let us look at a definition of software engineering. As per IEEE Standard Glossary of Software Engineering Terminology, software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software.

The keywords of importance are as below.

  • Systematic.
  • Disciplined.
  • Quantifiable.

As you can see, these three ideas mentioned above are universal ideas. And this is what we can learn from two important software engineering principles given below.

Separation of Concerns

Software Engineering Principles - Separation of Concern

Image Courtesy: Aspiring Craftsman

Separation of concerns is the idea that more efficacy is achieved when we separate task into different aspects (or concerns) and handle them separately. For example, for a software accuracy and efficiency might be two concerns and generally increased accuracy comes at the cost of reduced efficiency.

More than identifying the specific aspects, it is the realization that there are multiple aspects to a situation or project (in this case accuracy and efficiency), and that they need to be identified and acted upon, which is more important.

In life we often come across such situations. We try to treat the problem as one whole, apply generic solutions and fail. Once we realize that the problem actually has multiple aspects to it and try handling each separately, life becomes much easier.

For example someone who is looking for a new job may get bogged down when he does not get good opportunities. On analysis, he will see that these are separate problems.

  • Dissatisfaction with current job.
  • Search for a new job.
  • Spouse has to look for a new job.
  • Family moving to different place.

Identifying that theses are different aspects is the first major step to resolving mental conflicts.

ModularitySoftware Engineering Principles - Modularity

Image Courtesy: defit

In Software Engineering, modularity is the division of a software into components and handling each separately. For example a flight reservation system has multiple components – booking, changing schedules, canceling, viewing booking history and so on.

In the same way, we must modularize our life to discover our pain areas and act upon them.

For example, you may be unhappy about going to work everyday. So you try to sit and apply the principle of modularity and see that there are two modules – traveling to office and spending time in office.

While you enjoy spending time in office, you do not enjoy the 4 hours up-down commute and this affects your time at the office.

— END —

That’s it. Hope you enjoyed reading about how to Apply Software Engineering Principles in everyday life.

You may also like

Further Reading

Software Engineering Principles

Featured Image Courtesy: medium.com

Thank you for reading “Software Engineering Principles in everyday life”. I hope you enjoyed it. Please leave your comments in the comment box below and do share with your friends and family.

4 Replies to “Software Engineering Principles in Everyday Life”

Leave a Reply

Your email address will not be published. Required fields are marked *