For sufficiently generous interpretations of "Daily"

Empathy, circuits, and self-deception

Posted: April 24th, 2012 | Author: | Filed under: Introspection, Marital advice? Really?, Self Improvement | 1 Comment »

Sometimes in life, with no warning and no obvious desperate need, something comes from out of nowhere and knocks you out of a complacent stupor.

The book

Last year, someone loaned me the book you see to the left. I decided it looked like a good plane read and took it with me to Ruby DCamp. It wasn’t particularly well-written, and was far from a page-turner. But every few pages, it was like banging a gong in my brain:

Brandon. Wake the heck up. You are acting like a selfish douche.”

Basically, you need to go right now and buy it. It helped me connect the dots on much of human behavior, especially my own, and the ludicrous things we do to avoid having to change our worldview, even just a little bit.

The basic premise is: If you are treating anyone, anywhere, in any way, as if they’re an object instead of a person, you are chipping away at your own psyche by betraying what you know is right. You’ll then manufacture a story, a version of reality that protects you from dealing with this until you lose the ability to connect with others at all.

All of this caught me off guard. I began to realize that I was wantonly wrecking relationships all around me, merely to serve the need to be right and just. I cried hot tears of shame on the flight to think of the way I’d treated strangers, coworkers, even my wife.

My finely-honed skills of justification were leading me to the kind of callousness and under-the-surface anger that I can pretty much guarantee would have ended my marriage. Basically, pretty serious stuff.

There’s a prevalent metaphor in the book about people being “in the box” that I didn’t really latch on to. However, I was struck with the non-intuitive insight that anything you do to help while in this headspace isn’t really helping. It’s like trying to chart a course to the other side of the world if you believe it’s flat. You have to step into another worldview to do anything of any use.

The Circuit

So we have this big, huge problem in our lives. And no ability to solve it by any conventional means.

Guess what the secret is to stepping out of your worldview? To want it. That’s it.

If you decide to truly desire to understand how another person is feeling, you will almost immediately reverse the effects of objectifying another human, and you will begin to put yourself in their shoes.

Unlike almost anything else in life, you can wish empathy into existence.

You then begin to wish the best for this person. You may even wonder what you could do to help this person. You may even find that there is something you can do for this person.

So here’s the thought pattern I saw emerge from this line of thinking:

  1. Judgement/Objectification (or any act of self-betrayal)
  2. Justification (the story we tell)
  3. Realization of the act of self-betrayal
  4. Desire to empathize & correct the action
  5. Re-Humanization of those we objectify (and apology)

That’s a circuit. The goal is to close it as quickly as possible. (In IT parlance, it’s about Mean Time To Resolution, not Mean Time Between Failures.)

Two examples

I’ll give two examples: one from the book, and one from my life.

In the book, on of the first stories is of a husband who’s trying to get some rest, with his sleeping wife beside him. Their baby begins crying, which he tries to ignore. He commits the first act of self-betrayal by not helping. “I’m sure she’ll get up.”

Then the justifications. “Why isn’t she getting up?” “Doesn’t she care that I have work in the morning?” “She obviously is lazy and doesn’t care about my needs.”

So here’s a fully-concocted story that buries anger and resentment inside a person. But if he’d stopped, he could have realized that he she was just his loving wife, that she was sleeping, and perhaps she really needed his help with the baby that evening.

In my own life, I’ve spent decades training all my powers of observation, psychology, and analysis on trying to stitch together someone’s story… so that I can judge them. I still have this nasty habit.

Last week, my wife and I were fortunate enough to travel to Hawaii, and we spent a morning on a cycling excursion with a newly married couple. The young lady had nothing good to say about her trip. She was staying in the most expensive hotel and dining at all the finest restaurants on the island, and found faults in every part of her trip. The bed was too soft to sleep in. The food was disappointing.

I used my skills to project into the future for this couple, and see much trouble for this princess and her pea. And what did I get for my efforts? I got to turn this young lady from a human into a measuring stick that found me superior in every observable way.

But I couldn’t leave it there. My brain is now too aware of the concept of self-betrayal to let me get away with it anymore. I began to realize that here was a young lady that had one chance to have a memorable honeymoon, things kept going wrong for her, and she hadn’t yet gathered the life experience to be grateful for what she had. There might have even been something kind I could have done to help make her trip memorable in a positive way. I stewed over this for a while, apologized to my wife for the negativity, and went back to having a wonderful time.

And that’s just one tiny example of many dozens of acts of self-betrayal I commit on a daily basis.

Closing the circuit faster

Trying to close the circuit can be overwhelming.

You have to forge new neurological pathways, which is always uncomfortable. It requires that you assume that you are not necessarily noble and good and just, which chops your ego into little pieces. Many of us rarely get past Justification. Getting past Realization can seem impossible.

But here’s the amazing thing: if you simply expose yourself to this concept and it rings true for you, it will begin to seep into your thinking. You will no longer be able to enjoy guilt-free judgment of other human beings.

I still have these moments of judgement and anger with my wife, but I now have the gnawing sensation at the back of my mind, the Bat-Signal that tells me I’ve committed an act of self-betrayal. That part is automatic.

Then, I try to see how long it takes me to close the circuit. It still often takes me a day or two to come around, but I’m getting faster in many cases. Eventually, I hope to open and close the circuit so quickly that the net effect is that I no longer sit in judgement over (or objectify) anyone.

What to do next

How many times do I need to tell you? Go get the book! But you can play along at home even if you haven’t read it. The next time you find yourself angry or seething at a person, try to just want to know how they’re feeling. Start telling yourself their story instead of yours, and see where that takes you.

I am a relatively new practitioner of this type of thinking, but I can tell you that it will open your heart to serving others. This will lead you to real friendships, lasting relationships, contentment, happiness, and pretty much every measure of success that will matter to you as you look back on life.


Introspection is a superpower

Posted: February 27th, 2012 | Author: | Filed under: Introspection | 3 Comments »

Note: please pardon the crudeness of these drawings. They were done on an iPad at 2 AM.

What does it mean?

You know what it is to be introspective, right? To be able to analyze your own patterns of thought? A person I admire a lot told me that in his hiring decisions, introspection was the a primary quality he looked for in candidates. I was surprised to hear that, but I think it’s the wisest job requirement I’ve ever heard.

A lot of people see this and conclude that they are largely passengers in life, blown about by the winds of circumstance:

People who see the world this way often have verbal giveaways. “She made me do it.” “He was really pushing my buttons.” “No one listens to me.”

Why give up so much control? Because it’s easy. When life is just reacting to outside forces, we are not responsible for our situation. The boss won’t implement your ideas. Your spouse isn’t supportive enough. You were passed over for a promotion. But it’s not your fault. You’re not responsible for the outcomes, things just happen.

We get the pleasure of being right, but without the burden of having to do anything other than complain when things inevitably go wrong.

Enter introspection.

People who can introspect recognize the fact that their own biases, distortions, and assumptions sit in between actions and consequences, and they have a dramatic influence over our interpretation of reality.

Five people can literally see the same thing and draw five radically different conclusions. The reason is that they each have a complex set of machinery inside their brains that literally alters their reality. How many times have you perceived a slight when there was none? How many times have you been asked “what is that supposed to mean?” when it was supposed to mean exactly what you said? Have you ever remembered something so vividly, only to find out that wasn’t how it happened at all?

Introspection is the work you put in to see your internal machinery for what it is.

What do you do with it?

Being introspective doesn’t necessarily carry any requirement that you act on it, but it makes justifying inaction very difficult.

Here’s an example. Recently, I had an altercation where I got into a tug-of-war with a coworker, and I angrily and passive-aggressively “took my ball and went home”. He was clearly in the wrong. I was right. I was justified. My position was infinitely defensible. Everyone else saw it my way. I won, case closed.

But there it was, gnawing at the back of my mind… what if I wasn’t right? What if I wanted so badly to be right that I was willing to damage relationships to win? (And make no mistake, that’s how it went down.)

Did I apologize? No. Why not? Because shut up, that’s why not. OK, I’m still a bit defensive about it. But the time I took to analyze my actions and position won’t let me get away with this behavior next time. That’s a tiny, broken piece of me that I will fix the next time I encounter a similar situation.

Maybe over time I’ll be able to deal with these situations in real time rather than damaging one relationship to save the next.

The problem is that we all build a thick, protective shell around our internal machinery throughout our lives. It keeps us from getting hurt by what others say or do, but it also inhibits the ability to take in precious lessons or advice. The great thing about having a habit of introspection is that you don’t have to do anything, this shell breaks down, becomes more permeable, and allows lessons to seep in.

Basically, introspection to me isn’t so much the act of introspecting as it is an openness to the lessons all around you, and specifically not closing off when confronted with things that are difficult to hear.

Lots of small epiphanies > one big epiphany

