These #trust30 prompts are getting ridiculous

Note: Day 15 of the #Trust30 initiative.

These #trust30 prompts are starting to all bleed together in an esoteric, self-involved mess. “If you could do one thing with the fraction of a second you have left in your life, how would you overcome your fear of it?”

It’s as if many of the prompts weren’t even read aloud, much less shared with anyone for feedback before posting. They’re messy, unclear, and don’t generally inspire a reaction.  Instead, I scratch and scratch until I find something that may be of value to anyone, including myself.

But now, I’m about out of gas. Only my fear of breaking a public commitment keeps me from bailing on the whole project at this point. I realize that a lot of work probably went into organizing this initiative, and I admire that and the spirit behind it. But in execution, many of the prompts themselves are often uninspired, even trite.

Yesterday’s “do the work” prompt had extraordinary potential. Instead, it was a mess.

Here’s what’s in the book, from the same passage as yesterday’s prompt:

“We look for ourselves in many places—meditation retreats, personality assessments, Twitter rankings. But the best place to find the reason why we were put on earth is a private moment immersed in our craft. In that sacred instant, we see without a reasonable doubt that we were made to create, and contribute.” -Pamela Slim

Wow, what an awesome thought that is! Where am I looking for validation and definition that isn’t going to bring me the reward I seek? What can I do today to participate in the act of creation and contribution?

Instead, it’s “What have I always wanted to do?”

I don’t know, man. I haven’t always wanted to do anything. I’m sort of figuring it out as I go along.

But the other question! Where am I looking for myself?

While I don’t believe Twitter is a total waste of time, I do think that indulging myself in associating personal value with a follower count is dangerously counterproductive, and distracts from the things that do generate true happiness and satisfaction. Yet I still catch myself indulging in each “new follower” email, confident that my existence is validated by yet another person. Or spam robot. Or corporation.

I’ve got to vacuum that out and replace it with the true sense of value that comes with creation.

What can I do today to participate in the act of creation? Well, daily writing seems to work, as does coding each day and building things that people will actually use.

I noted today that the best days are the ones where I look back and realize I was too engrossed in my work to check Twitter. Today was one of those days, and I can’t wait to have more of them.

Here’s hoping the prompts improve, and inspire me not only to write angry tirades, but to actually do something with my life.

Ambition vs. Blind Ambition

Note: Day 14 of the #Trust30 initiative.

10, 5, or even 2 years ago, I had a pretty linear view of my life’s path. I was gunning for promotions, and hurt and dismayed when I felt I was passed over for them. I was blindly ambitious.

I generally viewed my career as a project in itself, to be built, brick by brick, until I’d finally reached the income and status that would finally satisfy me (as if such a thing were attainable).

After suffering some serious pain, I entered the most wonderful growth period of my life so far, and it’s allowed me to (mostly) disconnect from this warped view of reality.

That’s the difference between ambition and blind ambition: ambition is about improving and changing things in the world, where blind ambition is only about improving things for yourself. As I have begun this journey, it’s been comforting to run across and befriend many others who were unhappy, trapped in the hamster wheel of blind ambition, and are now taking control of their lives.

For the past year or so, I’ve let go of my own vision for my future, while I start to rebuild it based on what makes me truly happy, rather than some arbitrary financial goal.

In a job interview, I was asked what career path I was on, and I told the truth: that trying to pick a path hadn’t worked out for me as well as letting go and focusing on building and improving things. I know exactly what I want right now, but I can’t say what’s a year or two down the road for me.

What opportunities am I not seizing? What paths am I not taking? The answer, at least for me, at this moment in time, is work. Instead of letting the list of things in front of me paralyze me, the answer is to pick one and get to work.

I have to be willing to let my work suck, and focus on improving it. I think that as I discover my capability for tackling larger and larger problems, my appetite and ambition will grow, and I have a real shot at making a dent in the world.

I love the distinction between ambition and blind ambition. It is not beneficial to be a social or economic climber whose only goal is to attain personal success at any cost.But that doesn’t mean you have to eschew all trappings of ambition.

Some of the least selfish people I know are wildly ambitious. I’ve already made it a point to seek them out, now my job is to learn from and emulate them.

Hey, non-programmers: surprise yourself.

Note: Day 13 of the #Trust30 initiative.

The 3 most surprising things I discovered about myself thus far:

1.) I was capable of deep & meaningful love with the woman who is my wife

2.) Parenthood came somewhat naturally to me (after a fearful and rocky start)

3.) I was capable of learning to program and getting off my life’s railroad tracks

I can’t help many people with the first two, other than to offer the advice that most people I meet who are fearful of long-term relationships or becoming a parent shouldn’t be. I wasted a lot of energy worrying about both of those things before plunging in.

But the third one, I’m wildly evangelistic about. My friend Jarom told me that everyone should learn to write a program, just like everyone should learn to change their oil, or grow a garden. It’s a part of being a participating citizen of the world in which we live.

Fortunately, I don’t have to invent the means by which you can learn and discover that learning to program is a simple, even magical process. Steve Klabnik runs Hackety Hack, a project to teach programming to non-programmers. 3o minutes with Hackety will do more to address the question, “why do people do this for a living?” than 20 hours of explanation.

It’s so fun that my wife, a non-programmer, finished it in a couple of hours and asked, “Isn’t there any more?” You’ll know whether it rings your bell (as it did mine) in less than half an hour. If you haven’t taken the plunge yet, I emphatically ask you to do so.

Seriously, click here and try it out. If you like what you experience, get in touch with me and I’ll get you lined up with more fun stuff you can do.

As for me, my challenge this week is to take the meager skills I’ve amassed over the past couple of years of tinkering and actually turn out a functioning product.

Trying to be cool nearly cost me everything

Note: Day 11 of the #Trust30 initiative.

I spent my youth being uncool. Not being considered uncool, mind you, but being absolutely, definitively uncool.

I tried extra-hard to be cool, and somehow that made me even less cool. So I was more than a little relieved when high school and its byzantine social structures were behind me.

Young Mormons are generally expected to serve a 2-year mission away from home at age 19, and being the dutiful son, I went to serve in the lovely Mississippi River valleys of Minnesota and Wisconsin.

Ah! Here was my fresh start, a chance to try again to be cool. So why wasn’t it working?

Now Nate, he was cool. He was legendary among the 250 of us serving in the region. He wasn’t just cool, he was effortlessly cool. In my many interactions with him, he would frequently tease me, and I generally felt like a loser when hanging around him.

I hated this guy. Girls swooned over him, and guys set him up as a hero to be idolized. He was exactly who I’d hoped to leave behind after high school. So a few months later, when I found out I was to be paired up and living with him, I could only mutter “no, please, no.”

But my time with Nate was revelatory. It was also just about the most fun I’ve had in my life. He saw something in me that I didn’t, and said that I had it in me to be cool if I would just recognize it.

During our months together, I studied his mannerisms and attitudes. I figured that if I emulated his behaviors and mannerisms, I’d become cool too.

And you know what? It worked! After just a few months of trying to imitate my friend, I became one of the “cool kids”, a person whose admiration was sought after. It finally happened; I was truly popular for the first time in my life.

But Nate wasn’t impressed. I believe he’d expected me to draw more from our time together than the pyrrhic victory of popularity. It didn’t take me too long to realize how empty that was, and I decided I’d just work really hard and ignore the rest, which had essentially become noise in my life.

That strategy seemed to work pretty well, and I went home after 2 years with many new lessons and a real sense that I had truly done my best to “forget myself and get to work,” as the Mormon saying goes.

However, after my 2-year mission was over, I still carried around the lessons I learned by watching Nate interact with girls. He drove them absolutely bonkers with phrases like “whatever you feel”, and by being generally aloof and untouchable with them.

I had never really been able to communicate with girls, as they generally weren’t looking for a nerdy guy who was sensitive, sweet, and awkward. So on dates, I would turn my Nate impression back on, and by damn, it did seem to work.

But each girl I dated seemed worse than the last. Every time, I’d be talking to a girl who would giggle and say, “I can never tell when you’re joking,” and for all intents and purposes, the date would be over.

Exasperated after a particularly bad date, I walked into my sister’s room and told her that I absolutely quit. I decided that day that I wasn’t going to put any more effort into dating, because there so clearly wasn’t a girl out there for me.

Sitting in her room with her was her friend Jessica, who cocked an eyebrow at my hyperbolic tirade, and I could tell I wasn’t welcome and left them alone.

After meeting Jessica  a few more times, I told my sister that I’d like to ask her out on a date, but she was clearly uninterested. As usual, I tried to play the cool guy persona and set up a (lame) excuse: I asked Jessica to come “hang out” with me as I tried to help my friend rebound after his girlfriend broke up with him.

My cool guy schtick wasn’t working, and it was clear to me the date wasn’t going well. Afterwards, my friend Caleb said he thought we got along great and that I should ask her to go on another date. I (correctly) sensed it hadn’t gone well and that she wasn’t bowled over, and I specifically said I was not going to call her again.

Caleb convinced me to give it another shot, and Jessica, having nothing better to do and weak sales resistance, gave me another shot, and another.

As we continued to get to know each other and I started to let my guard down, I found out she was specifically into nerdy, sensitive, sweet guys, and a sense of humor was critical to her.

We both began to realize that each of us was exactly what the other was looking for, quirks and all.

It was only later I realized that by pretending to be Nate, I was setting myself up to attract girls that would be attracted to Nate, not me. Imagine if I’d married one! How happy could we have possibly been to have a relationship built on illusions and trickery?

More importantly, I would have missed the chance of connecting with the love of my life. This family is the closest thing to a miracle I’ve ever experienced, and I very nearly missed all of it, ironically, because I was trying manipulate Jessica so that she would like me.

Yes, being cool can be imitated. You can become a pick-up artist by sitting in a chair and reading a book. But if you let society push you into living someone else’s life, I promise it’s going to cost you a lot more than you’d ever gain.

It was only well after our time together that I realized what Nate meant. The process of letting go of the need to be cool and being comfortable in your own skin sort of makes you cool. In a certain uncool kind of way.

My biggest fear

Note: Day 8 of the #Trust30 initiative.

Despite my attitude of overcoming fear, there is one prevailing fear that still plagues me:

I’m afraid that I’m too lazy to accomplish anything of lasting value in my life.

I’m not always lazy. When I have a goal and some sense I can accomplish it, I can tear it up. When I’m fully engaged, I will happily work 18-hour days. But lately, I spend so much time avoiding the starting of anything by picking at Twitter or catching up on RSS feeds that I suddenly realize it’s past 1 AM and it’s time to go to bed with nothing accomplished.

I’m afraid I’ve become an infovore fraud that only talks about amazing things and never does them.

I like to nibble on the periphery of the startup scene. Where’s my startup?

I hang out with programmers and rarely miss a Ruby Users Group. Where’s my great Ruby contribution?

I love to write and tell stories. Where’s my screenplay?

Is it true that if I were going to accomplish anything of significance by now, I’d have already have a history of accomplishment?

