Friday, June 20, 2014

We are not our code

For many people (myself included), creating software is difficult, rewarding, and enjoyable. There is a feeling of pleasure in the act of creating something that is ultimately useful for someone... either for commerce, pleasure, or even the mundane (writing software to keep a deicer working yeah, that's a pun). It's important to keep things in the proper context though, you are not your code, I am not mine, we are not our code, to be effective, we must decouple our ego from our code and embrace Egoless Programming.

Software should not be an extension of ourselves because software is much more transient than even we are, it's supposed to be, that's what makes it cool. Technology changes, the state of the art moves forward, patterns evolve, die, reemerge in a new form. In a way, deconstructing what's been done before and reforming it into something new is where the value of solid software development comes from, not from building the "ultimate answer machine".

The problem is, many people get so intimately involved with their software, their baby, that they cannot decouple their ego from their code, it becomes an extension of themselves. Moreover, they are not able to accept criticism of their baby, their baby isn't ugly!. To be truly effective in technology, you must accept your baby might possibly be ugly and be able to love and embrace that ugliness.

The good news is that really good technologists love ugly and beautiful babies equally. Crappy software is just as difficult to create... heck maybe even MORE difficult, but that doesn't mean it isn't valuable. Moreover, just like people, code will age: it will get wrinkles, warts, it will break, become fragile, and eventually need to be retired to that from which it came. That's OK, it's the way things should be and it's reality. Failing to acknowledge that reality will hamper your progress in creating new things because there will be no more room for new things, you'll be stuck always thinking about the old things and clinging to the prison of "the ultimate answer machine" you think you created 20 years ago.

Take the red pill

1 comment:

julien tayon said...

I am my code: alone I am worthless, I need others libraries, I report bugs, I fix bugs, I sometimes help people, I sometime need help ...

I love coding as a team mate where we can help each others and grow solutions I would never had made alone. And I can make my average level useful to contribute to a bigger stuff.

I do appreciate my mates to make my code improve, and I like helping people improve.

The ego problem you are so strongly reproving looks like hubris.

Ego code at my opinion is not a problem, lacking of humility regarding the others is.

Ego code is cool, it makes quality code.

Like everything I would say the virtue is to stay balanced in your opinions;
stop taking pills, and live with the rest of the coders, you need the others as much as the others need you :)