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

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

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

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.

Sprinting in the grocery aisle

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

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

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

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

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

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

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

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

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

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.

Mentorship-Driven Development

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.

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.

The search for “truth” vs. the search for truth

Note: Day wibbledy-two of the #Trust30 initiative.

“Nothing is at last sacred but the integrity of your own mind. If we follow the truth, it will bring us out safe at last.” – Ralph Waldo Emerson

Absolutists love to exercise the nuclear option in an argument.

You’ve seen the badge on the rusted-out pickup that has the little Darwin fish being eaten whole by the larger fish that says “TRUTH” in it.

Far from a rational counter-argument, it’s a full-nuclear response to a (questionably) humorous tweak, saying “Oh yeah, well you’re a liar!” But then, it’s a bit unwise to expect a nuanced response from fundamentalists who are compelled to decorate their car with retaliatory badges.

I’m not offended by much, but I take offense to this particular sentiment. Because it says to me that if asked, this person would unquestionably say they are either 1) On a quest for truth, or more likely 2) in possession of the entirety of truth, distilled into roughly 2000 pages.

Most of the people I know and associate with would find that as ludicrous as I do. However, nearly all of us subscribe to this fallacy in one form or another. I’ve been trying to break that cycle in my life, and here are some things I’ve learned.

Like the pickup driver who apparently eats Darwin fish for breakfast, I have always been sure I was on a quest for truth. So is my quest for truth real, or just a quest for confirmation of the things I already believe?

To test that, here are 3 differences between the search for “truth” and the search for Truth:

1. Whether you’re questioning the basic assumptions your search is based on.

If you’re not questioning your fundamental beliefs, then you’re on a quest for comfortable “truths”, and I can only bid you good luck. But if you’re willing to stretch out, you’ll have to diversify your portfolio of worldviews.

The best way I’ve found to do this is to view your assumptions from the perspective of someone who doesn’t share them. Not in an oh-it’s-cute-they-believe-that way, but in a serious, studious way. If you’re a Christian, you owe it to your faith to study the thoughts of alternate religions and atheists (those who have considered your worldview and disagree) and ancient philosophers/Eastern religious leaders (those who never shared your worldview).

You’ll find some dramatic differences among them, but more importantly, common threads that start to emerge in line with your personal experience. These threads will start to map out your personal path to happiness. My understanding so far is that this is a decades-long process, but perhaps I’m a little slow.

2: Whether you’re willing to let go of old assumptions when finding a better set.

My search for capital-t-Truth has taken me to some powerfully uncomfortable places, having shaken me to my very core and kept me up many nights. I’ve heard several describe it identically: as “going out into the cold”, often followed by returning to the warmth of the familiar.

But when you return to the warmth of the familiar, it’s not yours anymore. You’ve now seen that there’s more out there, and life is eventually going to push you back outside, because you’ve been called on your own personal Hero’s Journey.

For me, a truth is like a pry-bar that eventually cracks open a deeply-held belief or assumption. That process can take months, or even years, depending on how stubborn I am at the moment.

And a weird phenomenon I’ve experienced is that at the very moment you decide you’re willing to let go of old assumptions, you’ll find that many better ones had been rolling around in the back of your mind for a while. As you take these newer assumptions for a spin, everything starts making more sense. It’s like exchanging someone else’s pair of glasses for your own prescription.

3: Whether you’re willing to act on the truth you discover.

This is the part I struggle with the most. As the possessor of truth, you are now held to the standard of that truth. Not by some outside force, but because you can’t believe one thing, do another, and be completely at peace.

It can be difficult to feel acceptance when you don’t have a non-changing set of beliefs to bond you to a group of people. You can feel like the outsider, that you’re the person that doesn’t “play ball”. Your only options at that point are to let go of your need for acceptance, or be really quiet about your beliefs. I haven’t entirely figured out this one yet.

One of the hardest parts of a quest for truth is being willing to make decisions with the best information you have at the time, never knowing if it will be the right thing down the road. This is especially true when making life-altering decisions for my child. But I believe this method is a damn sight better than making decisions based on a “a sure knowledge” that later proves to be untrue, then feeling the need to justify them.

The hardest part of all has to do with relationships. As much as I value my quest for truth, I value the relationships in my life more. A person on a quest for truth can be hard to rely on in a relationship, because while their compass always points north, that north is constantly moving. I frequently have to beg the forgiveness of a wife who joined a journey with me, only to have the destination keep changing.

Quest for truth == Quest for happiness?

Lastly, perhaps not everyone equates the search for truth with the search for happiness. I find joy in truth and in attempting to live truly, and I assume that would work for most everyone. But that’s another one of my assumptions, and one I can’t easily test. Basically, YMMV.

What I will say is that walking away from many of my most cherished assumptions and beliefs has altered me dramatically. I’m much happier, more accepting of myself and others, and more able to roll with life’s punches. (This, in itself, invalidates one of the dogmas I held, that true happiness was only achievable through my existing set of beliefs, but that’s another story…)

If I don’t somehow mangle my relationships in the process, I have to follow where this path leads. If I abandon the quest to preserve a relationship, I guess I’ve found the trump card to this entire argument.

Is truth beauty? Will it set you free? Will it “bring us out safe at last”? So far, yes. In the future… I sure hope so.

My Friend the Worst-Case Scenario

Note: Day something something of the #Trust30 initiative. I sort of lost track after 18 consecutive posts on overcoming fear.

When I was growing up, my dad was really into Neuro-Linguistic Programming. NLP is this sort of wacky pseudoscience that mixes hypnosis and psychology to elicit a desired outcome from a person.

I don’t know how he got into it, but I assume he thought it would make him a better salesman. Over time, he discovered the techniques worked, and they became a part of his interactions with everyone, including his kids.

One of the techniques he would use is the concept of the “worst case scenario”. As a teenager, I would stress to the point of illness over asking a girl out on a date, and he would run through this exercise with me:

“OK, imagine yourself asking her out. Now, what’s the worst possible outcome? She says no. She doesn’t want to go out with you. She doesn’t even like you. You’re embarrassed. Now, imagine yourself surviving that. Imagine your life going on after that.”

I hated having this used on me, but it did work. Being able to accept the possibility of the most dire consequences allowed me to take risks I would have avoided if I’d left that door closed.

Today, I run into “worst case scenario” situations nearly every day. When people are unfamiliar with the technique, it sort of stuns them that I almost instantly go to the worst possible outcome, and they think I must be a pessimist or fatalist.

But it’s the opposite: Imagining the worst possible outcome allows you to dredge out the darkest fear you have about taking a risk, shine a light on it, and realize that the worst case is never as bad as it seems in the pit of your stomach. It’s actually probably the number two reason for my optimism (after my belief that people are generally intrinsically good).

At work, I often think about the risks I take. I’m not in there to please my boss, I’m there to get things done (which will probably ultimately please my boss, but that’s another story). So when I worry about taking a risk at work, I think about my worst-case scenario.

I take a risk. The risk doesn’t pay off. It wasn’t what the boss wanted. In fact, it blows up on me, and he fires me. I freak out a little bit, then call my wife and apologize for being an idiot. I start looking for a job, but none come up. I can’t pay the mortgage. Our house goes into default. Our credit goes into the toilet and we have to rent an apartment while I get a lower-paying job.

That’s a lot of stuff to keep in the pit of your stomach while making a decision as small as whether to take a minor risk at work. But running that scenario out and imagining yourself surviving it and still being happy is the key to realizing that you’re the one in charge of your destiny.

Because this is the real worst case scenario:

I don’t take any risks at work. My boss is happy enough with me to never fire me, and I am promoted until I make so much money that I become addicted to it. I do just enough to never get fired, because I feel like I have nowhere else to go, and never do anything exceptional with my life, and then I die.

That’s the possibility that truly worries me. Running those two scenarios out makes me a bit more brash and daring at work. It certainly puts me in the “higher risk to be fired” category, but I’ve been fired plenty of times, and I’m still here, a bit wiser each time. I’m also constantly more likely to find work environments that have a higher tolerance for risk-taking and boldness.

Imagining the unimaginable is a technique I use over and over again to remind myself that I have a limitless field of options in front of me.

If you have something that seems too intimidating or high-risk to you, try the technique. You’ll most likely find that you hadn’t been suffering from a lack of courage, but simply a lack of perspective.