I have 5 or 6 side projects competing for my attention, and I can’t seem to devote enough time to any of them to put a dent in them, much less the universe.

The only way I see a path forward is to bail on all of these projects, for now, to work on the one thing that captivates my attention at the moment, and hope that I get back into the groove of creation. I genuinely don’t know if I’ll ever be able to get my mojo back otherwise.

I like to imagine I have the internal fortitude to do something great like _why, Greg Brown, or Wayne Seguin. But as it stands now, I don’t even know how to get on the track that leads there.

My second biggest fear is that you’ll find out about me.

I care a lot about what people think of me. So whatever you do, please don’t discover that I’m actually a pretend programmer, a fake advisor, and a blind consumer.

Embracing The Fear

Note: Day 6 of the #Trust30 initiative.

A scared little boy

A little over a year ago, my dad related to me a story from my first minutes of life that somehow led him to believe, from that point forward, that I was doomed to be scared of the universe.

His suspicions were bolstered when, from the age of 3 to 8 or 9, I would get epic and frequent night terrors. For the unfamiliar, night terrors are like super-nightmares that are indistinguishable from reality, sort of a sleeping panic attack.

I remember them vividly, to this day: I would wake up, and my parents’ room would be gone. Not locked, but a blank wall where a door had been. I would run away from home, in the middle of the night, in search of my parents in the midst of these semi-waking nightmares. Sometimes I would be brought back home by caring neighbors, sometimes by police.

Needless to say, I do worry that my son will develop night terrors (it’s genetic) and it’ll be my turn to be the panicked parent.

A scared grown-up

My dad, while mistaken, shared this “insight” on the origins of my fear (after 30 years!) as a sort of intervention. I was literally worrying myself sick about my job, my new child, Peak Oil, credit cards, taxes, and whole bunch of other stuff that was out of my control. I trudged from day to day in constant, abject terror, and I can’t overstate how hellish it is to live a terrified life.

Thinking that this fear was inborn, my dad tried to counsel me as if I had a wildly abnormal illness that must be cured.

What a load of crap.

You know The Fear? The feeling that if you lose The Job, or fail The Test, miss The Payment, blow The Interview, or don’t impress The Date, that you’ll die? That feeling that the consequences are so dire that you literally refuse to imagine them?

Yeah, that’s The Fear. It’s totally normal. And it’s a good thing.

Why good? Because eventually you will fail. You will blow the interview. Hell, I don’t really trust your perspective unless you’ve lost a job or two. And those unimaginable consequences? You’re going to live them. In fact, The Fear is likely to be a contributing factor in you losing your job, or the girl, or the opportunity. That’s the way it worked for me, anyway.

Spoiler alert: I didn’t die. These unimaginable things will come true, and they cannot kill you.

My eventual murderer (ackook/flickr)

You know what I’m going to die from? Statistically, I mean? In-N-Out Burger. But I lie in bed fantasizing about a Double-Double Animal Style, rather than trembling in fear of it. How do I get this so backward?

In fact, I was so blind that the only way for me to learn to embrace The Fear was to suffer the exact worst-case scenarios I’d avoided even imagining and come out the other side. I don’t think everyone has to learn the hard way, but I sure did.

Gratitude for The Fear

If you have The Fear, be glad, because it means you’re smart enough to know what could go wrong. It also means that once you realize that stuff will probably go wrong no matter what you do, you can make wise decisions.

There may be several smart decisions you can make: It’s smart not to try out for a sports team, ask a girl out on a date, apply for a job, or start a company. That way you never get rejected, break your heart, or publicly fail.

The wise decision is to understand these potential consequences and go for it anyway. Because you also know that rejection, heartbreak, and failure are not only survivable, but also provide you with the silver medal of additional insight.

I believe you don’t lose The Fear, but you learn to shake hands with it, grit your teeth, and move forward.

And Not-As-Smart People? They don’t get to have The Fear. They can charge through life, seizing every opportunity and generally winning through persistence, while the smart people fret their lives away.

My commitment

To bring this back to my personal commitment, I’ve been really questioning whether the things I am charged with fixing at work are even reparable. If I can fix them, I get to keep the lessons I learn and be an expert at solving this specific kind of problem.

But the problems are so big and scary that I wouldn’t really blame myself for walking away and taking a simpler path, which I’d honestly given some consideration. (I may outline this problem specifically soon, but I’ll not open that can of worms just yet.)

The fact is, I haven’t given it a fair shot yet. I don’t know whether I’ll succeed or fail, but I refuse to walk away from this challenge out of a fear of failure.

Lastly: One surefire way to break the “fear of failure” habit that most programmers already know: fail first. I have a set of measurements I’m going to set up that fail from the start, then slowly start whittling at them until they pass, and then re-evaluate. I’ll write about red-green-refactor for business process & life soon, after I’ve had a chance to run this experiment.

Deleting To-Dos with extreme prejudice

Note: Day 5 of the #Trust30 initiative.

It’s funny that I keep forgetting that there are 2 ways to cross things off your to-do list. Yes, one of them is to Get Stuff Done, and I’m a big fan of that.

But it’s actually more important to Not Get The Wrong Stuff Done.

The prompt from the Trust30 initiative is based on what you’d do with a week left in your life. In that case, I’d probably create an entirely new list. But as it is, I have the luxury of a larger time budget, and am going to try to accomplish more than I would with a week left to live.

This week, my focus is going to be to take my big to-do list and run them against the “internal compass” I’ve set forward for myself according to these goals:

1.) Make time to let my family know they’re special to me.

