RWDevCon 2017 Keynote: Reflect and Refactor by Marin Todorov

In this keynote speech from RWDevCon 2017, Marin Todorov challenges you to periodically reflect and refactor your own life.

Note from Ray: At our recent RWDevCon tutorial conference, Marin Todorov gave a keynote speech challenging us to periodically stop to reflect and refactor our own lives. Marin and I hope you enjoy it!


Imagine this: you’re in an airplane cruising at 30,000 feet in the air. The Earth is far below. The AV turns on and the flight attendant speaks up.

“Attention, attention. Remain calm. If there are any medical doctors on board, please make yourself known to the aircraft personnel, thank you.”

Where it all hit me

Not a great place for a medical emergency!

Even if you know that this is not about you, even if you know that things are probably going to be alright, still your stomach jumps and cold sweat covers your palms and you start looking around. “What’s going on?”

You see the flight attendant escort somebody to the front of the airplane. You hope it’s a doctor and worry for the person who’s in trouble. Most importantly, you hope that this situation never happens to you.

Now, in this particular story and on that particular airplane, this is happening to me. I was the one sitting in the front row and my hand was held by the flight attendant as I was having a breakdown.

Yep, I was that guy.

The problem was that my life had changed quite a bit. There were big changes; there were a ton of small changes as well. I really didn’t have the time to have a look at my personal state and think about everything that was going on.

The one thing that I learned from the situation was that had I done things differently, had I looked more into all these changes happening in my life, I could’ve prevented this breakdown at 30,000 feet in the air.

Dreams Change

Let’s take a step back. I posit that what leads you anywhere in life is your dreams. However, your dreams are not static; your dreams change as you change.

To see what I mean, think about the dreams that you had ten years ago. Were those the same dreams you have right now, or have some of those dreams changed so drastically that you can’t help but smile when you think about them?

My dreams have certainly changed a lot. A long time ago, I thought, “I want to work with Bill Gates on the next version of Windows.” Then I thought, “I want to be a drummer in a rock band made entirely out of drummers.”

It would have been awesome!

Finally, my dream became, “I want to be my own man. Write books, speak at conferences, but also have a lot of time to spend with my family.”

Now, some of these dreams I’ve accomplished, and some I haven’t, but the crazy thing is how much these dreams have changed over time. I bet yours have, too. Why do our dreams change so much? Are we not the same person we used to be before? My fingerprint says yes, but my weight scale says no.

And would it kill you to exercise?

Time to lay off the Doritos.

Just like our dreams change, we also change all the time. The funny thing is that these changes are so gradual that we might not even notice it.

Think of yourself as a massive code base that you do commit to all the time, each day. When you have enough commits, you might end up with a completely different project than what you started working on.

You know how it is: you start with a to-do app, and one day you wake up and you have on your hands a massive, multi-player cooperative game set in space in a parallel universe. After you have enough commits to your code base, if you don’t periodically take a step back and reflect on all the code changes and refactor your code a little bit, you might end up with a big, hairy problem.

Watch out, it bites!

Our lives are the same way, really. We always have the best intentions, but life changes so much and it causes so much change in ourselves that we don’t even notice all the small and gradual changes, just like those tiny commits all the time. We can get ourselves into a big, hairy problem if we don’t periodically take a step back and reflect upon all the gradual changes happening in our lives.

Every so often, we need to ask ourselves, “How can we refactor our lives given what we know now?”

Let’s get back to the airplane. I’d gotten myself into one of these big, hairy problems.

watch out, me!

There was one big change: my father had just passed a few months before, and I was missing him so much. Also, there were a lot of small changes happening. Since I didn’t really have any time to reflect on all these changes, I got into this big, hairy problem 30,000 feet in the air. All these changes and all this trouble and all the work piled up until they hit this boiling point on the airplane.

All of this had been putting an immense pressure on me because I couldn’t really do any work, I couldn’t meet any deadlines—the first time in my life when I couldn’t meet work deadlines. All of this kept piling up.

The real thing was that I did not give myself time to grieve. I was trying to run shop as usual, be a busy iOS developer, speak around the world, work like crazy, but I no longer had the energy to do all of this. I thought, “I’ll just keep going as usual, because work will help me deal with grief, right?” I was always able to pull off immense amount of work—up to that moment, at least.

What I didn’t realize was that things had changed and I had changed too. All of this grew and grew until that moment in the airplane. That trigger event on the airplane was what forced me to sit down and have a look at my situation. At that moment, I knew that I needed to reevaluate what I was capable of. Certainly not work; I was barely even able to go grocery shopping.

Like any good programmer facing a big, hairy problem in my code, I refactored. I canceled all the work projects I could and postponed any deadlines indefinitely, because this is what the “me” of that time needed.

Now, needless to say, my work contacts were not very happy and I’ve received an immense amount of pressure from the users of my open source libraries. Sending out these e-mails to everyone was really hard because I felt that I was letting everyone down, but you know what? If I hadn’t done that, I would be letting myself down.

In the end, it took me a few solid months of not working, of just resting in the sun and reflecting and remembering. Only by answering the needs of me at the time could I move on to the next stage.

I’m glad I got through this time, but it’s crazy looking back that it took a medical emergency in the air to make me reflect and look into my own life. The good thing is you don’t have to be up in that airplane to start doing the same.


The first step is to periodically take some time to reflect.

You might be thinking that self-reflection is something like a yearly job review where you sit down and look at how to do things better or faster, but that’s not what I’m talking about. Self-reflection is different.