I could tell you 4 or 5 pretty awesome stories of how introspection caused me to shift my thinking in a significant way, but that’s not actually what has had the most major impact on my personal happiness.

The biggest change has been creating the habit of cracking open this machinery to allow me to tinker a little bit, every day. Without much effort, by default I now observe my own behavior and thinking, ask why I did things a certain way, and wonder if it could have been done better.

Just like software developers get used to dealing with hard problems they don’t have answers for, introspective folks get used to challenging their own assumptions and cognitive biases and asking hard questions that may return answers they fear.

What’s the benefit?

Software developers know all about continuous improvement. That’s the whole promise of the Agile movement: small, continuous tweaks based on quick feedback to improve something until it’s shiny and wonderful.

Introspection is the path to an agile life: the ability to frequently refine and improve your interpretation of reality (and your behavior) until you are in a place where happiness is no longer dependent on external sources. And I’d contend that no one ever achieved happiness when it was dependent on external sources.

Introspection also allows you to confront and address the things you fear, to the point where you wonder why you’d ever feared those things in the first place.

Lastly, it’s a prerequisite for true empathy. Once you start asking yourself why you do things, you can’t help but wonder what you would do in someone else’s position. Empathy is a powerful ally (that’ll have to wait for another post), but I don’t believe I’ve met a person in possession of it who lacked the ability to introspect.

So the benefit is lifelong, intrinsic happiness. And mastery over fear. Also the ability to empathize. So, you know, good things.

How do you get it?

You could go become an addict and wake up in a pool of your own vomit. People often take stock of their lives and figure out where they went wrong when they hit “rock bottom”. It also carries with it some downsides… for instance, waking up in a pool of your own vomit. This also generally produces one large, temporary epiphany, rather than establishing a habit of introspection.

You could meditate. I plan to put this into practice in the future, but it’s not how I learned to introspect. I know some people who claim to meditate who aren’t particularly introspective, so it’s not a 1:1 ratio here.

You could ask others hard questions about you. I asked my wife recently if she was disappointed in me for gaining weight after having lost it, and she said “I don’t know… I guess I am.” That’s a hard truth to take in, but you can’t possibly claim to possess true introspection without being open to hard truths.

Hang out with truth-tellers. For my money, hanging out with truth-tellers has had more impact than anything else. Having close friends who are willing to call BS when I’ve deceived myself has precipitated my most painful lessons and greatest personal leaps forward over the past few years.

This is going to sound dumb, but also in this category, I’d put “listen to the Back to Work podcast with Merlin Mann and Dan Benjamin”. They are truth-tellers and you should just start at the beginning and listen to as many as you can stand, until you develop an internal Merlin Mann you can hear cajoling you into being honest with yourself.

Ask “5 whys”. This is a classic problem-solving technique. If you hit pause and analyze your reaction to something, ask why you did it, and why you did the thing that was the reason you did it, etc., you’ll often find it relatively easy to untangle the source and reasons for your own thinking and behavior. This is easy to do (but hard to remember to do) and yields lots of insight.

The temptation is to ask 1 or 2 whys and declare victory over self-ignorance. You’ll typically know when you’ve reached internal bedrock though, because it will be uncomfortable, scary, even painful.

Ask “what if I’m wrong?” When I have something negative to say about someone else and I’m feeling aware and introspective, I try to imagine the scenario that would unfold in the completely impossible event that I’m wrong. What if that guy isn’t a douchebag… what if he’s just trying to live his life like the rest of us? What if this thing that I blindly put faith and energy into is incorrect? This is the hardest to do by a long shot, so consider that the advanced course.

This stuff will change your life

I’m infinitely grateful for the friends and situations that I’ve encountered that have opened up this style of thinking to me. There aren’t many things I can share with people that I can guarantee will change their lives, but helping people trend toward greater introspection is one of them.

If you’ll put some of these into practice I can promise some new kinds of pain as you wince at yourself, but also a new or refreshed ability to take control of your own happiness, and even your life. I’m curious to hear back from you (here or on Twitter) if you have other methods of introspection, other examples, or if you find any of this to differ from your experience.


Learning to Program, Part III: Why you should learn (and why it’s easier than you think)

Posted: January 25th, 2012 | Author: | Filed under: Education, Programming | Tags: | 3 Comments »

This is a part of a three-article series on my journey so far as a programmer:

  1. How I learned to program
  2. Programming lessons that changed my life
  3. Why everyone should learn to program (and where to start)

I’ve previously said that the problem with attracting new programmers is not in explaining how to program, it’s in helping people understand why to program.

So why learn to program, aside from the life lessons mentioned in the last post? A lot of reasons, actually.

It really is a form of “digital literacy”. Even if you decide programming isn’t how you’ll make a living, having these skills is like knowing how your car is put together: you will often know how to fix problems yourself, but even when you have to take it to the mechanic, you’re more likely to be taken seriously.

You’ll run a better business. If you have an entrepreneurial bone in your body, learning to program is going to return rewards to you many times over when starting your own company. I’ve seen many startups fail because of poor technical leadership by founders, and many succeed due to good communication between management and engineering.

You’re uniquely set up to succeed. Whether your background is as a writer or a pizza maker, it will likely help bring a completely different perspective to programming, which benefits everyone, including you.

Don’t let your subconscious lie to you

One life-impacting lesson I’ve learned recently from Paul Graham is that we too often let our subconscious make the decision to steer away from things that seem difficult. We mentally file it under “impossible” and let our conscious mind plan our goals around the perceived roadblocks.

Let’s run through some of those:

“But doesn’t programming require a formal education?” No. Next question.

“Isn’t it hard?” Yes. But not in the way you’re thinking. It’s hard in the way that playing an instrument is hard, in that it is merely a matter of practice. In fact, learning to play a musical instrument is the most direct parallel to programming of which I’m aware.

“Isn’t it just for antisocial, nerdy guys?” Oh dear, let’s dive into that one.

First off, it’s time to let go of the programmer stereotype from the 1980s, because it’s not useful and no longer accurate. We have a whole new crop of stereotypes for you to choose from.

Most distressing is the fact that most women have had a lifetime of exposure to the idea that “programming is for boys”, and from a young age, mentally wall that area off. This costs us in software quite dearly, both in sheer numbers and in the diversity of perspective that smart women bring to the activity.

Don’t let a lifetime of people trying to intimidate you (even subconsciously) prevent you from realizing that you have all the capability they do.

Programming is a special ability, akin to a superpower. It transforms you from a consumer into a maker. But it’s not for special people.

Some programmers feel otherwise, that programming is something you need special skills for. Instead of punching them in the face, just remember that a few hundred years ago, these are the types who thought reading and writing should be reserved for clergy. Learn and make all you can, so that these code hipsters can someday complain that they were programming before it went all mainstream.

Starting on your own path

Learning to program isn’t as hard as it sounds if you’re working with people who know how to ramp up the difficulty properly (and speak English instead of jargon). The Learn to Program (Ruby) book I used is a tried-and-true introduction to programming concepts, and I recommend it highly.

Because I evangelize programming to non-programmers, I am often asked, “What language should I learn?” That actually does matter, but mostly because the quality of materials available varies greatly from language to language. This is why I’d say Ruby, Python, or Javascript are great first languages: the quality of instruction materials available for all three is quite good, and they’ll have you actually building things relatively quickly.

There are great resources for new programmers online at Codecademy (Javascript), RubyMonk, and Learn Python the Hard Way. But my personal favorite, by a wide margin, is Hackety Hack (Ruby).

Find the community

Plus, with those languages, there are communities of people who are knowledgeable and generally helpful. There’s simply no substitute for personal, interactive feedback with experienced mentors. Even as a brand-new programmer, I found the pattern of showing up to local Ruby User Groups and following the attendees on Twitter to be incredibly valuable. It helped me create a support network of people who could answer questions or buoy me up when I felt like I was underwater.

Finding a local User Group, following helpful people on Twitter, joining related IRC channels (I use the fantastic IRCCloud service for this), and generally trying to grab the attention of people who do this for a living are all good ways to help luck start to fall in your favor.

Later this year, my understanding is that Mendicant University will be holding classes for newer programmers, and that may be a great time to start. If your local programming groups don’t offer workshops for new programmers, I bet they’d be open to the suggestion.

If you’re interested in learning to program, find me on Twitter and I’ll do my best either to help you or line you up with people who can.

If you knew half of the doors it’d open for you, you’d be starting one of these books or tools tonight and beating down the door of your local programming community leaders to build an initiative for new programmers. If you give learning to code half a chance, I can promise that in some significant way, opening your mind to it will have an impact on the course of your life.


Learning to program, Pt. II: Lessons that changed my life

Posted: January 24th, 2012 | Author: | Filed under: Education, Programming | Tags: | No Comments »

This is a part of a three-article series on my journey so far as a programmer:

  1. How I learned to program
  2. Programming lessons that changed my life
  3. Why everyone should learn to program (and where to start)