2.) Become a better programmer.

3.) Improve my health & get in running shape.

4.) Make my workplace a better place to be.

It’s easy to work extra hard to clear stuff off your plate. But people will never, ever stop dumping things on your plate. My goal for this week is to pick and choose the items that reflect my internal goals.

I don’t know exactly how yet, but I’m trying to learn to separate “wheat from chaff” and mercilessly terminate the rest of my to-dos without looking back.

No, it’s not perfect, but life is literally too short to worry about “clearing your plate” every day.

One place I’ll travel before I die

via priyaiyer.wordpress.com

Note: Day 4 of the #Trust30 initiative.

Apparently, weddings are kind of a thing in India. My friend Ratish was married just about a year ago in his home state of Kerala.

He’s a prolific photographer, and shortly after he came back to the U.S., he received a wedding photo album like none I’d ever seen. It was a glossy hardcover book, with hundreds of meticulously-laid-out pages. Filled with beautiful photos, creatively designed, as if each page had been laid out in Photoshop rather than in InDesign.

Some of the photos were so perfect and beautiful that I could not believe that it was real. No place on Earth could be as lovely as this, and I asked how heavily the scenes had been Photoshopped.

Ratish’s response was “not at all”, and that Kerala was really as beautiful as the pictures made it seem. It was at that moment I decided I would someday travel there, and Ratish offered to take me and my wife around the area should we decide to visit.

I think my best chance to accomplish this is to stay close to Ratish and travel home with him someday. However I get there though, consider this my public commitment that I will see Kerala before I die.

Getting off the treadmill and becoming a “seeker”

Via ratigher/Flickr

Note: Day 3 of the #Trust30 initiative, in which I outline a strong belief and how I live it.

About 8 years ago, I discovered I was trapped in the life I’d wished upon myself.

I’d gotten the “dream job” at double the pay of my previous job. I rushed out to buy a new house and a sweet sports car. We got a dog and began settling down. My work was starting to take the shape of a “career”.

That’s when the walls started closing in, and the path I was walking started to look more like a treadmill.

I remember vividly sitting in meetings with management and talking about my “5 and 10 year goals”. I literally started feeling like I had “tunnel vision”, and I could see down the hallway of my life. I suddenly had very little say in the direction it was taking. All I knew of my goals were more status, money, and responsibility, and I was going to have to run in place to get them.

Run on the treadmill, and your boss will give you promotions until you’re the boss, and then the next guy gets on the treadmill.

So I went out for the big promotion. I didn’t get it. Instead, I got fired.

That should have been the message I needed, but I wasn’t ready to abandon the treadmill yet. It took me a long time to shake off the blinders that kept giving me that sense of tunnel vision. But I truly believe that I never would have if it weren’t for my intense belief that it is my responsibility to constantly seek out and follow truth, and to set aside old assumptions.

This “seeker mentality” puts me at odds with much of society, who generally latch on to a few key principles, sometimes ferociously, and are willing to defend them to the death. Or those who are born into a set of assumptions, and never find cause to question them. While both of these groups tend to live happy lives, I could never find happiness on either path.

Maybe that’s why talk radio grates on my nerves.

The search for truth sometimes comes at a high cost. Questioning everything can shake you to your core, and it can be tempting to retreat to the warmth and safety of the familiar. Asking whether the religion you were brought up in just so happens to be the only source of truth in a 7-billion-person planet is profoundly scary, especially when you’ve spent a lifetime weaving your sense of self, your hopes for the (eternal!) future, and your social support structure into that belief system. But after deep and thorough reflection, I’ve come to the conclusion that these are belief systems that I have sort of “graduated” from.

Even on its face, the generally accepted model of “go to school and get good grades to get a good job and make lots of money and live happily ever after” is ludicrous; we all know it’s an illusion. But we’re collectively too comfortable in the lie to pop the bubble and try something different. It’s probably why there are millions of people who talk about the successes and failures of startups from the comfort of our 9-5 jobs. And although I’ve gotten off the illusory “career ladder”, I hope to someday fully “graduate” from the notion of equivocating money with happiness.

I tend to keep my beliefs intensely private. However, I hope I live them well. I try not to dismiss anyone’s beliefs out of hand, and work to really understand why someone holds to a belief or value so strongly. I often “play Devil’s Advocate” against myself to scrub the corners of my mind and keep me from becoming too tightly linked to a single point of view.

I’d like to say that I seek truth at any cost, but that’s not the case. I can unequivocally state that there are things in my life that I wouldn’t sacrifice in the quest for truth: namely, my relationship with my wife and son, or my personal happiness.

But my trust is that with more truth comes more freedom and more happiness. That’s proven out for me in my life thus far. I just hope my wife will bear with me.

I’m not saying that everyone should carry a “seeker mentality” all the time or change their belief systems. I am saying that everyone should question them. Your personal beliefs, priorities, and goals are too precious to hand over blindly to someone else.

I also think it should be a requirement of human beings that, when counting a person “dead wrong” about something, they must spend a few minutes considering the opposing view, seriously, from the other person’s perspective. This exercise has proven itself incredibly valuable on a near-daily basis for me.

Ultimately, there’s no way I could have predicted where my journey would take me 8 years ago. But that’s sort of the point of a “seeker” mentality, isn’t it? I’m so much happier than I could have imagined, and have had much more of an adventure getting here.

Cracks in the pavement

Note: this is my first post in the #trust30 “Ralph Waldo Emerson Self-Reliance” project. In the project, you commit to writing a bit every day in response to a given prompt. Today’s prompt is “the story you’d tell with 15 minutes to live”.

