LearnThe Programmer’s Journey: Ends, Means and the Stuff In-Between(s)

Gabe Nadel
writes on March 2, 2016

In my role as an iOS Teacher at Treehouse I am surrounded, virtually speaking, by students. Many of these students are trying to switch careers, often attempting to tackle their first programming language in pursuit of a big change. Some students seek higher pay, others want to build things, some want increased flexibility in their lives; there are lots of great ends to justify the means of spending your free time grinding through syntax exercises and swearing at your laptop. Judging by the feedback I get, it seems the students, collectively, waver between excitement and frustration, confusion and triumph, along with dozens of other emotions you wouldn’t expect to be the byproduct of inanimate computer code.

This mix of motivations, along with the emotions that flow from the pursuit of learning something challenging is something I think about quite a bit. The fascination isn’t purely academic mind you, many of those motivations and emotions are still very much in play for professional devs, as well.

I believe it’s for this reason that Mark Manson’s article, “The Most Important Question of Your Life,” struck a chord. In it, Manson takes the idea that your success in reaching a major goal is based less on “how bad you want it” and more on “what you are willing to suffer through to get it.” I would encourage you to read it, but for those who don’t, it is probably best embodied, by the following excerpts:

What determines your success isn’t “What do you want to enjoy?” The question is, “What pain do you want to sustain?”

Because if you want the benefits of something in life, you have to also want the costs. If you want the beach body, you have to want the sweat, the soreness, the early mornings, and the hunger pangs. If you want the yacht, you have to also want the late nights, the risky business moves, and the possibility of pissing off a person or ten thousand.

Sometimes I ask people, “How do you choose to suffer?” These people tilt their heads and look at me like I have twelve noses. But I ask because that tells me far more about you than your desires and fantasies. Because you have to choose something. You can’t have a pain-free life. It can’t all be roses and unicorns. And ultimately that’s the hard question that matters. Pleasure is an easy question. And pretty much all of us have similar answers. The more interesting question is the pain. What is the pain that you want to sustain?

If you want the benefits of something in life, you have to also want the costs.

The author goes on to detail his own half-hearted attempt to become a rock star. Along the way, he confesses that he only loved the fantasy of stardom and musicianship, but wasn’t really up for the “daily drudgery of practicing, the logistics of finding a group and rehearsing, the pain of finding gigs and actually getting people to show up… It’s a mountain of a dream and a mile-high climb to the top. And what it took me a long time to discover is that I didn’t like to climb much.”

Manson’s honesty is refreshing here, taking responsibility for his “failed” attempt, not blaming any outside forces for his abandoning his dream. Though, I think that it’s worth digging a little deeper and teasing out a few points to explore. Firstly, what we consider suffering isn’t necessarily fixed across time. In fact, it often changes dramatically, especially when you spend a lot of time doing whatever it is you initially described as suffering. Secondly, goals vary a lot and the same yardsticks of suffering and success probably shouldn’t be applied across the board – switching careers is a goal; trying to become a rock star is like a goal multiplied by the odds of winning the lottery.

When I was growing up, my parents made me play the violin. In general, I hated it and practicing thirty minutes per day was decided to be a humane-enough sentence. When I entered high school, my Dad took me to get my first “real” violin. I tried out every fiddle within a reasonable price range and went home with an unusually dark, hundred-year-old violin. From that day on, I no longer suffered through practicing. I somehow decided that I was excited about this skill I had and heading to daily rehearsal in high school was something I looked forward to from then on. The fiddle just sits in its case now, but I play other instruments and look back very fondly on concerts my orchestra got to play in far-flung places and the camaraderie that came along with it.

Similarly, I, like most runners, can remember a time when just the thought of running a single mile was suffering in and of itself. The actual running? Fuggetaboutit. Nowadays, I would literally run 50 miles a week if my schedule allowed and I wasn’t afraid of hurting myself. Not a run goes by without me thinking to myself: “boy, I really do love this running thing.” Sure, I still suffer a hair if I am trying to set a personal best, or finish a marathon, but overall, it’s pure joy.

In both cases, the same activity went from suffering to pleasure. From something you literally dread, to something you look forward to all day or week long. The lows somehow became highs, more or less by riding out the learning curve for long enough.

Learn and practice methodically and after a while, it becomes something you do, not something you try to do.

For most, learning to code is a ride along a learning curve which often feels more like an emotional roller coaster. Certainly, more so than any sort of studying one does in high school or college. It’s a weird mix of theory, language, hands-on practice, orienteering and voodoo. Feeling lost or helpless or in-over-your-head are rights of passage, but no matter how many times you read articles about impostor syndrome, it doesn’t really make it any less painful. Having confidants helps, but really, the thing that helps the most is getting far enough up the curve that the ratio of suffering to accomplishments starts to tip in your favor. Learn and practice methodically and after a while, it becomes something you do, not something you try to do.