In the last post, I talked about how I learned to program. This process has had a profound impact on the way I think, the way I approach problems, and my outlook on life in general. Here are just of the few of the lessons this process has taught me:

Unknowns are not bad. I used to work from a place of fear. If I didn’t know how we’d solve a problem, the risk was unacceptable and we’d abandon the effort. Programmers almost never know exactly how they’ll solve a problem, only that historically, they’ve been able to solve them. This is a much better place from which to start thinking if you want to change the world.

Breaking problems down is my job. Along with the last point, if a problem looked too complex, it was easy to get overwhelmed. But programmers know they’re the last line of defense: the enzymes whose job it is to break complexity down to manageable chunks. This is the key mindset difference that makes programmers so damn special.

Sharing is good. Previous jobs, Marketing in particular, taught me each and every idea is a trade secret and must be protected. Programming leads the way in thinking that “none of us is as smart as all of us,” which is part of why software is moving humanity forward at an astounding pace.

Black boxes are stupid and harmful. I used to think that if I didn’t understand how something worked, I probably never would. Programmers don’t allow “black boxes”: they have to tear everything apart to know how it works. It’s okay to not care how something works precisely, as long as you have a general idea of what’s going on. My friend Dave Brady calls it “Leaver’s Law”: “Anything that a system does for you, it also does to you.”

Sleep is amazing. Programming has taught me that your brain will chew on things for you and often bring you the answer after a good night’s sleep (or even a long walk). Letting your subconscious process things for you is a gift and a curse: I’ve had horrible code nightmares where I couldn’t solve a problem. But more often, I’ve awoken to find last night’s unsolveable problem quite easy to untangle.

You’re a free agent. I used to feel chained to my employer, completely subject to the ups and downs of the company. I felt if I lost my job, I might just die. Programmers tend to think in projects, and an employment contract is just that: a contract that needs to be mutually beneficial, or they’ll find somewhere better to spend their time.

Develop, then trust, your intuition. Programming is a surprisingly intuitive process. Things that just “feel wrong” or “feel right” typically are. You can then find the principles that define and back up these intuitive feelings.

People get paid to do this? If you don’t marvel at that from time to time, chances are your work isn’t aligned with your passion. Even on rough days, programmers generally have a sense of how fortunate they are.

Don’t give in to the overwhelming temptation to quit. The highs are high, but prepare for soul-crushing, ego-obliterating lows. It’s important to build a network of people who know exactly how you feel.

They’re not going to eat you. You will embarrass yourself. You will write hideous code. You will ask stupid questions. But all the embarrassment you’re conditioned to feel is unwarranted, because 99% of the time, sharing things you make with other makers is a safe thing to do.

It’s not as hard as it looks. There are a number of reasons that programming looks hard from an outsider’s perspective, but it’s only hard work (there’s a big difference). Things that appear to be a cliff to newbies actually have a gentler slope on the other side. It’s still a hike, but it’s doable.

Feeling dumb is normal. We’re trained like seals to bark the right answers back at teachers, bosses, etc., and to feel awful with anything less. Programmers get really comfy with not having any answers upfront, and finding fulfillment in the discovery process.

Your capabilities are limitless… eventually. Programmers are special because they tend to look at ignorance on a topic as a passing phase. Because they have to re-learn their own profession as it’s reinvented every few years, they know that given sufficient time and attention, you could become an expert on anything you want.

Show me the code. Years ago, I figured I had to try to play political games to get ahead. I even tried to learn to golf to get in my boss’s good graces (shudder). Not so with programming. Coders either deliver a result, or they don’t. Next to sales, it’s difficult to imagine a more results-driven culture. It’s basically impossible to BS your way through, because you either make things or you don’t.

Feedback is feedback. It’s better to move forward on the wrong information or without permission than to sit still and wait for the perfect opportunity. Being proven wrong is always an acceptable outcome, because it means you’re moving, and the “perfect opportunity” seems to prefer a moving target.

It’s about the journey. This is probably the lesson that’s had the biggest impact on my life. It’s too easy to become so focused on chasing some big reward while missing all the wonderful experiences in between. If you can’t enjoy the journey you’re taking, you probably won’t love the destination either.

Above all this, I’m generally a much happier, more patient person. I’m infinitely grateful to all the people who taught me these lessons and encouraged me to keep pressing forward.

Learning to program has changed my life in vastly more ways than listed here, and it’s why I’m so passionate about making the onramp less steep for new people. In the next post, I’ll talk about why you should learn to program and how you can get started.


Learning to Program, Part I: How I did it

Posted: January 23rd, 2012 | Author: | Filed under: Education, Programming | Tags: | No Comments »

This is a part of a three-article series on my journey so far as a programmer:

  1. How I learned to program
  2. Programming lessons that changed my life
  3. Why everyone should learn to program (and where to start)

Quite often, when I tell people I left a career in marketing to teach myself to program and develop software, they react with surprise or even amazement. As much as my ego wants it to be, it’s really not all that special, and it’s something I believe anyone can do, and many should.

Here’s how I learned to program, how it changed my perspective, and how you can do the same without falling into some of the same pitfalls I did.

The spark of interest

After spending nearly 5 years learning online marketing for the startup I worked at, I had become profoundly unhappy in my job. The only path forward I saw for myself was “marketing guru” (ugh), and I was constantly depressed.

Several people, including my dad, suggested that I pick up programming, and that I might enjoy that more than my present career. I perceived it as a serious affront to my abilities as a marketer and fumed at the advice.

But eventually, I decided to take a few minutes to talk with our lead developer and brought the idea up. His response surprised me and sidestepped all my concerns: “Everyone should know how to program. It’s a part of living in modern society. It’s like knowing how to change your oil or change a tire.”

We talked late into the night, and he wanted to show me how amazing programming was. He wrote a little program in Ruby that would create different animals, give them stats, let them fight, and see who would win.

I watched the strange symbols dance around the screen and was totally fascinated and thoroughly confused.

He handed me Learn to Program by Chris Pine and suggested that I start reading it. He said that I’d know whether I had any interest within two weeks, and my response would be either “this isn’t for me,” or “people get paid to do this?”

Learning to program

I started in on the next night, and asked the second question within hours. Captivated, I spent every night for the next few weeks working through the exercises in the book.

Each day I’d run into the developers’ room to talk about concepts, check my code, or get help on the tougher exercises (looking back, a recursive algorithm for parsing an array of arrays is a bit much for beginners).

Clearly, it was a stroke of luck that I worked with wonderful, knowledgeable people who were too happy to help me along the path.

I continued this pattern of learning new concepts through several more books, the best of which was Beginning Ruby, by Peter Cooper. I then picked up Agile Web Development with Rails and started building Rails apps along with the tutorials. I was actually making stuff, and felt like I could take on the world.

Getting overwhelmed

From there, the books thing was working so well that I kept rolling with it. I picked up several advanced books that started to take me off track. Somewhere between Design Patterns in Ruby and Test-Driven Development, I started to feel like I’d gotten in over my head.

To make matters worse, I couldn’t separate what I was learning about Ruby from Rails. I didn’t understand where the language ended and the framework began. Did I have to read the whole “Programming Ruby” book? What about Rails books? What was MVC? I had to learn Javascript too? And CSS? And HTML?

I confided in my friend and admitted that I’d failed as a programmer. I couldn’t do it all at once, and there didn’t seem to be a way to break it up. He told me, “That’s enough, your problem is too many books. You need to write some code and go from there.”

My first projects

My friend was right: it was time to just start making things. I got tiny assignments from the dev team: small copy or functionality changes, or bite-size features that were low-risk if I failed.

The things I built were embarrassingly elementary, but it’s an amazing feeling to ship code, and I felt back on track.

I tried and failed at a few more side projects. I was wholly unprepared to build the square-foot-gardening app I wanted to make, having underestimated its difficulty.

It was about this time that the company started to go under and I was shown the door. I suddenly lost my support network, and it became more difficult to practice my coding skills.

Luckily, just a few months later, I discovered Ruby Mendicant University. Started by Gregory Brown, it’s a free online school for intermediate programmers with a strong focus on building stuff for real-life situations.

Going full-time

After completing the core Mendicant University course, my projects became slightly more ambitious: A video upload site that limits you to 1 minute (a terrible idea, if you’re considering it), then a lunch-voting app, ToDoGroove, and now Hashbadges, which is mostly under wraps for the time being.

Even with all that, I still had a mental block about becoming a full-time programmer. I was more comfortable hanging back a bit and helping manage programmers than trying to write code that would actually be used in the business.

Luckily, I had a friend call me out on this and tell me that it was do-or-die time. I either needed to start coding and stop making excuses, or be happy with a non-technical role. We spent the next week pair programming, and I realized that I really am capable of programming full-time.

That week, I moved my desk into the programmers’ area and decided to become a full-time developer. (Kudos to my employer for not firing me for that one.)