So many of my memories of being twelve years old are of what the pavement looked like. I remember relishing the different textures, the deeply-pocked slabs of gray, the brick-red squares. I found it comforting to watch myself propel the sidewalk behind me, its cracks passing in a rhythm that helped pass the time.

Besides, it was only practical. I would never trip on anything if I was always watching my next step.

This also provided a shield from onlookers, avoiding the discomfort of coming into eye contact. I hated eye contact, it always seemed to carry some kind of judgement with it.

But my shield was constantly under attack. My dad sharply criticized my posture, saying that my constantly staring at the ground was one of the reasons that I was picked on and bullied; that I brought it on myself. He was right, naturally.

I tried to correct my posture physically, at his advice, as if this would somehow change my entire perspective on life. Just as naturally, it didn’t.

As I got older and started deciding that I was a fundamentally good human being with intrinsic value, I began noticing that I hardly ever looked down. I began tripping on things periodically. I would smile to myself each time, a little bit proud that I’d graduated past the safety of watching my steps.

Now, my memories are of the faces of people I care deeply about, people I care less about, and people I barely know, if at all. I don’t have any idea if they had to fight for their ability to look around and see others, rather than watching the ground whoosh by.

I hope that when my eyes meet those of my young son, he sees approval and his immense value to me and to the world. I hope this becomes a model he can use for the rest of his life.

I think he’s going to be okay; he surely trips and falls enough.

Some of the best programming (or life, in fact) advice I’ve received

via Chat in the Hat/Flickr

“Your problem is not at all what you can and can’t do, but rather your expectation that things should come easy to you.”

Gregory Brown earned his spot in the Ruby Heroes roster more than a year ago, but he’s earned a central spot in my personal constellation of heroes (and friends, if I can be so bold as to claim him).

It’s been about a month since he wrote this to me, after I came into the IRC chat room, feeling like a complete fraud and failure as a programmer. Tonight, I’m rolling that sentence around in my head, and it cuts so deeply to the heart of one of my most cherished beliefs: that I am a smart, talented person who catches on to things quickly.

“You think things should be easy for a ‘real programmer’, and get frustrated when they’re hard for you.”

This belief in my inborn intelligence/talent backfires hard (and there’s a lot of science to back this up) when it comes into conflict with personal experience. When I face a problem I can’t solve alone, I’m stuck. Either I’m an idiot or the problem is so hard as to be unsolvable.

“So you work extra hard, thinking that will help you catch up.”

Historically, I’ve let my ego tell me the problem is unsolvable and I’d give up. Over the last year or two, I’ve discovered that I can throw extra effort at a problem, work day and night, and get some of the same results that more experienced people get in half the time.

But this is a hack! It’s unsustainable, and only temporarily props up my belief that I can accomplish these “out of my league” problems alone. Sooner or later, I’ve vacuumed the joy out of the problem-solving process and learn to fear and avoid it altogether. I believe this may be one of the primary sources of that complex state we call “burnout”.

“Just get the help you need from those who will spend time teaching you.”

This is the ultimate ego smasher: asking for directions. It’s so simple, so why don’t we do it more often? If you’re a programmer, you almost certainly know programmers smarter than you who know the lay of the land and would be happy to help.

Men famously hate asking for help, while most women I know find the “I must persevere alone” mentality ridiculous. This point of gender differentiation is one of the reasons I think it’s an absolute crime that we don’t have more women in programming.

“Most ‘easy’ programming things are only easy because you’ve done them 100 times and learned them years ago, not because they were easy to learn.”

Ultimately, patience with yourself is at least as much a virtue as other forms of patience. It may perhaps be the sigle most important kind. Dave Hoover, in his excellent Apprenticeship Patterns book, really tries to get you to reframe, moving the camera back so that you can take a view of your skills in terms of decades, not weeks or even years.

Lastly, it’s important to find that person or group you can turn to in the moments you feel stuck and inept. I am fortunate to have an awesome support structure through friends I’ve met in the Utah Ruby Users Group and Ruby Mendicant University.

Thanks Greg, for the advice and for giving me a place to go when I feel stuck. If you can be as patient with yourself as Greg has been with me, you’re going to turn out just fine.

Getting newbies involved in open source

Newbies: Play your cards right, and this could be you

I’d never expected much response from my last blog post, much less the overwhelming one it received. From following up on the comments alone, I’ve learned more about open source in the last couple of weeks than in the 2 years since I started coding. If you left a comment here or on HN, please trust that it was read and left an impression on me, and I thank you.

Here’s the gist of what I’ve been digging into since then, after dozens of hours of research, writing, and notes inspired by responses to that article.

It’s broken up into 2 parts:

1.) Getting newcomers involved

2.) How newbies can get started

While the emphasis changes, I believe there’s something of value for both maintainers and contributors in both sections.

Part 1: Let’s get newcomers involved in open source

 

“It’s the small things that count”

Some of the responses to my last post literally said “Get over yourself.” While that’s good advice, the fact that so many others came out as “OSS wallflowers” means that there’s room for improvement in our communities.

The loss of newcomers in OSS really is “death by a thousand cuts”. I can’t really describe to you how many times I’ve nearly given up, persevered, and then finally just quit on a project due to the cumulative friction of trying to pitch in. Besides my prior points, here are a few other places I think people get stuck:

Ugly, painful-to-use mailing lists – So many projects have a barebones mailing list that requires constant monitoring and/or huge amounts of work to pick through to find something relevant. Ugh. Google Groups is a godsend. If you don’t trust Google, you should realize it’s the minimum standard for mailing lists: Mailing list technology from 1996 doesn’t cut it; you’ll need to have forum-like organization for the archives.

