blog

Most articles on this blog right now are rants about language features I think are more dangerous than valuable. But it doesn’t mean I’m saying “don’t ever use them”. I’m simply exposing their (major) drawbacks because I think they’re not well-known enough. Someone knowing about those drawbacks is capable of making smart decisions about exploiting those features. It’s all about being pragmatic. Weighing the pros and the cons.

On the other hand, when you lack knowledge, you can’t take the decisions. Despite this, beginners are asked to make decisions concerning code design every day, especially in the context of a software out-sourcing company like mine, which employs a lot of new programmers straight out of school. Most of the time, they don’t know how class inheritance and others can be damaging. Why is that?

Well, there might be a problem in the way object-orientation is taught. Maybe they revolve around languages too much and not enough around the core concepts of OO. It is those concepts that are important, not wether or not a language supports additional exotic stuff like abstract classes. Introductory books and courses seems to focus on and even praise such language features for their power, when actually OO is elsewhere.

I wonder: what can be done about this?