I’ve only been a full-time programmer for about 5 months, but it’s been the most fun and interesting few months of my career thus far.

I have no idea where the future is taking me, because I’m having so much fun with what I’m doing now. No matter what I decide to do next, the act of learning to program has taught me lessons that completely altered the course of my life.

I’ll outline those lessons more fully in the next post.


Stone soup and software projects

Posted: January 9th, 2012 | Author: | Filed under: Faking It, Successful Projects | 1 Comment »

by Cyron via Flickr

Lately, I’ve discovered that processes are not the key to successful projects. But good metaphors lead you to communication shortcuts that sometimes are keys to success.

Specifically, I’ve drawn a lot of value from the story of Stone Soup.

The story

For the unfamiliar, it’s a very old story of a tramp who travels to a town in search of some food. Hungry and destitute, he knows better than to ask the townfolk for a handout. Instead, he offers the villagers the best soup they’ve ever had, “Stone Soup.”

Having intrigued the villagers, he drops his “soup stone” in a large pot and brings it a boil. He tastes it, adding that it just needs a bit of barley and salt to be complete. Then, the story goes, he gradually asks other villagers for more ingredients to make it “just right”: chicken stock, celery, flour, and so on. Everyone shares in the soup, and the stone is extracted, ready to earn a free meal for its owner in the next town.

Starting with nothing

Most projects (especially software projects) are astonishingly like this story.

If you’re building software for a customer or group of customers, you must start with only a stone and a promise of soup to come. That’s probably a familiar feeling to many developers.

Unless you’re writing software to an exact set of specs (in which case, you’re doomed, sorry to say), your customers don’t know exactly what they want. They also don’t want to provide you with the tools, data, and requirements you literally can’t move forward without.

Making matters worse, their expectations are that you’ll magically appear with the project, after reading their minds, overcoming all obstacles, and satisfying all dependencies.

Stone soup is how you show them some of this magic.

Some see the tramp in this story as a charlatan, but I am going to use the term “instigator”: the guy or gal with the guts to set up a pot of boiling water and throw in the stone. The instigator goes out on a limb to make things happen.

Here’s how you can start making some soup:

Find your stone

You are now the keeper of the stone. You’re the instigator. Why you? Because you are probably the only person that knows there’s even supposed to be a stone.

In my experience, throwing the stone into the pot involves skipping a lengthy requirements phase and taking that risky first stab at the product.

There are arguments for building low-fi mockups and some for high-fi, functioning prototypes. As I’ve gotten better at building products, I’ve found high-fidelity prototypes to extract more valuable feedback.

I’ve also heard this called a “straw man”. The point is to start the conversation by putting something in a customer’s hands to either love or hate.

Adding ingredients

Projects often grind to a halt when people fail to deliver on their part of the bargain. This is where I’ve watched projects languish and then die.

Momentum is everything in this phase. No, you won’t get all the ingredients you think you need for your soup. But you do need ingredients of some kind or the boil dies down, interest is lost, and everyone goes home with empty stomachs.

So if one person or group isn’t delivering and is holding things up, it’s time to get creative. What can you put in that would move the conversation forward? Can you get data from a different source that would still be valuable? Can you show a reasonable facsimile of this feature using only the tools you have on hand?

This ingenuity both helps solidify the product and creates a vacuum for the actual item you need, pointing a spotlight on the reason it’s being held up.

The finished product

Actually, that’s kind of a misnomer. The product is never finished.

But after a few iterations on the original concept, you have something worth sharing, even if it’s not perfect. You may never have all the ingredients you’d planned on, but just getting the wheels unstuck generated an outcome that would never have existed otherwise.

At a micro level, the instigator never knew how the soup was going to turn out. The ingredients and tools on hand vary wildly. But at a macro level, he or she knew enough about the process to guide the participants to a shared goal: making something great.

Want to change the world? Be an instigator.

To be successful as an instigator, you must have a decent mental picture of how the soup gets made. If it’s a software project, you’d better have a working knowledge of the parts of the process, from servers, to data, to code.

Once armed with this knowledge, developing a habit of making stone soup is what sets leaders apart from those who are led. It gives you the ability to know that you’ll be able to deliver a result, even without a sure knowledge of exactly how you’ll do it.

Most people aren’t wired to want to be instigators. It’s scary and the risk of failure or embarrassment seems high. But it’s a skill that can be learned, and whether you’re a coder, a manager, or an entrepreneur, it’s required if you want to help lead successful projects and create great products.


“Never put the quality of your life in the hands of a corporation.”

Posted: January 2nd, 2012 | Author: | Filed under: Balance | No Comments »

I found this terribly moving, despite the fact that the idea of work/life balance is somewhat clichéd. (via @ashedryden)


Sprinting in the grocery aisle

Posted: December 28th, 2011 | Author: | Filed under: Decisions | No Comments »

by Daniel Incandela via Flickr

This time last year, my wife and I were planning her escape.

We worked together at the same company, and she had a promising executive career track mapped out for her there. She’d been promoted several times, and would have actually been my boss (but for that bit about her being my spouse).

So when she talked about how unhappy she was, I resisted. I didn’t want to let her give up on a great career. We never loved the idea of conforming to stereotypical gender roles. And perhaps the fact that she brought in two-thirds of our income played a part.

Ultimately though, she helped me realize that putting our son in daycare and going to work was chipping away at her self-esteem and putting her into a pretty scary depression.

So, we started plotting her exit. If we could just pay off the credit cards, we could eke by on my income. It only took a few months of austerity before she was able to say goodbye to the golden handcuffs and stay home full-time.

A couple of weeks ago, while pushing Soren in the grocery cart, she ran up and down the aisles of the store to get a laugh out of our son, who invariably requests, “go faster, faster!” While speeding down the aisle and laughing herself, she nearly ran over a group of our former coworkers.

They stopped for a few minutes to exchange pleasantries, and she trotted off, a bit embarrassed for the display.

The picture in my head of that scene makes me a bit misty-eyed, remembering the depression and pain she was in while I was encouraging her to “stick it out”, contrasted with the carefree happiness of hurtling down a grocery aisle with our three-year-old.

My wife’s been a stay-at-home mom for nearly a year now, and it’s certainly been a tough adjustment. But as long as I can help it, I’ll never ask her to trade it back away. That was her dream, and she pushed herself and me until she reached it.

So now, I have to wonder: Is what I do every day the equivalent of running up and down the aisles? For sure, some days are like that. If not, what am I trading them for? How many of those days will I let pass without doing something about it?


Making peace with being lame

Posted: December 20th, 2011 | Author: | Filed under: Talents | 1 Comment »

Credit: ShoppingDiva via Flickr

“You have to face the fact that maybe you’re just unemployable.”

I flushed with anger. My dad knew my job was on the bubble, and it was a pretty callous and insensitive thing to say.

It wasn’t until a few years later that he explained that he meant that as a compliment. He said, “unemployable means that you stop being able to work for idiots, and you start realizing they’re all idiots.”

I still don’t know about the “unemployable” bit, but imagine the hell it would be to live as someone who fits that definition of unemployable and yet tries to fit into a mold of the model employee. I think I could live down the legacy of, “Wow, he sure was lame at working for idiots.”

I used to get frustrated with my wife for not caring enough about her work. Where was the ambition? Her coworkers and bosses recognized her potential, so why didn’t she?

It turns out that their (and my) mold for her wasn’t what came naturally to her. She wanted to be a mom, and she’s turned out to be so wonderful at it that I could burst with pride.

What about you? You’re probably awesome at a lot of things. You’re probably also lame at a bunch of other things. Those peaks and valleys make up your gifts, temperament, skills, and pretty much everything else that we cobble together to form an identity.

And it’s all too tempting to look around and see the peaks in others’ lives and fixate on the valleys in your own. How hypocritical and unfair is that?

If you’re anything like me, you too often spend your days filling in the valleys, obsessing over your weaknesses, then start piling up guilt for not having the time and energy to get it all done (which itself deserves another post).

Meanwhile, you’re sitting on a gold mine of talent. There are things you do naturally 10 times better than most of the people around you, and it’s likely that you’re downplaying those gifts to fit in a mold that was cast for someone else.

Most people I meet who feel insufficient and broken are exactly the right fit in a completely different puzzle.

The most innovative and successful people of our time have almost universally been unemployable misfits. The universe needed exactly them, and they were lucky or brave enough to discover why before they let society hammer them into the wrong holes.

Let me break it down for you:

(Stuff you’re good at)  x  (Time you have on earth) = Your impact

There is simply not enough time to get really great at everything, even if you did have the capacity. Which you don’t. Sorry.

I believe that if you’re not spending the majority of your days exploiting your own talents and experience, doing what comes naturally to you, you’re not having the impact you could at your work, in your life, or in the world.

This is not to say you won’t have to do hard things! But life is hard enough, you don’t have to dial the difficulty up and handicap yourself.

Stop for a moment. Think about what it is that you do really well. Do those things give you a multiplied impact where you are? If not, that may be a sign that you’re the exact right fit for something else.

Will this guarantee that you’re happy? No. But not following the simple formula pretty much guarantees you’ll be unhappy.

So go ahead, keep improving you, but exactly you is just great. You need no additional skills or experience to do amazing things. Ironically, to do so, you have to make peace with being lame at everything else.


Someone else’s vision

Posted: December 6th, 2011 | Author: | Filed under: Vision | No Comments »

Pop quiz: what’s your vision for your current job or project? For your career? For your life?

Don’t know? Many of us don’t. And that’s a shame.

You can knock the Color guys for having a comparatively short-sighted vision, but Nest creator Tony Fadell’s original vision was to be acquired by Apple. That seems to have worked out relatively well for all involved.

Whether they succeed or fail, they’re likely to win eventually, because they have a vision, and it’s theirs.

I spent years throwing myself wholeheartedly into helping realize “someone else’s vision”, but came up empty and disappointed. After that, I bristled at the idea of fulfilling and enriching someone else at the expense of my time and talents.

Back then, I used to sit around and wait for “leadership” to come down from the mountain with their “vision” engraved on stone tablets. But that’s a copout, and like all forms of giving away personal control and accountability, it’s likely to end in frustration and resentment.

Not long ago, I was talking with a friend who said of his boss: “I can’t wait to go make him a bunch of money.” I was surprised. Why would he want that?

When I thought about it, I imagined that it was twofold: 1) This meant my friend knew that if he could make someone else a bunch of money, he could do it for himself if he really wanted to, and 2) He got to have a clear idea of what he wanted to accomplish and how to measure his success.

After that, I started thinking about my areas of influence, the things I was good at, and the things I cared about, and picked something to try to drastically improve at my workplace. It wouldn’t be perfect, but it would be mine.

I now make a point of developing a very clear idea of what I want to accomplish and how I’ll measure it. It helps to write it down. I try to keep this vision short-term, and re-evaluate about every 90 days. I’ve also found that it’s crucially important that this vision is of  your own making, and not handed to you.

Having a clear vision like that puts all of your thoughts and activities into a crucible. It’s easy to turn down distractions like needless meetings, tasks, or time-wasting when you have a strong, understandable, near-term vision for what you want to accomplish.

There’s a sort of primal, inherent fear of taking the risk in accepting that kind of responsibility. But if you really analyze it, would you trade risking greatness for a guarantee to wallow in the hell of mediocrity?

Yes, it can be scary. But if you are able to discover a vision, nail it down, focus on it, and achieve it, I promise you won’t find many things in life so energizing and rewarding. And it won’t be long before yours is the only vision you’re striving to achieve, while others line up to join you.

Think about it. Are you laboring for someone else’s vision? Have you been frustrated by it? What can you do to find your own?


Embracing the tradeoffs

Posted: November 28th, 2011 | Author: | Filed under: Decisions | 2 Comments »

Sometimes Seth Godin’s posts are a little too short and sweet.

His argument is that a decision without tradeoffs is not a decision. I assume the point was that without acknowledging that you’re giving something up, you’re probably deluding yourself into thinking you’re doing things “the right way” rather than “the best option given current understanding”.

I sort of have to infer that, because there’s no context or explanation. I would also assume that Seth would agree that those “decisionless decisions” are lazy and cowardly and optimized for shifting blame for failure, rather than a calculated risk with a specific reward in mind.

But I’d go a step further and say that unless you embrace the tradeoffs, you didn’t make a decision, you’re letting decisions feel like circumstances, and letting them push you around.

About a year ago, my wife and I made a commitment to getting out of credit card debt and letting her become a stay-at-home mom. She’s now been home for about 9 months, and it’s been wonderful in many ways.

But last night, I caught myself complaining about my financial situation. It’s our first holiday season on a single income, and some unexpected home repairs didn’t come at the best time.

The thing is, we knew this was coming. We knew we’d be making some sacrifices after years of high comfort and low worry. So it’s disingenuous to complain about it at all. It’s certainly not true of every couple, but in our situation, we’d much rather have a little stress about money and have the benefits of a stay-at-home parent. When I’m being mindful to embrace the tradeoffs, I’m immensely grateful that’s even an option for us.

Why embrace the tradeoffs?

It’s a formula for focus. Creating a product for a niche market imposes severe limits on mass adoption, but it lets you stop trying to be everything to everyone.  For my wife and I, embracing the tradeoffs gave us the vision we needed to get out of debt.

It provides strength when you need it most. When people undertake something without predicting and embracing tradeoffs, the first serious challenges come as a shock, and this is where most people quit. Understanding and remembering what you planned to give up is often all it takes to stick through those rough patches.

It puts you in the driver’s seat. Embracing the tradeoffs means that even when everything isn’t rosy, the decision was yours, and you also have the ability to change couse if necessary. You’re not the victim of circumstances beyond your control, you’re experiencing the effects of a decision you made.

How do you know whether you’re embracing the tradeoffs?

If you’re complaining about your circumstances, I can pretty much guarantee you’re not embracing them. Any time you catch yourself complaining about a circumstance, you’re probably complaining about the effects of a decision that you made. This is, in essence, complaining that you can’t have your cake and eat it too.

If you’re choosing the lesser of two (or more) evils, it’s unlikely that you’re embracing them. This type of decision allows you to absolve yourself of the results of that choice, and lets you place the blame on the fact that your choices were limited. It’s nearly impossible to embrace the tradeoffs you make with this mindset.

If someone else is at fault, you’ve forgotten that you even made tradeoffs in the first place. This signals a serious need to dig deep and analyze the decisions you made that put someone else in charge of such a big part of your life.

This is a fundamental concept that means the difference between success and failure in business, and often between happiness and despair in life. It isn’t about taking control, it’s about taking responsibility and ownership for your decisions. Control simply tends to follow along for the ride.


Samurai funerals and office politics

Posted: November 22nd, 2011 | Author: | Filed under: Excellence, Work | 2 Comments »

Engage in combat fully determined to die and you will be alive; wish to survive in the battle and you will surely meet death.”  -Uesugi Kenshin, 16th century

At lunch with a friend last week, we diverged into a subject that got a lot deeper than we’d intended. He asked me, “has anyone ever told you that you’re too emotionally invested in the business… that you care too much?”

Um, yes? This sent back a flood of memories.

If there’s one trait that people will remember me for at the startup I worked for, it was that I was deeply, tragically invested in the ups and downs of the company. Which isn’t ever healthy, but never less so than when your company is a nuclear meltdown of a startup.

I felt as if I might die if the company went under, if I lost my job, or a whole host of other things that were outside my control. I was anxious, I never slept, and I was profoundly depressed almost all of the time.

That company and those feelings are well behind me now. But when I’m honest, I recognize that I never did figure out how to truly divest myself of that need to attach so deeply. It’s been part of the “passion” package that I bring to the table, right?

Back to the conversation: needless to say, my friend had my attention. Another mutual friend (whom I actually knew from the nuclear startup) had relayed a story, which drove home the point in a way neither of us had thought through before:

Before a samurai goes into war, his family holds his funeral. His memory is laid to rest, his family and loved ones grieve, and he is dead for all purposes. All but the purpose of battle. 

What is left to fear? He is already dead. The only thing to gain or lose is grace and dignity in the face of an inevitable death. The samurai is now unbound by attachments and fears of pain, loss, or death, and he fights with an unmatched fearlessness and fierceness. 

I consider this to be apocryphal until I can source it, but it does create a lovely and profound metaphor for office politics.

You probably care a lot about the projects you’re working on. You want them to be done right, but there are obstacles in your way. Managers, red tape, approvals, deadlines. It’s all so bloody important.

But the thing is, you’re already dead.

When you look your boss, coworker, or CEO in the eye, you’re talking to a person that you’ll eventually have an awkward conversation with. One of you will explain to the other, in the politest terms, why you won’t be working there anymore.

All the things that mattered so much: the deadlines, the approvals, the frustrating coworker, none of it matters one whit anymore.

So what do you have left at that point?

You have the relationships you built and nurtured, the lessons you learned, the impact you made, and maybe a little bit of money for your trouble. But that’s pretty much it.

Relationships. Lessons. Impact. Money. That’s pretty much all you get, and I believe in that order.

If you’re worried about things that you don’t get to take out the front door with you, why?

When you leave, will they remember that you beat the deadline, or that you were kind and invested in the people around you?

When you leave, will they hand you a trophy for “doing it right”, or did you learn ways of doing things you’d have never thought of on your own?

When you leave, will they feel remorse for all the bureaucracy that tied you up, or that you always seemed to make things happen?

So before you stress yourself sick for that deadline, talk down to that coworker, blame that boss, or wait for someone else to fix your problems, remember that you’re already dead. You’re going to walk away with a cardboard box and precious little else, so make damn sure you’re investing in things you get to take with you.

 

