Don’t Repeat Yourself as a Lifestyle

Yesterday I saw a truly inspiring talk by Bret Victor where he explains his guiding principle in life and work.

“Ideas are very important to me. I think that bringing ideas into the world is one of the most important things that people do. […] Creators need an immediate connection with what they are creating.” – Bret Victor

It’s quite a lengthy talk, but the crux of it doesn’t boil down to just this principle. He goes on to describe why he follows this principle. What motivates him.

“When I see a violation of this principle, I don’t think of that as an opportunity. […] Ideas are very precious to me, and when I see ideas dying, it hurts; I see a tragedy. To me it feels like a moral wrong, it feels like an injustice, and if I think there is anything I can do about it, I feel it is my responsibility to do so; not opportunity, but responsibility.” – Bret Victor

Although Bret spends a great amount of time demonstrating some very imaginative interfaces, the bottom line of the talk isn’t about him showing off his principle, but meant to inspire you in finding your own, and why technology can play an important role in that.

“As a technologist you can recognize the wrong in the world. You can have a vision for what a better world could be, and you can dedicate yourself to fighting for a principle. Social activists typically fight by organizing, but you can fight by inventing.”

“I’m not saying you that you have to live this way. I’m not saying that you should live this way. What I’m saying is that you can, that this lifestyle is an option that’s available to you.” – Bret Victor

Only this morning I realized what this principle could be for me.

The DRY (Don’t Repeat Yourself) principle states: Every piece of knowledge must have a single, unambiguous, authoritative representation within a system. – The Pragmatic Programmer

I’ve always held this fundamental software development principle in high regard, but just as the original intent of the statement wasn’t solely about preventing duplicate code I realize now I assign even more importance to it. For me it transcends software development.

I’m writing this while I’m on the train, on my way to work. I spend quite a lot of time on train travel, having to go from Belgium, to The Netherlands and to England. It’s mind-numbing having to take the same routes over and over again, week after week, but the ability to work or read while I do so helps me cope with that. Doing the same trips by car would drive me insane. It’s only one of the many indications in life which cause me to believe that repetition is a cause of dread.

Although I didn’t interpret it as such before, the past few years it has been my personal goal to attempt eliminating any form of repetition. Everything I feel strongly about revolves around eliminating the need to do the same things over and over again. From changing the way a community works by working towards a more constructive environment in which to have discussions so arguments no longer need to be repeated over and over again, to eliminating the need of ever having to write an unnecessary piece of code again. The thesis I am currently working on is inspired by the fact that people waste too much of their time managing and switching between different activity contexts. It’s repetitive work which could be solved by using an Activity-Based Computing system.

The wonderful thing about technology is that it’s a perfect enabler to attain that goal, but I realize now it is not only what defines me as a developer, but also as a person. Some people might call me lazy because I don’t like doing daily chores. They might be right, I rather work on things which prevent me from having to do something ever again. I like my work as much as I do because it’s non-repetitive by nature, unless you end up in a mindless work environment where you are considered to be nothing more than a Code Monkey.

I believe I found my personal guiding principle, what’s yours?

Advertisements
  1. #1 by What? on September 6, 2013 - 11:05 pm

    Nice. But I disagree. I love repeat visits to the same beautiful places. I love repeating my morning run. I love repeatedly making love to my girl-friend. I love to draw and the monotony of the repeated linework is fundamentally relaxing.

    And while I don’t like to listen to the same arguments over and over again, I believe that learning something requires you to discover that knowledge for yourself, thus repeating the same process and the same “discoveries” that others have endlessly repeated before you. And there is beauty in this repetition: look at the face of a child that came to an understanding on his own, instead of having the knowledge given him by you to avoid repetition.

    I don’t live with the purpose of increasing world knowledge, but to experience life and grow. And just as each different blade of grass is a repetition of all other blades of grass, on the most fundamental level, where it is about pain and joy and love and loneliness, each human life is a repetition of all other human lives past, present and future.

    • #2 by Steven Jeuris on September 7, 2013 - 3:15 pm

      You make some beautiful points, and are most likely right it isn’t that clear cut. However, I said “Don’t repeat yourself”, not “Don’t repeat ourselves”. 😉 Also, when you refer to experiencing life and grow, perhaps “grow” isn’t all too different from not repeating yourself. If you can grow from an experience, are you truly repeating yourself?

      • #3 by Wouter Jeuris on September 4, 2015 - 3:55 pm

        I think if you make a distinction between goal-oriented activities, and “intrinsic” activities, the problem addressed by “What?” dissolves. Goal-oriented activities would be things that you do, not because you like doing them, but because you are interested in the reward they reap. Intrinsic activities would be stuff you do just because you get direct benefit from doing them. I -think- you are looking to stop repeating goal-oriented activities.

        Related to the “discoveries” point that “What?” makes:
        If the goal is “true” understanding, and not just memorisation of knowledge, and this requires discovering the knowledge for yourself, then an application of DRY would not be “teach the knowledge”, but it would be, make the process of discovering the knowledge more efficient. – … I’m not sure if I’ve phrased that clearly, but there’s a point in there somewhere that I’m trying to make 😛

  1. Activity-Based Computing « Whathecode
  2. Rethinking tabs: scalable window management « Whathecode

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: