For those who have been programming in an imperative style for a while, functional programming may look scary at first. Indeed, it requires a different way of thinking. However, for those who has the motive to learn, it has never been “a question of how”. The real question in my opinion is “why functional programming”. First […]
A lot of software engineers have a misconception of what over-engineering is and how it is related to robustness. Some say that robustness can’t exist without over-engineering. And I totally disagree, in-fact if you think about it for a second you will see that a robust block of code (a code that handles abnormal cases) have nothing to do with an over-engineered block of code (a code intended to anticipate the future), But i can understand where such a misconception comes from. As software engineers we tend to overthink problems. We sometimes go around trying to find out solutions for possible future needs, and that doesn’t work as no one can predict the future. So first of all let’s clarify the concept of over-engineering, its relation to robustness, and go through why we need to avoid it and how.