P.S. It’s also interesting to note that life, as a whole, is exactly the opposite. You get to keep nothing, but you get to leave behind relationships, lessons, impact, and money… again, I believe, in that order. So as noble as it is to build these things, hoarding them is futile and sharing them is everything.


Community is my lifeline

Posted: November 21st, 2011 | Author: | Filed under: Community, Programming | 4 Comments »

Utah Ruby Users GroupNovember 10th, 2009 marked a pretty dramatic turning point in my career. The startup I worked for was in a tailspin, and a friend who’d escaped invited me to visit his new workplace for a meeting of the Utah Ruby Users Group.

This was the first time I’d attended URUG, or anything like it, and it was scary as hell. There were smart people talking about things I didn’t understand, and a guy in a fez who seemed to be asking lots of annoying questions.

Mike Moore showed off a fascinating new technology called Ruby Version Manager by a fellow named Wayne Seguin. People talked about the dramatic changes in Rails that would soon take place due to the work of people like Yehuda Katz.

I was literally incapable of processing about 90% of the conversation in the room, and terrified someone would ask me to say something and expect me to do anything but make a fool of myself.

Even though I was so bewildered that I literally cannot remember who was at that first meeting, I’ve since learned that at several of the people were there are now some of my closest friends. Over time, I became a part of this community that literally saved my career.

Here’s why I think the URUG community’s been so important to me:

1. It’s consistent.

It’s easy to forget now that there were moments where I very nearly gave up on breaking into software development. It would have been so easy for me to go back to marketing, and I had several opportunities where I could hang up my still-new coding spurs and have a long, prosperous career with the word “product”, “process” or “manager” in the title.

But I got to associate with the people at URUG every month, and I was able to keep my eyes on the prize. It repeatedly connected me with me the kind of people I wanted to emulate, and the kind of work I wanted to do.

Just having a single night where I knew I’d be around great people was an anchor when becoming a software developer still seemed like a distant goal.

2. It’s accepting.

The guy in the fez may have been irritating, but nobody chased him off. I was irritating, I’m sure, and nobody chased me off.  It was the only time I was able to have a face-to-face discussion with experienced Rubyists, ask my stupid questions, and come back next month with more.

Never once have I seen behavior at a URUG meeting that I felt embarrassed by, nor do I hear people say negative things behind others’ backs. I’m very proud to say that the kind of people who show up to user groups seem to be the kind of people who are interested in building one another up.

3. It’s a chance to contribute.

I once wrote a blog post about why I don’t contribute to open source, and now I realize I missed the point entirely. A friend pointed me to an old talk by Chad Fowler, one of my heroes, where he mentioned that people should contribute in their own specific ways.

My problem was that I was trying to contribute to the community in exactly the same way as people who are the best coders can contribute. So contribution felt like an obligation that I was failing.

That’s why one of my favorite things about the URUG is that everyone is, at some point, asked to participate. Even as a brand-new coder, I was given a topic to research and come back to share the following month. I mangled it, I’m sure, but the group interacted with me, applauded, and I gained the confidence to do it again later.

User Groups are a wonderful way for people to ease into contributing to a community without feeling like they’re competing with ninja-coder strangers on the other side of the planet. In fact, it’s so sneaky that you may not realize that you’re contributing just by being yourself and showing up.

My opportunity to help

Last week, I was asked if I’d be willing to handle the responsibility of organizing the Utah Valley Ruby Brigade. It’s intimidating, as I haven’t done anything like this before, but I am so grateful to be getting a chance to contribute the best way I know how.

At lunch with Mike Moore this week, we briefly talked about what sort of “outreach” programs we might offer to newbies. I do teach a programming class to non-programmers and think that’s a fun and noble goal. However, the most valuable thing is what URUG already offers: consistent meetups with friendly, smart people who are actively invested in one another’s success.

I can’t begin to thank Mike Moore and Jake Mallory for their work in maintaining URUG, and hope I can put at least some of the value in that I’ve received over the last two years.

For now, the best I can hope for is to bring my newcomer’s enthusiasm, not break the things that are working, and learn the rest as I go along.


Emotional bagels

Posted: October 20th, 2011 | Author: | Filed under: Excellence | Tags: | 1 Comment »

A couple of years ago, I worked in a small(ish) startup with people I absolutely loved. In fact, most of us stay in close touch and have become lifelong friends.

About once a week, I would pick up a couple of dozen bagels to bring into the office and share with coworkers. I’d get to play the hero, we’d talk and gather, and I felt like it was one way I contributed to the office culture.

But in other ways, it did little to compensate for the drain I often posed on the culture there. Unhappy in my job and with the direction of the company, I frequently vented my frustrations both privately and publicly. The company was horrendously mismanaged, and I let all the bad decisions I saw being made drive me crazy.

My dad could tell I was profoundly unhappy, and offered some advice. “I know you like taking bagels to the office, but you’re going to have to do better. You’re going to have to bring emotional bagels. Do you know what I mean?”

Sure I did, but how was I supposed to apply it?

I now know what he meant, but it was only very recently that I was able to get my head around this concept.

Knowing this flaw in myself, in my first week at my new employer, I wrote down one of my goals: “I want the time others spend here to be better because of my influence.” Since then, I’ve been shown some pretty amazing examples of how to bring emotional bagels to people. Here are a few of them:

1. Throw your support behind others’ decisions, especially if you disagree.

A friend and mentor took me aside after I strongly disagreed with a management tactic I saw. His point went straight to the heart of my problem:

“You have everything to gain by being supportive and positive, even if you absolutely hate a decision. Even if you’re right, if you’re vocal in opposition from the beginning, you’ll engage people’s defenses and that’s all they remember. If you’re supportive, you show that you’re interested in solving their problem, not serving your ego, and you’ll get a chance to offer your solution.”

The best thing about being a critic is that I get to be smugly superior without any of the responsibility of the decision-making itself. But if I can shelve my ego long enough to honestly try to support the ideas of others, I open up a lot of doors for collaboration. Plus, I’ll look like less of a jerk.

There are, of course, exceptions to this rule, when grabbing the steering wheel is the only way to keep someone from careening off a cliff. But those situations are vastly, vastly fewer than most of our egos want us to believe.

“That could work, it couldn’t hurt, let’s try it!”  is an emotional bagel.

2. You’re doing awesome.

When communicating with people around you, it’s nearly impossible to understand the effect you have on them.

If I’m having an awesome day, and I talk to you, and you say “today sucks,” you’ve just placed a burden on me. Now my day is a little less awesome, because I can’t help but notice all the little sucky things that I’d glossed over when things were awesome.

If I’m having a crappy day, and you tell me how excited you are to be doing X, my reason for hope just went up a notch.

So how are you doing? Think of a couple of the awesome things you’re doing. They must have a purpose, right? You’re doing some good in the world, so you must be doing something right.

This is totally weird, and totally true. You don’t need to lie if you’re having a rough day, but you do need to stop underestimating your power and influence.

“I’m doing awesome! I’m working on some great stuff I can’t wait to show you,” is an emotional bagel.

3. You’re there to help others shine brighter.

This is another very recent lesson. I must set aside my ego (see a pattern here?) and recognize that I have nothing to lose by helping make those around me into superstars. If my purpose is anything other than to benefit and improve the lives of others, I’m off track.

A software developer’s purpose is to create tools and products that help make people productive and happy. A manager’s job is to create an environment that helps make people productive and happy.

This doesn’t have to be a big moment of public recognition. The things that have helped me feel like a superstar have been as simple as a coworker telling me that they hadn’t thought of the way I approached a problem.

Some pretty amazing things happen when you put in the effort of looking for a person’s unique contributions: you become more tolerant of their flaws, and they tend to try to embody the good things you notice.

Even if you’re working completely in your own self-interest, you’ll never be as productive and happy as when you’re trying to help others shine a little brighter.

“One of my favorite things about you…”  is an emotional bagel.

Those are just a few of the emotional bagels I’m learning to bring to the teams I work in. I’d love to hear from you if you can think of ways people have made your day a little better.


The myth of Steve Jobs

Posted: October 13th, 2011 | Author: | Filed under: Steve Jobs | No Comments »

Today, technology lost another titan: Dennis Ritchie, the guy who basically invented the bricks that form every bit of our digital lives. It’s arguable (and even likely) that his direct societal influence was greater than Jobs’s. But his passing was not accompanied by the same rending of garments, and I’m pretty sure I know why.

I already waxed melancholy about Steve Jobs back in January. Needless to say, I was deeply and inexplicably affected by his death.

My dad visited that evening, and I shared the news, and also that I was surprised by my sense of loss. His response puzzled me a bit:

“Whenever I hear people say that they’re ‘strangely affected’ by the death of a total stranger, it’s because they’ve projected some piece of themselves onto that person. They’re grieving the loss of some part of themselves.”