To self-reflect, you should not look into how to do things better or faster, but instead look into how you feel, what you need and why. It’s all about you, not about what other people tell you.

For example, maybe you’ve been maintaining an open source library for a while. Instead of thinking how you can do better at that, ask yourself: “Is this still fun? Does it still give me anything, or has it become a chore and a source of stress?”

Another trick is to build a current image of yourself right now, a mental image, and compare it with the last time you thought about yourself. Are you doing things differently right now? Maybe you have a new perception about how and where you stand. Are you older? Probably. Maybe you learned or experienced something new. Do you see the world or yourself in a different light than you used to?

One handsome dude

For example, maybe you’ve always loved the meals of your childhood. Butter fried chicken, pork chops and more. Those certainly have been yummy! However, as you age you might need to reflect on your health and align your diet to your body’s new needs.

All of this takes time. You can’t self-reflect in your lunch break or between meetings. You need a relaxed mind and a little bit of space. Personally, I like traveling in the train, sipping coffee, maybe crossing the Alps.

The key is to carve out some specific time to do some self-reflection and be okay with the fact that it’s going to take a while. Eventually you’ll discover whether you’re still aligned with your inner self, your previous self, or whether something has changed, and you now have different dreams than before.


Once you’ve had a chance to reflect, the next step is to refactor.

Have Your Dreams Changed?

If you found that your dreams have changed, the best way to refactor is to answer three questions:

  1. Old Dreams: Do you have any old dreams that you want to completely discard, or some perceptions that are not valid anymore?
  2. For example, if you’ve felt like just an assistant in the office for a couple of years, but in fact you launched the last two projects on your own, maybe it’s time to think of yourself in a different, more capable light.

  3. Expectations: Do you have any expectations of yourself that you need to adjust?
  4. In my case, I’d been expecting myself to always pull off immense amounts of work, help the family, do open source and so forth, but an adjustment was due in order to be able to get back on track.

  5. New Dreams: Are there any completely new dreams that you might want to take up?
  6. For example, if you’ve just paid off your student loans, is buying a house something you would like to do next?

Hero’s Journey

You might be wondering: when is the best time for self-reflection? In movies or books, it’s easy to tell. The hero starts from modest origins, meets a mentor and goes on a ton of adventures over the arc of the story. Once the battle is over, the big revelation happens and they’re brought to a higher state of consciousness. By default, they reflect and refactor.

Gollum needs to refactor a bit

Unfortunately, our lives are not stories from books or movies. There is no single battle and the Gates of Mordor, where after the battle we sit down, light up a pipe and reflect. Instead, there are millions of stories with their own little arcs in our lives.

We do, however, all have moments in our lives that give us a built-in opportunity to reflect and refactor.

PhD in Reflection!

For a number of people I spoke to, such a moment was finishing their studies; after a bachelor’s or master’s degree, they realized they had completely different dreams than when they started, and completely different expectations of themselves. After multiple years of study and tons of new information gained, many of them began working on something completely different.

Another great moment to reflect and refactor is if you’re moving on to a different stage in your career. If you’ve been a junior developer for a while and now you’re taking a leadership position, it’s a really good moment to think of who you’ve become and what could be next for you.

Even if you don’t stumble upon one of these natural moments to reflect and refactor, it’s important to periodically take a bit of time and listen to your inner self.

Make the time to reflect.

For example, you could head to the spa and reflect while you’re getting a massage or soaking in a hot tub. Take a weekend trip and reflect along the way, or head to a museum and reflect among the paintings. The important thing is to make time for reflection.

When we reflect on our lives, we tell a story about ourselves to ourselves. We build a character in our minds, that person we perceive ourselves to be, and that character, our hero, gets transformed each day, little by little.

In my story, I was seeing myself as the hero who could manage all this work and support the family, all while dealing with grief, so to say, on the fly. I didn’t notice that a lot of things had changed and that I wasn’t exactly that person anymore.

Change the Story

Now, the good thing is that we can also change the story we tell ourselves. Once you reflect and realign with yourself, you can alter your story with little changes that can drive your hero (yourself) in the desired direction.

In my story, after the airplane incident, I adjusted my work life. After a while, I started imagining my hero recovering and getting back on track.

This showed me what to look forward to. Plus, not only can you ensure that you’re in sync with your inner self, but you can also give yourself a little nudge in the direction you think is best for your future self.

Recently I’ve had some more changes in my life that have caused me to reflect and refactor quite a bit. Although it’s been a tough year for me, I’m full of hope because my girlfriend and I are expecting a baby.

A bundle of reflection!

This has been another great opportunity to reflect and refactor, to consider who I am, what I stand for and why.

Because of this change, I’ve refactored quite a lot. I adjusted the amounts of work and travel I take. I worked on strengthening ties with my extended family and have even chosen to start reading a new and exciting set of books. I feel this new adventure is going to be so much fun.

Eye-opening stuff

My new reading list!

Right now, all of you have a perfect opportunity to reflect and refactor, because you’re here at RWDevcon.

Changes in our perception of ourselves or the world are often driven by new knowledge, and in the next few days, all of you are going to gain a lot of experience. You’re going to meet a plethora of exciting people and make new friends. Most importantly, you’re going to gain a ton of new knowledge.

Use this moment while you’re inspired, while you’re making new friends, while you’re away from your normal life, and take this opportunity to reflect and refactor. I hope it helps you move on to your next heroic adventure in the stories of your lives.

Thank you very much.

Note from Ray: If you enjoyed this talk, you should join us at the next RWDevCon! We’ve sold out in previous years, so don’t miss your chance.