I have recently had re-emphasised one of my first lessons in learning OOP (Object Orientated Programming). If coming from a procedural background:

“Forget 95% of what you already know”

The majority (if not all) of the developer-geek type people I have met all originally learnt procedural programming. Also the majority, at some point, thought of OOP as “the next step” or an extension of their existing skillset. I am confident that because of this perspective the learning process is shrouded by preconceptions of how things should be and makes for a frustrating and confusing time. Which I would also apportion to the number of people who have attempted and retracted from OOP (myself originally included). Also going from a proficient developer in procedural to newbie can also quickly take its toll on the appeal of OOP.

I have recently been working on an application that was developed in VB.Net but in a procedural style. Whilst this system performs well and is stable, it is a pain in the ass to maintain and extend which are the real benefits of OOP (not so much code re-use as is promoted by many as the main advantage who are perhaps more academically aware than real world experienced). This is what prompted me to write this post for anyone tempted to try learning OOP, leave procedural at the door for now, not that existing knowledge will be redundant but until you get to grips, plead ignorance.

This concept has been suggested by others and more thoroughly investigated, I firmly agree and would enforce that OOP IS NOT Procedural coding, nor an extension of, or a step above.