I nodded, not entirely in agreement. He continued, ”So what is it that you see in him?”

“I see a guy with the capability to change the world and the guts to actually do it.”

“Well, maybe you should examine that.”

It struck me today that I, and many others, had invested deeply into the mythical archetype that Steve Jobs represented. In a very literal way, he was a real-life manifestation of the Hero’s Journey story that resonates with so many of us.

Abandoned by his birth parents. Given few advantages. Called to adventure. Accompanied by a faithful friend and advisor. Brought low just as he thought he’d achieved victory. Returned at the darkest hour, with the newfound elixir, obtained through great difficulty. The elixir brings lasting victory. This victory becomes a boon to his fellow man.

We revel in that story. We never tire of it. We want to be the Seeker, the one who brings fire to the people. We dream of our own call to adventure. But most of us hear a call to adventure many times in our lives, yet we have a thousand excuses to turn it down. But Steve Jobs didn’t. He answered the call, again and again, and he truly, without a doubt, changed the world.

What gave him this capacity? Why did he change the world many times over?

Was it luck? He certainly had several lucky breaks, meeting Woz not least among them.

Was it genius? There’s no doubt that he’d have been the smartest guy in the room in some very large rooms.

Nope, it was that thing. Namely, the absence of that thing. You know, that thing that stops you from doing something crazy? Call it fear, reason, realism, laziness, whatever you want. But it’s there, and if you’re like me, you’ve sensed it between you and your call to adventure, at least once.

I would dare say that the largest difference between the “average person” and a Steve Jobs (or any true Seeker) is the wisdom and the guts to be absolutely dismissive about whatever that thing is. Because if we don’t, that thing (which has little permanent meaning or value) dictates the terms of the precious few moments we have to spend on Earth, and we’ll never get anything meaningful done.

So yes, I’m sad for the loss of the man and the myth he represented to me.

He was our Seeker. He brought fire to the people. And now he’s gone. My heart goes to his family, who have suffered a very real loss, and I am going to be OK with mourning the loss of the myth for a bit.

When Steve Jobs passed away, I didn’t lose the ability to become a Seeker, to bring fire to the people, or to change the world. My problem is, and has been, that I still don’t know what that thing is that’s stopping me.

Maybe I should examine that.


A formula for excellence

Posted: October 4th, 2011 | Author: | Filed under: Excellence | No Comments »

Want to be excellent? I’m not saying I’m some kind of paragon of excellence, but every once in a while, I do get ahold of it. And I’ve noticed there’s a pattern that must be met before excellence can happen.

The formula is so simple, it’s become a cliché.

Actually, I’m going to share 3 clichés. BUT! They are firmly backed with facts that come out of experience.

Cliché 1: Love what you’re doing. Even if you don’t love your day job, you already feel this way about something. What do you talk about until people get irritated with you? What do you help them with even when they don’t want your help? That’s exactly the kind of craziness that Steve Jobs calls “passion”, that carries you through moments when “a sane person would quit, wouldn’t they?”

2 years ago, I thought that if I only applied myself, I could be a top-tier marketer. I’d run my own business and be outrageously successful. Only I knew I was doomed, because I just didn’t care that much about marketing.

If you don’t have “fire in the belly”, stop reading and try to think of a way to get on a track at least toward your passion, because no amount of applying yourself is going to cover the ground you lose doing stuff you don’t care about.

Cliché 2: Do it over and over again. This is not easy even with passion, and it’s quite impossible if you haven’t got it. Whether it’s building web applications or making sales calls, just by doing something a lot, you’ll become comfortable with something most people are a bit intimidated by. Soon, you’ll be astonished to realize you’ve become knowledgeable and skilled at it.

Much more importantly, doing something again and again increases the chances for happy accidents, coincidences, and relationships that propel you even deeper into your passion. This is crucial. Much of your success will look and feel like luck, but it will actually be the result of the work it takes to place yourself in favorable situations.

If your mind, heart, and hands are engaged in your passion, these happy coincidences will happen in that realm. If not, they’re liable to still happen, but you have no control over their direction. And that, tragically, is how people get into middle management.

Cliché 3: Do it better each time, even if only by a tiny bit. When hiring programmers, you have to discover if they have 5 years of experience, or whether they experienced the same year 5 times. It’s really tempting, once you become a “resident expert”, to keep tilling that same spot that you know best. But that’s not what you came here to do, is it?

Surround yourself with people who are more skilled than you. Take on challenges that you’re not 100% sure you’re up to. Get yourself in a little too deep. While it might be unwise to run headlong into something you have absolutely no experience in, even that is preferable to waking up and realizing that your fire’s gone out because you kept following Cliché 2 without moving into Cliché 3.

Bonus cliché: Take some responsibility. Even if you don’t feel 100% in control of your situation, you can still take a sliver of responsibility. Look for something, somewhere, that you care enough about to nurture and truly take responsibility for.

Sure, you might fail at whatever end goal you have in mind now, but you won’t fail at becoming excellent.


My dream, 9 years ago

Posted: September 28th, 2011 | Author: | Filed under: Embarrassing, History | No Comments »

From the “Cringe-inducing historical artifacts” file.

This was the hard-selling long form letter I’d planned to use to launch my consulting business as my ticket out of a dead-end PC technician job.

One year prior to writing this, my full-time job was picking up lunches for a web startup at a whopping 7 bucks an hour (though I think I was making 8 before it was all over).

I did end up starting the business in 2005, and due to my marketing ineptitude, I packed it in less than a year later, at a significant loss, to pursue a career in marketing (?!?!).

It’s safe to say I’m glad I didn’t achieve what I thought my life goals were 9 years ago.


12 Sexy Things You Need To Do Right Now To Not Die: A Slideshow

Posted: September 27th, 2011 | Author: | Filed under: Uncategorized | No Comments »

Seriously, you clicked this? What is wrong with you people?
Have we as a society not moved on?

(Just kidding, you know I love you.)


Mentorship-Driven Development

Posted: September 4th, 2011 | Author: | Filed under: Programming | Tags: , , | 2 Comments »

I spent a good chunk of my Sunday pair programming with a friend. It was sort of a TDD bootcamp, and I wondered what, if anything, he was getting out of it.

My guess is that he’d been mentored in the past by smart, patient people, and felt compelled to help another person along the path. Or maybe it’s just because he’s a cool guy. Either way, I’m grateful, and I can’t wait to someday be in a similar position to pay this forward.

Programming, especially in languages like Ruby and Python, is a heavily mentorship-driven activity. There are no colleges that I know of that place a focus on learning these languages. Few develop these skills in a total vacuum. (And you don’t typically want to work with those who did.)

Here are a few things I’ve learned about mentorship, especially of late:

Advice for Mentors

If you’re even marginally interested in acting as a part-time mentor, these are some fantastic behavior patterns to follow. I observed many of these while working with several people whom I see as top-class mentors:

Be patient, they learn slower than you do and will often be flat-out wrong

Ask questions you already know the answer to and let them come to a realization

Give them space to screw up. That means their hands are on the keyboard, at the whiteboard, etc.

Ask if you can be candid. Sugar-coating your feedback is a great way to make sure they don’t make progress.

Advice for Mentees

Ya’ll better recognize that you need a mentor. It’s easy to get stuck in a rut when surrounded by books and your own problem-solving skills. A few hours with someone at a higher experience level can change your entire perspective on some key concepts. Do this often enough, and you’ll grow by leaps and bounds.

You’ll probably have to build a “patchwork mentor”. You’ll likely have to stitch together a semi-cohesive mentorship out of hundreds or thousands of little interactions over the course of time.

Some people are better at mentoring than others. You will probably work with some people who simply don’t have the patience to teach you. Don’t get frustrated, they have a job to do, and you may be better off seeking help from people with a deeper well of patience, at least for now.

Some people are better at being mentored than others. Being mentored is a skill that requires just as much patience as mentoring. You have to work at developing your own patience.

Don’t take it personally. Being wrong is fine. You’re going to get honest feedback, which you need desperately right now. Your mentor may even get frustrated with you. Don’t use that as an excuse to quit.

You’re going to get directly conflicting advice. Just pick the advice that feels right and go with it for now.

Take the wheel. Don’t be afraid: you’re in a bumper car, not a Ferrari. Butt in and ask if you can drive.

Get some alone time. Go ahead and make a mess on your own, then set up code reviews to point out how you could have done better.

Be grateful. Humility is the only weapon you have to keep your mentors around and to actually learn from them.

Building your own mentorship:

Here are some ways you can build your “patchwork mentorship”. I can vouch for all of these, as they’ve all benefitted me:

User groups: I cannot overstate how much these have helped me. They dot the land. Attend one.

Mendicant University: Free online courses for intermediate Rubyists. It’s close to my heart.

Screencasts: I recommend Railscasts (free) and PeepCode ($)

