> What advice would you give to a younger version of yourself starting out in development?
> Don’t ever bother learning or using object-oriented programming. It’s a deeply flawed programming methodology, and I wasted a good five years of my programming life thinking that it was useful, and I’ll never get that back. If I had been able to tell 18-year-old me to stick with compression-oriented programming, I probably would be a much better programmer today and I would have made decent code in my 18 to 23-years old period instead of the garbage OOP code that I ended up making. I will be forever thankful to Jeff Roberts at RAD Game Tools for providing the environment that finally made me realize that OOP was a severe impediment to writing good code, and it didn’t take long in that environment before I was back to writing good code again.
It's funny. He gives an example of how by grouping data and functions that operate on that data (in a class) is a great example of COP and different from OOP...:
I can only conclude that he spent ten years in the world of toy class-oriented "oop", premature oversized architecture and other nonsense that follow from going from "have no idea about the code/function; will model as strict class hierarchy" -- rather than doing the sane thing BDD/TDD/throw-away prototyping -- followed by refactoring / reimplementation.
It makes for a great sound-bite -- but he's kind of attacking "straw-man" OOP.
There are several large differences you're missing. Many of these are elaborated upon in other posts, and some in his twitch stream.
His methodology basically completely eschews dynamic dispatch in favor of static dispatch. No function pointers or vtables, just conditionals.
Abstractions are built up slowly, only after you're reasonably certain its the abstraction you want. The initial pass of the code has almost no abstraction and favors large functions. The reasoning here is that its usually far easier to add abstraction than it is to remove it, and starting with abstract code is a good way to lead yourself in the wrong direction.
Most interfaces between systems are based around data layout, and not functions/method sets.
"GNU Emacs is awful – it’s so slow it can barely even auto-indent my files, which is insane considering the horsepower it has to work with. Visual Studio 2012 is pathetic. It takes a perceptible amount of time to step a single line of code in the debugger. That is inexcusable, especially since in the old days (circa MSVC 5), it stepped instantaneously on much less powerful hardware!"
If you're in a position where you need something to listen to while driving or public transportation, I recommend The Jeff and Casey Show: http://mollyrocket.com/jacs/
It's quite fun. I would describe it as two experienced programmers who are goofy, grumpy, and opinionated, shooting the shit.
> What advice would you give to a younger version of yourself starting out in development?
> Don’t ever bother learning or using object-oriented programming. It’s a deeply flawed programming methodology, and I wasted a good five years of my programming life thinking that it was useful, and I’ll never get that back. If I had been able to tell 18-year-old me to stick with compression-oriented programming, I probably would be a much better programmer today and I would have made decent code in my 18 to 23-years old period instead of the garbage OOP code that I ended up making. I will be forever thankful to Jeff Roberts at RAD Game Tools for providing the environment that finally made me realize that OOP was a severe impediment to writing good code, and it didn’t take long in that environment before I was back to writing good code again.