What’s funny about programming, or rather, becoming a professional developer, is that the things you “suffer” through change over time and are different for different people. For one developer, the holy grail is being able to work from home and still only don a t-shirt for that quarterly visit to the office. For another, a looser work-life balance means they just can’t “turn it off” and end up working on nights and weekends. Some developers bemoan the fact that they need to constantly learn about the newest tools, while another actively hunts them down and spends their free time tinkering. An engineer in the next building over uses every free night to apply her craft to side projects for sale in the App Store, while her colleague revels in a job where she can close her laptop at five and not give code another thought until the next day.

It isn’t surprising this happens, I am sure if you interviewed a hundred carpenters or dentists you’d get some wildly different takes on what they like and dread about their jobs and their crafts. What makes programming somewhat unique is that the craft of programming is only loosely coupled to the job of programming. That is to say, the craft can be practiced in innumerable ways. You can set aside any pretense of working for a good cause, or reasonable hours, and pretty soon (very soon in this economy) someone will offer you loads of money to inhabit their cubicle. You can decide that you want to truly build the next great thing and there are codeless entrepreneurs aplenty waiting for you to bring their dreams to the market. You can decide that you want nothing more than to rock your pajamas all-day-every-day while setting your own schedule, until of course, you decide that you’d rather just get a steady paycheck than chase down clients.

What makes programming somewhat unique is that the craft of programming is only loosely coupled to the job of programming.

All of this to say, again, that the craft of programming doesn’t have all that much to do with the jobs you’ll find. Sure, you may be surrounded by casually dressed folks who all watch some show called Dr. Who, but if you just nod and smile, you can chime in when the conversation circles back to Star Wars.

When I was growing up, my parents, like most parents, always wanted me to get good grades. They weren’t obsessive by any stretch, but like any teen I pushed back and challenged, rhetorically, “why was it so important?” I remember expecting to hear “so you’ll get into college,” but the answer was, “so you’ll have options.” Funny, that’s the same reason they gave for why they wanted all their kids to go to college.

Now, as a self-taught developer, I know that those options are a big part of what makes this such a great field to be in. Sure, I love to build and fix things, virtual or physical. And I love being able to come up with an idea and sell it on the App Store. And yes, I love that my work alternates between the solitary task of coding and creative collaboration, but all of those are just slivers of what it means to be a developer. Being a developer means having a great deal of choice, freedom and opportunity. Not every job you find will be great, some certainly come with more than their share of suffering, but usually, another good option isn’t far from reach.

From time to time I still find myself back on that familiar roller coaster trying to prosecute an elusive bug or hack my way through a new language, but nowadays I know that suffering is temporary and I’ve learned how to step back and not get too emotional. Ardous tasks have morphed into flow activities. The tasks mostly stay the same, but they feel completely different. I guess some perspective and few years of hard work will do that to you – provided you aren’t trying to become a rock star.

[Tweet “”Being a developer means having a great deal of choice, freedom and opportunity.” – Gabe Nadel”]

If you’re ready to embark on your programmer journey, sign up for a Free Trial with Treehouse and start coding today.

4 Responses to “The Programmer’s Journey: Ends, Means and the Stuff In-Between(s)”

  1. Great write up Gabe.

    I started at 20, just declared last year (Junior year, after being undeclared). Rather behind in the curriculum, but late is better than never.

    Originally I started with Java, but I was never really interested in the areas they were going so I waited a long time to declare. IMO, writing GUIs with high level abstractions which do 90% of the work for you wasn’t challenging, it was a matter of knowing the right frameworks and tools to use. Other than that it felt tedious.

    Then I decided to start teaching myself C. Most fun I’ve ever had programming. Simple command line programs mostly, but doing so taught me 10x more than I ever learned in school.

    To give an example, I knew how to register an event listener in Java, but C taught me how to implement an event loop (simple polling one). I did networking and threading in Java but C actually let me feel more comfortable with what was going on underneath. I used concurrent thread safe data structures in Java but implementing a lockless data structure in C taught me much more.

    I also enjoy Java as well, I’m doing Android development this semester and honestly it would be a nightmare doing it in C.

    TL;DR: Java (20) -> C(21) -> Java + C (current).

  2. Damian Adams on March 17, 2016 at 5:17 pm said:

    Excellent article. I was overjoyed to see that someone else at Treehouse also reads and enjoys Mark Manson’s work. He’s a great writer with a lot of valuable existential insights to offer. Thanks for this piece, Gabe!

  3. Thank you for sharing your wisdom and encouragement in such a wonderfully written manner.

  4. Gabe, thank you for this article. I have been struggling for what seems like years now. I constantly feel like I have to know everything before I can make a move. I think I know nothing but I shock myself when I do things.

Leave a Reply

You must be logged in to post a comment.

Learning to code can be fun!

Get started today with a free trial and discover why thousands of students are choosing Treehouse to learn about web development, design, and business.

Learn more