IRC – You’ll be surprised how many newcomers don’t realize IRC still exists. Now that I know IRC, I absolutely love it… but don’t assume people know what it is or how to access it.

Jargon – What the hell is “diff and patch”? Is that like “clone and commit” or “fork and submit pull request”? Don’t assume people know your lingo, you might want to put up a glossary. In fact, “help us build a glossary” might be a great way to get someone involved.

Rejection – When turning down a patch, remember to include the long view. It’s easy to say “that’s not how we decided to solve that problem”, but take an extra minute to suggest something that they may be able to do with what they learned during the process.

This is a bigger problem than I realized

The quote from the headline for the previous section is from a report by Karen Rustad that’s so good and well-researched, it makes my prior article completely irrelevant.

The same kinds of obstacles that keep newbies out of OSS also affect women and minorities. This is a huge problem, and one we need to deal with soon.

I know it’s long, but I beg of you, read her paper if you care at all about why there are so few newcomers, women, or minorities involved in open source software:

http://www.littlegreenriver.com/stuffs/Outreach-Diversity-FOSS.pdf

Does a solution even exist yet?

After writing my last article, I felt compelled to prove that I’m interested in solving the problem of the “open source obstacle course” (as Greg Brown so deftly put it). I wanted to build a simple site to connect newbies with maintainers & supporters of open-source projects that could break down a lot of these walls.

I was surprised to find that such a site already exists:

This sounded familiar:

“Free, open source software loses tons of prospective contributors because it is difficult to learn how and where you can fit in.

OpenHatch is an open source community aiming to help newcomers find their way into free software projects. We work toward this goal through this website and in-person outreach events.”

This was exactly what I was looking for. I’ve had several chances to speak with Asheesh Laroia, the maintainer of the OpenHatch project, and his passion is infectious. While I’ve been loudly complaining, he’s been quietly building, and I love him for it.

Right now, the focus is on larger-scale projects, and my beloved Ruby is quite poorly represented there. But that could change if just a few Ruby maintainers started adding their projects there (i.e. RubyDoc) and using it to recruit contributors.

OpenHatch isn’t perfect. I’d like to see more of a focus on helping me find a project whose purpose, needs, and support structure are a good match for my skills and interests. I’d also like to see less of a focus on specific bugs within projects (not to mention the use of the word “bug” to describe any kind of potential contribution).

But most of the ingredients are there to create something really great: a marketplace for project owners and contributors to court one another and start building amazing stuff together.

For my part, I’m going to be putting my effort into OpenHatch, because I believe in their vision and their community.

Have the conversation.

In digging into this, I was stunned to realize that this conversation is novel in the Ruby community, but has been going on for some time in the Python community.

I think much of this is due to to the fact that Jesse Noller, who seems to carry a lot of weight in the Python community, cares about checking in and having the community self-examine to find the points of friction for new people and trying to smooth them out.

That’s an example I think every OSS community ought to learn from.

Part 2: Help! I’m a newbie, where do I start?

 

Why contribute?

Many commenters frowned on “contribution for contribution’s sake”. That’s missing the point: there’s no such thing as “contribution’s sake”, there’s always a bigger “why”. Some will say you should never help unless you’re solving a problem you specifically have, but I disagree strongly with that notion. If that were the case, you’d never loan a neighbor a cup of sugar unless they were baking you a cake.

Yes, it’s important to pick a project you care to see implemented or improved, but if your motivations are largely to participate in the OSS ecosystem, I think that’s a perfectly reasonable place to start.

Big project or little project?

There are pros and cons to both. Big projects are intimidating, with lots of nooks and crannies, with their own lingo, and they often make “celebrities” of core contributors. To a newbie, this looks like a party that you won’t get invited to for a long, long time.

But if you can find a project that is geared toward supporting contributors, your best bet may actually be in trying to help document, test, or patch a big project. Most large projects (Ruby, Python, Mozilla, Debian, and many others) have groups dedicated to helping new contributors make an impact.

Smaller projects with a single maintainer might seem easier to break into, but these maintainers rarely have the bandwidth or knowledge to support contributors very well. Either way, look for a support structure that can help you dig out when you inevitably get stuck.This includes looking for some semblance of existing documentation, which sort of means a catch-22 for projects looking for documentation help.

“Start with documentation” may be an uphill battle.

It’s amazing how much you can learn about a technology by documenting it. It’s also amazing how much context you need to have in order to document a piece of software.

I’m extremely pleased that I’ve recently started contributing documentation to an open-source project, but I drastically underestimated the difficulty of “documentation”. This is not creative writing, it’s technical documentation that requires an understanding of the technology you’re writing about.

If you’re a newbie, and a project has essentially zero documentation, it’s not likely you’ll be of much help, unless there’s someone there who will walk you through the ins and outs of the project, at length, again and again, until you get it well enough to explain to others.

Don’t expect too much handholding

In the future, I believe we’ll have systems to help onboard newer developers, but for now, you are going to have to get out a machete and clear your own path much of the time.

A good rule of thumb is that if you haven’t spent at least a few minutes searching and trying to solve an issue yourself, don’t bug a maintainer about it. If you can’t get help from a maintainer even after trying to do a lot of that legwork yourself, you may want to start looking for another project to invest your efforts in.

A few projects you can help with right now

Ruby Mendicant University – Free, community-oriented Ruby education

There are many projects in need for RbMU, and if you’ve read my earlier posts (or have attended RailsConf) you know it’s a worthy cause.

ThinkUp – Social network aggregation

They tout “100% nice people” on their front page. It’s safe to say they value contributions.

RDoc – Help document Ruby

The incomparable Steve Klabnik has created a video and instructions on how you (who, me?) can help document the Ruby programming language.

BDSM – Bash shell scripting framework

Wayne E. Seguin is a machine sent from the future to be nice to developers and make their lives easier. You should check this project out for that reason alone, but he also gave me my first OSS commit, so YAY.

Sproutcore – Super-awesome “desktop app on the web” framework

Yehuda Katz posted the understatement of the decade: “Having contributed to a number of open source projects in the past…” They put together one of the best contribution pages I’ve seen.

Sadly, this guide would be VERY hard to find if Yehuda hadn’t linked to it directly:

http://blog.sproutcore.com/dispatch-from-the-edge-contributing-to-sproutcore/

Resources you didn’t even know you had (at least, if you’re like me)

Don’t know how to get started? Here are some things you can do:

Bugmash – The recent Rails Bugmash in Boulder, CO was wildly successful. Several people got their first-ever commit to the Rails codebase.

User Groups – If you have one in your area, go. If not, start one.

Hack Nights – Whether or not you have a project to bring, don’t be shy, show up and ask if you can pair with someone on an open source project.

Remote Pairing – Ask programmers via Twitter if they’ll pair with you on a project–many will say yes.

Talk to a maintainer – Use a mailing list or IRC to just chat with a maintainer of a project… you may find you have an ability to contribute beyond bugfixes.

Teach others – Creating tutorials or screencasts about a project you use is a great way to discover its ins and outs, as well as a great way to help, without writing a line of code.

Speak out! – It was amazing to see the number of people who feel or have felt like I did. Unexpectedly, writing about my fears and frustrations drew an outpouring of ideas (yes, and criticism) about specific ways I can start contributing, as well as offers for guidance.

Don’t be shy, your community is waiting for you

If you’re wanting to help with open source software but don’t know where to start, the most important thing to realize is that you’re not alone, and that others want to help you make an impact. While it’s nice to know where you’re going, the next best thing is to stop and ask for directions from the locals.

The process of doing so for me has been to realize that the best communities in Open Source foster a culture that is going to be supportive of you asking for help, which tells me that the community is probably deserving of your help. Then, you have an opportunity to help remove some of the roadblocks that scared you at first, and upward it spirals in a virtuous cycle.

Lastly,  OSS culture is great, but there’s not a lot of time taken to come back around and thank people for their work. I want to publicly thank Mike Moore and Jake Mallory, who tirelessly organize the Utah Ruby User Group meetings, as well as Greg, Jordan, and Jia (and my fellow students) from Ruby Mendicant University.

Each of those groups has dramatically impacted my life, and if you’re not participating in them (or something very similar), you’re missing some incredible opportunities.

OK, so maybe OSS is not a shark tank after all. Please do jump in, the water really is fine.

P.S. If you’re a maintainer and care as much as I do about this topic, please visit all the links in this article. They’re written by people much smarter than me, and I could only scratch the surface of the insight they contain.

My notes from Greg’s video response

Not a post per se, but I thought I’d collect my notes from Greg’s video here for my purposes. Excellent advice throughout if you care about OSS at all. (You should still watch the video.)

The desire to get a sticker that says “you’re ready” is social conditioning that is incompatible with the diversity of work needed in open source. Being ready is just a commitment to help and a project compatible with any of your skills.

“The skills you’d need to help this project” and “ticket difficulty” would be good clarifications for maintainers. Also, “Newbie friendly” projects should clearly say that they offer more support.

It’d be nice to have a place where projects were centralized and organized by topic advertised for contribution

Not knowing where to start is OK, you just have to be able to deal with running down a couple of blind alleys first.

Failing at pull requests is winning at learning the project.

Bugmashes are a great way to dip your toe in the water and it means you’ve got a built-in invite.

Contribution guidelines may not be how you’d work in isolation, but are typically critical for the long-term viability of a project. Your patch is a one-time commitment for you, but the maintainer has to live with it forever. Keep that in mind.

Guidelines should be stated up front. For non-conforming contributions, maintainers could apply fixes for that first time, and provide feedback for future contributions.

Maintainers are as busy as busier than you are. Fixing & integrating your patches can take longer than doing the work themselves.

Not every maintainer is interested in contribution, and those who aren’t should probably put up “noobs keep off the grass” signs.

“Open source is for people who are better at this than me” is flat-out false.

Finding a bug (either organically or via a tracker) and writing a failing test case is a great way in. From there, trying to actually fix the problem is a great way to learn a codebase.

It’s a bit unfair to expect maintainers to be community-builders as well as hackers.

You shouldn’t expect immediate praise for a patch you submit, as it takes time to review and safely accept a patch. When not accepting a patch, a maintainer doesn’t always take the time to explain why they didn’t accept it.

Maintainers need to remove as many hoops as possible or risk losing many, many good contributors.

If you need a hand to hold, that’s OK, go find someone outside the project (like a coworker, user group, pair programmer, or hackfest)

If hacking takes you too long, you may have picked too large a problem. Try thinking smaller and solving an easier problem.

“The idea that you’re supposed to learn this stuff on your own is patently false.”

The idea of trying to privately study until you’ve arrived as an open-source coder is a recipe for failure.

If you just want to contribute, shop around a bit for a good fit for you, i.e. high level of developer support.

Expecting a vibrant, barn-raising community or a shark tank is drawing too sweeping a conclusion. It’s an ecosystem made up of smaller cultures. This means you need to find someone to help you find the subculture that fits you, and then work toward making the whole ecosystem better.

You probably have more resources at your disposal than you know… In my case, I could have used community resources already at my disposal rather than writing a frustrated 2 AM blog post.

Please watch this video.

Greg Brown, creator of several open-source projects and the free online Ruby Mendicant University that I participate in, put together an incredibly thoughtful video addressing my most recent post, point by point.

Thank you Greg, it’s incredibly enlightening. I still plan to collect the best of the responses to that post, but by and large, this pretty much covers it.

Why I still don’t contribute to open source

Via zen on Flickr

I am such a hypocrite. A few months ago, I posted about overcoming my fear of contributing to open source software.

Since then, I still haven’t really participated. On Twitter, I commented that OSS looks like a shark tank to newbies, and I need to back that up.

The fact is, I actively contribute in some fashion or other in several open source projects. But I still feel very much like an outsider, as my contributions aren’t typically code-related.

So why am I (and I assume, many others) still an OSS wallflower?

At the profound risk of projecting my feelings onto other people, I would like to share some objections that I feel may cause new(ish) devs to shy away from contributing to open source software.

There’s no certification, ceremony, or merit badge that says, “you’re ready to contribute to OSS”. (Though there is one for afterwards.)

It’s not obvious where to start. From what I hear, a lot of OSS contribution comes because a person needs functionality in a piece of software that isn’t there, or finds a bug. They can submit a failing test case or even a patch. In my daily use, I don’t run into many of these situations. There aren’t many devs sticking their hands out asking specifically for help on a project, and fewer still who would be willing to take a newer developer under his or her wing.

Guidelines often make a maintainer’s life easier, and mine harder. Yes, maintaining an open-source project is an arduous, thankless task. But I’ve looked at contribution rules/guidelines that turn a simple idea for a fix into a bureaucratic brick wall worthy of Microsoft. A notable contradiction to this would be Wayne Seguin’s welcoming contribution page, complete with tutorial video.

Open source is for people who are better at this than me. I realize this is probably a copout for not shipping, but I am just not comfortable that I’m at a place where I could release software that’s good enough for actual developers to use.

Trying to contribute and failing makes me feel stupid. I’ve submitted several pull requests now and had 0 accepted with no comments as to why. It’s like the universe is confirming that yes, I am an idiot, and my “help” is not helpful. What a profoundly embarrassing waste of time!

There’s no time. I have a kid, a new gig, and a mounting set of responsibilities. It takes me 3-10 times the amount of time to write code as a more experienced developer. Now, my non-code-related contributions are now eating up my former “coding time”. Yes, it’s the universal excuse, and one that I think melts away when the other excuses are removed, but it bears mentioning.

It’s pretty lonely. I think most people figure this stuff out on their own, and so maybe expecting a hand to hold is too much. But is this really some spirit walk, where no one is allowed to accompany you, lest you learn nothing?

So yes, OSS can feel daunting, even like a shark tank. I don’t have all the answers to these issues, but I’d like to see more maintainers seeking contributions with some specificity, and then actively responding to pull requests. A call for additional test cases. Bug fixes. And yes, documentation.

For all the openness of Github, there’s no Quora/StackExchange-type system to let you know which projects are in need that you might be a match for. Seems like that’d be a good feature.

Don’t flex on sleep

by Patrick Haney via Flickr

A student in Ruby Mendicant University tweeted today that he’s sleep-deprived due to overworking himself for Ruby Mendicant University. I hope I’m not partially responsible for his sleep deprivation, but I feel like I could be.

I might have set a bad precedent by throwing sleep on the RMU sacrificial altar, which is unnecessary, and even counterproductive when trying to attract and coach newer students.

In any situation where compromises must be made, you look for a “flex” point. Often in business decisions, you ask whether you flex on time, quality, or cost. Sometimes you can spend more against a hard deadline, or other times it’s better cut corners to save cost.

Often in life, we don’t put enough thought into the question of which part must flex. I didn’t think much about this during my RMU sessions, but I should have.

In my case, I had these things going on in my life: 1) Work, 2) Family, 3) Entertainment, 4) My RMU ambitions, and 5) Sleep.

It was pretty obvious that the first place that should flex is “entertainment”. I can give up TV & RSS feeds for a few weeks. No problem.

But then I found that I was still underwater. So what flexes next? Do I spend less time with family? No, that’s too important. Work? Not feasible.

That leaves sleep, or my RMU ambitions and my predefined definition of “success”. At that point, the seemingly noble choice is to flex on sleep.

The problem is, sleep should be the absolute last place you flex. Working into the wee hours of the morning has repercussions that actually start a domino effect on all the other places.

You’ve now mortgaged your entire next day: I guarantee you’ll diminish your effectiveness at job, your patience and kindness with family, and even the next day’s schoolwork!

I know this because i’ve now made the same mistake twice. Weeks after my last RMU session, I’m just now catching up on sleep and feeling like myself again.

So why did I flex on sleep? Easy: pride.

My pride wouldn’t let me scale back my RMU ambition. Sometimes pride is a good thing, as it causes us to accomplish things we normally wouldn’t. But RMU isn’t about showing what you can accomplish in a short time, it is about accomplishing what you can in the longer term, and staying on the path to mastery (at least that’s my interpretation).

What should I have done? I should have told Greg I was underwater, and scaled back my ambitions. I’m proud of what I accomplished, but the costs were just too large for my level of effort to have been a good long-term investment.

Sleep is too key a component to your success in too many areas of your life to sacrifice it for short-term gain.