The software industry is almost 100 years old. It has proven itself to be one of the most unpredictable, evolving, and fast-paced industries around the world. That’s due to the fact that the industry is being driven by some of the most intelligent individuals everywhere.
This industry doesn’t respect tradition, it evolves and mutates and adjusts and corrects itself on daily basis — continuing to honor the sense of innovation and preferring it over tradition.
As a part of the evolution that happens in our industry, the newer generations of engineers have started to wholistically look at the origins of our industry…


Understanding one’s place in the universe and seeking the meaning of one’s existence is one of the oldest questions in the history of man.

A question everyone asks themselves at some point in their life. Why am I here? What’s the purpose of my existence? What’s the meaning of all of this?

Some of us get tired seeking the answers. They get pulled into the strong wave of the day-to-day life. The society pressuring individuals to follow the same path everyone else has followed. Get education. Get a job. Get married. Have kids. Pay your mortgage and so on. …


What makes any source code a legacy code? A question that occurs every now and then in the software industry. It usually and commonly refers to an older piece of software/code that is no longer supported or maintained.

Legacy as a term means something that is old. Something from the past that someone else left for the people behind to inherit. It can also refer to traditions that someone left behind for those who follow to continue to adapt and practice.

But If you look closely. In the software industry the word legacy code to engineers has some serious implications…


There are points in time where some of us begin to have a realization that while everything around them is moving forward, they are staying still.
They wake up in the morning, do their work, come back to watch tv, spend some time with family and friends and then go to bed. Then repeat. They may look forward to a vacation, a visitation or something terrible to happen so they can break out of the rhythm of their day to day lives.
Some of us may hear the voice of an awakening in their heads, calling them to fulfil a higher…


I have great respect for engineers who apply their minds into what they develop. In general, each and every one of us tries to solve a problem a bit differently than the rest. Some of us have quite an interesting approach that extends its influence on the rest of us. Shaping the methodology of which we attempt to solve similar problems in the future. These are the folks we call Computer Scientists and what they produce is what we call Algorithms.

In this day and age, and as the software industry and technology in general is advancing with the speed…


Growth is the most common characteristic of life. It’s in everything around us. From the smallest organisms to the forever expanding universe around us. Everything aims for growth in one direction or another. Some of it happens naturally without any manual interference, and some of it requires the extra effort to change from one state to another.

But growth without a measure is hard to track. Some may consider their growth non-existent if they don’t have the measures to realize it. But more importantly, growth can be in any direction. …


Software engineering is a modern methodology used to represent a system, any system, in terms of models and actions. Computer scientists define the core principle of software engineering as “Modeling & Simulation”. Which simply a computerized representation of particular entities in the universe (Modeling) and how these entities interact and be interacted with (Simulation).
In general, the modeling and simulation process tries to solve a particular problem in our world. For instance, if we are trying to solve a problem of finding the best design for a city, we may model all the structures a city may have and the streets…


In previous articles, I touched very briefly on the fact that engineering can be a social activity. A bridge that engineers could use to connect to the rest of the world then use it to make the world a better place by solving its most complex problems.

Everyone today has some need or other that is directly or indirectly dependent on software. A mobile app, a website or just simply a piece of paper being processed through a printer with a person waiting on the other side for it to finish.

In any software engineering process, there are three aspects…


Social networks as part of the technological revolution that happened in the last few decades have been more and more involved into our lives on daily basis.

We use social networks today for almost everything. We connect to our family and friends; we sell and buy things and we advertise and share our thoughts all on social media.

But social media platforms today have been involved in some severe violations to basic human rights like privacy, experimentation without consent and more recently free speech.

The Problem
For instance, social media platforms today use every single action you take on the platform…


What makes a successful product?

Is it the ability to pinpoint a market-need or maybe even create one?

Is it the ability to find a path to a better product than what the market already offers?

Or is it about establishing a good relationship with a customer then hiring the best engineers to materialize their vision?

Every entrepreneur in the market looks for answers to some of these questions regardless of where they stand in the market, or what level of experience they have.

In the enterprise world, the equation gets a bit more complex. Products become more and more…

Hassan Habib

I’ve mastered technology to improve people’s lives one line of code at a time, more about me on hassanhabib.com

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store