Remote pairing: Evan Light just created a site for this.

Stack overflow: I mostly just lurk, but there are a TON of smart people waiting to help here.

Rails core code: Don’t be afraid of it. Dig in and see some well-crafted code.

Test suites: This is my preferred method of seeing how you’re expected to work with a codebase.

Code reviews: Go make a mess. Then let an experienced dev help you clean it up. This is powerful.

Open Source Software projects: A patient maintainer can make a great mentor. OpenHatch is a neat place to find one.

IRC: Hanging out in IRC chat is how a lot of experienced people stay in touch, and they can sometimes spare a minute to answer a question.

Blogs & Twitter: Reading good blogs or following smart people on Twitter is like having access to a factory that manufactures insight. I don’t have room to point out all the programmers who have influenced me through blogs & tweets, but they are numerous and I am grateful.

Books: Books are great. I’m a big fan of Pragmatic Programmers. Though, at this stage, I’ve often found it more productive to try and write code and then get feedback, versus the one-way communication a book provides.

Learning from a mentor is hard work. Piecing a mentorship together can be even harder, though it doesn’t need to be.

I hope this is somehow helpful to you if you’re looking for a signpost on the road to becoming a better developer.


Time management is broken. Here’s what we’re doing about it.

Posted: August 29th, 2011 | Author: | Filed under: Time management | Tags: , | No Comments »

Time management is a pretty simple problem. People, generally, want help becoming more productive. It’s up there with “lose weight” and “spend more time with family” for generic, perennial goals.

In my life, there’s often a huge disconnect: I have a near-infinite list of things I’m expected to do, yet I often find myself sitting at my desk, with absolutely no clue what I ought to do next.

There are also thousands of solutions out there trying to connect “to do” with “done”. So why on earth would we throw our hat into such a crowded ring?

Although I’ve tilted at this windmill before, my friend Dave Brady and I felt like we had a new, unique philosophical take on this that might finally work for us, and perhaps for others.

What’s broken about time management

None of the solutions I’ve tried worked for me, and I’ve tried almost everything, from Franklin Covey to Getting Things Done. I’ve spent hundreds of dollars on apps, lists, and cool zipper binders for my “What matters most” planners. I set up a WebDAV server to sync my desktop OmniFocus with my iPhone version.

So what broke?

I skipped a day. Then a week. It was okay, since I had a pretty good handle on what  I was supposed to do, and tracking it all in a single place was just extra effort.

Then I came back to my management tool, and had to stare down a massive, irrelevant, stale backlog of tasks. I wound up marking tasks as complete that I just didn’t care about anymore. I started shifting priorities around to try to put everything in neat little boxes, but it didn’t work? Why? Because life is messy.

Then, I stopped knowing what to do next. And it doesn’t take me long to wear myself out on the panic that results from this kind of paralysis.

Enter Pomodoros.

Focus: It’s what the Pomodoro technique is known for (at least in circles that know it). In a nutshell, it’s a process by which you write down your day’s tasks on a piece of paper, estimate the number of 25-minute stretches of focused effort it will take to knock out each task, set a timer, and start doing these 25-minute stretches (called “pomodoros” or “poms”) with a 5-minute break in between.

This is, of course, very good for focus. Instead of looking for distraction-free writing or working environments, you sort of “distraction-proof” yourself. It operates on a principle that I hold close: that context is sacred, and no one should be allowed to break it (least of all yourself). I can shorten my personal leash and put Twitter on the bench for 25 minutes.

Interruptions from outside, too, tend to disappear after just a little bit of training. After just a few times hearing “I’m in the middle of a pomodoro, can I hit you back in 15 minutes?”, people get a sense of where boundaries are. This alone is worth the price of admission.

Pomodoro is very much a “live for today” technique. Much of what made Franklin Covey so popular, its focus on “big picture” items also sank it for me. With Pomodoro, I trust that I’m generally on the right course, and plan today’s tasks exclusively.

But for me, the Pomodoro technique solves a bigger problem. If I’m using Pomodoro, I have a pretty good idea of what to do next. Tasks that are too small to deserve a full pomodoro get swept up and done between poms, or they sort of fall by the wayside. As long as I made sure my tasks are truly valuable while planning them, I’m generally doing the right thing at a given time.

Anecdotally, I can vouch that this is a pretty good way to make sure that what you do during the day is an approximation of what you hoped to accomplish when you started.

Why ToDoGroove?

Very simply, Dave & I think that our vision for ToDoGroove is going to not just satisfy Pomodoro technique users hoping for a web-based solution, but introduce the principles and benefits of Pomodoro to a group of people who would never have tried it otherwise.

The philosophy and goals behind ToDoGroove can be summed up in 3 statements:

1. If you don’t know what to do next, your tools have failed you.

2. If you have to lie to your tools, they’ve failed you.

3. If you go home feeling like your day was stolen, your tools have failed you.

I’m not saying ToDoGroove accomplishes those perfectly yet (or even very well), but those are the clear pass/fail targets we’re aiming for.

Who’s it for?

A wood pulp enthusiast or moleskine-toting hipster can (and likely should) stick with the pen-and-paper flavor of the Pomodoro technique. On paper, you have the advantage of having to re-plan from scratch, every day, with no carryover of cruft.

But it’s easy to see where a digital version has advantages: possibilities suddenly open up for integration with other services, analytics, and automation (i.e. reminders).

Ultimately, I found several components in Pomodoro that worked, but pen-and-paper simply won’t cut it for me. That’s not where I live.

Our hope is that the people who have tried a lot of other stuff will find their home in Pomodoro like we have, and that ToDoGroove will be partially responsible for people feeling a sense of control over their day (and ultimately, their destiny).

A quick introduction

ToDoGroove works simply (thanks to some advice from a designer friend who freaked out at our overly-complicated mockups).

You log in, create tasks, tag them, and estimate effort. As you complete pomodoros on a task, you mark them off, and finally mark a task as complete.

How we use it now

The first thing I do in the morning, unless I’m being derelict, is to spend my first pomodoro planning the day’s poms.

I go through and mercilessly revise, delete, or archive prior tasks. I might dig through the archive to find tasks that might be worth reviving.

My tasks are tagged simply, with “work”, “home”, “todogroove”, etc. At work, I click the drop-down to jump into tasks tagged “work”.

Personally, I further drill down into Focus Mode to stay tied to the task I am working on at a given time, but Dave tends to get work done from his basic task list.

We use an external timer to track the 25-minute pom and the 5-minute break. I use a basic free one on the web, but you can get a really nice one for Mac for $5.

I find a lot of satisfaction in ticking a pom, and I typically force myself to take a break, check Twitter and email (briefly!), but try to clear my mind for the next pom.

My first day, I got 0 poms done. My second, I got 1. Third, I got 2. Then 4. Then 8. Now, I tend to get 6-10, depending on whether I have meetings to attend.

The Merlin Mann school of prioritization

You’ll notice a profound lack of “prioritization” in ToDoGroove. I subscribe to the Merlin Mann school, wherein there are two priorities: “I’m going to do it” or “it’s in the trash can”. I use the Archive as a trash can, and Delete as the incinerator. Planning one day of tasks at a time does a lot to keep me from obsessing over “priorities”.

That said, there may be need to order the tasks. Dave does this by prepending a number to his tasks. (So far, pretty much every feature we’ve built into ToDoGroove has been first hacked in and tested like this.)

So what’s next?

Seriously, a Pomodoro app without a timer? Dave thinks it’s a great idea, I don’t so much, though I do agree that timers are a commodity and shouldn’t be our main focus.

There are a lot of rough edges. A lot of the stuff we’re doing should be done via AJAX but isn’t yet, making our app feel a little janky and slow. There’s currently no way to reset your password or even view your archive.

We haven’t really kicked in analytics yet. Completed tasks hang around after they’re useful. Things like that.

We want to wipe the table of estimations every day, make tasks older than 3 days auto-archive, and make your first task every day auto-populate with “Plan today’s pomodoros”. But to feel comfortable doing that, I feel like you’ll need a place to configure settings or opt out of those.

Call for help

We can guess at this, but the reality is, we need your help. We’re creating the app we want, but we’d sure like to make sure it works for 80% of people. I’ve already gotten suggestions ranging from low-hanging fruit (recurring task lists) to some philosophically sticky wickets (using poms to let frustrated wives limit Minecraft time).

Really, the only way we’re going to make ToDoGroove capable of achieving its vision is to have you try it and to get your feedback. It’s very rough around the edges, but it is helping us wrest control of our lives back, so we are opening the door and letting people in, albeit slowly.

Please do hit us up if you want to join the beta. Offering more information about what you want to accomplish will help us pick people who are a good match for this stage of development.

Whether you try ToDoGroove or opt for the pen-and-paper approach, all we ask is to give it a week. You’ll know it’s working if the left side tingles if you start noticing more stuff gets done.