How Programming Taught Me Success

Tim Williams • May 25, 2015

Dictionary.com‘s first definition of success is “the favorable or prosperous termination of attempts or endeavors; the accomplishment of one’s goals.” Programming taught me that before success comes failure. In fact, more literally it taught me success looks more like this; fail, fail, fail, fail, success. Programming taught me perseverance. Programming brought intimate understanding of this powerful phrase coined by Michael Jordan, “To learn to succeed, you must first learn to fail.”

Learning to code wasn’t my first brush with failure. I was laid off from a major coffee chain as a middle manager because, “the company can no longer support this position.” Ouch, that one hurt. I half heartedly entertained a career as a singer song-writer, but I knew I wasn’t talented enough or attractive enough to become the next star. Hence the half-heartedness of my attempt. Even with that, the sting of failure was powerful. My twenties were ticking down, and I had very little time to fulfill my ultimate dream to change the world in some way. I wanted to contribute to society, I wanted to make an impact, I wanted to change the world for the better. I definitely wasn’t on that track.

Then I discovered code. “I’m the creative type,” I told myself, “code is analytical, left brained, I’m not smart enough to do this stuff!” I wanted to learn it anyway. I just wanted to build things. Make useful things from scratch. People need useful things built from scratch right? Looking at the average software development professional’s salary, I had concluded; “yes, people need useful things built from scratch.” That still didn’t solve the niggling problem that I didn’t know how to code.

“Where do I start,” I thought. There’s so many languages, so many code styles, and so many places to begin it’s so overwhelming! I started by picking up C++ All-in-one For Dummies. “This, is ridiculously overwhelming,” I thought. After doing research though, I had concluded that C++ was the real programmers language. It was HARD. The book broke it down into simple concepts, but I found myself googling every simple concept. I needed more background. Every time I compiled every practice exercise, it failed. “Great, another thing to add to my list of failed attempts at life.”

I

FAILED…

And I…

FAILED…

AND FAILED…

AND FAILED!!!!

Just when I was about to throw that G**** D***** laptop OUT THE WINDOW!

hello world|

I succeeded. I was a genius. I was the next Bill Gates. Hello World, I can now build ANYTHING! That feeling of success was indescribable. That feeling of success was addictive. I knew though that every new challenge, every new practice exercise meant feeling that frustrating failure again. And again. And again. And again. It was truly a rollercoaster ride.

One second I’m Bill Gates, wondering what philanthropic avenue I will take with all the money I’m sure to make, and the next minute, I might as well be a dog processing tax returns.

Failure is a Skill

Over time the cycle of fail, fail, fail, success became a habit. I knew I was going to fail. I knew every new concept I learned meant failing multiple times. It didn’t hurt any more. The sting lost it’s effectiveness. I started to realize that the more I failed, the more I learned. Every time I failed, I needed to re-learn the concept, or learn it better. When I succeeded, I moved on. I wasn’t learning from success. I started to look forward to failure. Failure meant I was going to learn the crap out of a concept.

Code as Skills for Life

I started to gain confidence. I started to realize I could apply this methodology to more things than code. I decided that I needed to learn a language that I could actually put into practice, so I taught myself visual C and Cocoa Touch with the idea of building iOS applications. I failed at that. I couldn’t find a way to get into the industry for someone with my limited self taught experience. I moved on. Learning about the pattern of failure to success through code, I knew I could persevere.

My wife needed a website for her developing photography business, so I though, “I can do that.” I taught myself the basics of Apache, HTML and JavaScript. Uptake was getting faster and faster. Each new language I was learning used the same concepts but applied them differently. I’ll be honest. It didn’t end up being the best website, but heck, it got the job done and I had fun learning along the way.

More Experience

I was hooked, and I wanted more projects. I wanted to find a way to code for a living, but I had very little to show for it. “If only someone would hire me for my potential and not my experience,” I thought. After all I had taught myself a fairly decent set of code basics. I knew that wasn’t going to fly though. So I took on free to very low paid projects. I just needed something to put on my resume. I always over-delivered. I knew that if people could see the quality and time I put into my work, I could build a fairly decent set of projects in a portfolio.

I failed a lot. I got turned down for nearly free work. That old sting of failure wasn’t totally gone yet. One day something completely unexpected happened. I made a contact who saw my potential. Bob was a consultant who contracted out web development work to a few select developers. It was an unlikely conversation that ended up with Bob offering to bring me in on a project. Here was probably the first person who could see past my inexperience to my potential. I wanted to over-deliver the crap out of any work he could give me. So I did.

My connection to Bob brought about another turning point in my career. He connected my to my mentor, Michael. Michael is a web development super star. I didn’t know I needed a mentor until I worked with Michael. On the path of learning code, there are so many directions of study you can spiral down, it’s almost ridiculous to think of doing it without a guide. Michael brought me in on more projects, and I was able to watch an expert at work. Seeing his expertise with clients and code made me realize just how close to the beginning of the journey I really was. Yes, Michael and I still work on projects together.

The Journey is Just Beginning

Don’t be fooled by my past tense message here, I’m still at the beginning of my journey. The more I learn the more I realize I still need to learn. Learning code has taught me to look forward to the next failure. Learning code has allowed me to make connections I otherwise never would have. There’s too many to fit them into a blog post. Learning code has set me on a journey of fail, fail, fail, fail … success. Maybe code will one day help me change the world.

For More Inspiration to Learn Code

This fantastic presentation given by Katrina Owens inspired this code for success rant. So for more code inspiration, I turn you over to Katrina: