
Interview with Casey Muratori - GarethX
http://blog.fogcreek.com/dev-life-interview-with-casey-muratori/
======
danso
The last item is a good 'un

> 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.

~~~
e12e
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...:

[http://mollyrocket.com/casey/stream_0019.html](http://mollyrocket.com/casey/stream_0019.html)

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.

~~~
yoklov
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.

------
swah
I feel just like him, so I must be old too!

"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!"

------
AndyKelley
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/](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.

~~~
swah
Or [http://handmadehero.org](http://handmadehero.org)!

------
GFK_of_xmaspast
Wow, what a negative person.

