Choosing the Way of the Coder


In Paulo Coehlo’s The Alchemist a mysterious old man by the name of Melchizidek presents the protagonist Santiago with two mystical stones by the name of Urim and Thummin. He tells Santiago to consult them when his path is unclear. Should he retrieve the black stone from the pouch, the answer to his question was “yes.” Should the the white stone surface, then the answer was “no.”

I found myself inspired by Santiago’s openness to the unknown and a little envious that he had the wisdom and the magic of the stones to help guide him to the right path. Like Santiago, I wanted to pursue a meaningful and fulfilling life, and yet, without any mystical omens to guide me, I found myself stumbling from one unfulfilling job to the next.

As my shelf and my kindle list filled up with career and self-help books, I began to learn, both through the advice they offered and through my own experience, that while no Melchizdek will come knocking at my door, I can develop a sense of what is right for me as well as the openness and courage to explore new things. Through developing this openness, I learned that I enjoyed software development, something which I had once viewed as a soulless pursuit. Through reading about the stories of others who had taken risks and found fulfilling careers, I found the courage I needed to take the leap.

Eventually, I quit my final job as an internet marketer and put down the cash to enroll in Code Fellows, a Seattle software development bootcamp. It was a big decision, and while I did wrestle with some uncertainty before making it, I also felt a level of confidence I had never felt before. I felt confident because I could find meaning in the value coding offered others; because learning the secret language of machines and using it to solve problems felt utterly engaging. And yes, I’ll admit that the fact I wouldn’t have to worry about paying the rent as a developer boosted my confidence as well. Over many years of searching, these three standards of meaning, engagement, and financial security had become my guides, and as I started taking my first steps into the world of code, they were there to reassure me, encourage me, and urge me forward.


The first guide, meaning, is the “why” of your work. It’s what keeps you going when the work isn’t particularly fun or financially rewarding. But you can be mislead by it.  This guide can become a creature of the ego–a preening, haughty, and ultimately frail thing that inflates when people shower it with praise, and shrinks, withers, and dries up when encountering criticism and indifference.

If you follow this creature of ego as I have sometimes done, you’ll pursue some goal or path because you want to be better than others or to stand out from the crowd. The problem is that the moment you receive criticism you’ll either give up because you’ve derived all motivation from what others think of you, or you may double down on your endeavors and drown out the voices of others who may provide you with constructive criticism. You may achieve some success by following the advice of this creature, but oftentimes it’s short lived. The creature is always hungry for more.

If, on the other hand, your “why” is driven by the need to contribute and help others, it will make you think about the value your work can provide. You’ll ask yourself if the work helps you grow and if you’ll be satisfied that the time you’ve invested has been a net positive for you and those you serve through your work. You do your work to the best of your ability not because it makes you look good, but because it’s an offering of respect to those who have decided to pay for what you do. This ensures that even if you don’t reach the pinnacle of achievement for the path you’ve chosen, you’ll feel content that the work you’ve done was worthwhile.

I don’t know if I’ll ever be able to ignore the drive of ego completely. There’s a part of me that wants to be envied and have valuable skills and knowledge that others don’t have. I must admit that I do find some motivation and purpose in that. But I also find purpose in the feeling that I’m acquiring the tools and knowledge to solve problems I care deeply about. As a junior developer, I do modest work. In my first month on the job I had spent most of my time orienting myself to an overwhelming amount of code and doing minor bug fixes. And yet, this was the first time my work felt like a true offering. I could point to what I had done, and I didn’t have to resort to any mental gymnastics to convince myself or others of its value.

Code is meaningful to me because it makes up our world: from simple websites to algorithms that regulate the dosages for radiation treatments. As a coder, I can ensure that the little part of this world that I build I build with care and attention. And even if it never happens, I find real motivation in the idea that one day I could help create something that could enrich the lives of many.


The second guide, engagement, is about the enjoyment of your work as you do the work.

Have you ever been so engrossed in a task that all chatter in the mind fades, and your sense of self recedes into the background, so much that it seems as though you don’t make your own decisions, but rather the decisions are made through you, and you feel a sense of delight in watching your work unfold?

If so, you’ve experienced what psychologist Mihály Csíkszentmihályi calls “Flow,” a state of heightened concentration and complete engagement. To Csíkszentmihályi, finding work that consistently brings us to flow is the key to happiness, and I believe that’s the reason why so many people from diverse backgrounds have learned to enjoy programming, because of how easy it is to enter a state of Flow when developing software.

Three conditions that are essential to Flow are:

  1. Having a clear goal.
  2. Immediate feedback.
  3. Having the right amount of challenge.

Clear Goals
Anyone who has worked in a job where the goals are nebulous or nonexistent know how demotivating that can be. After all, how can you feel any sense of progress or achievement when you don’t have a clear idea of what you’re progressing toward?

With coding, I’ve rarely found myself in this situation. It’s as though the goals are already set for me. I know what features need to be built and what bugs need to be fixed. I know that web pages need to be loaded in 2 seconds or less and I know what behavior to expect from software when I complete a feature. Yes, sometimes the goals in coding are not always the right ones, and can lead to unforeseen consequences down the line, but at least there is always a direction to move toward. This fuels a sense of productivity and progress that often leads to flow.

Immediate Feedback
In software development, you write tests to ensure that your code does what you want it to do and when they pass you get instant validation that you’ve pulled it off.  If the code doesn’t work, you investigate what went wrong and then you try something new based on what you find. You try your new solution out and you continue to get instant feedback. Granted, the feedback isn’t always helpful or informative, but the fact that it’s always immediate can give you a sense of progress at every stage.

NOTE: I should point out that there are integration tests that can take a significant time to run, so feedback in software development is not always immediate. But hey, no job’s perfect, right? 😛

Unfortunately, most coders, especially beginners, don’t spend 100% of their time in a heavenly state of flow, and the reason is oftentimes that the problems that need to be solved are so challenging that you feel anxious, frustrated, or sometimes even like you want to abandon coding altogether.

The trick to entering flow is to have just the right amount of challenge for your skill level. As shown by this handy chart below, too much challenge and you become anxious. Too little challenge and you suffer boredom:

Mental state chart model by Csíkszentmihályi. Source: Wikimedia Commons

Striking this balance, especially when learning to code, is not always possible. Indeed, when I was at Code Fellows, our class was designed so that we’d be “just barely drowning” nearly every day. Depending on the day, my emotions ranged from triumph (I just solved a difficult problem! I am the best!) to despair (I can’t figure this out. I might as well give up). My experience ran all over that chart, with boredom being the one possible exception.

I noticed, however, that even when I found myself up against what seemed an impossible problem, there were plenty of books, internet articles, teachers, and fellow students to point me in the right direction. Because my goal was clear, and because I was able to get regular feedback whenever my code failed to work, I was able to progress quickly towards whatever goal had been set, no matter how impossible it may have seemed at first.

Although learning to code can be very challenging, the combination of clear goals and immediate feedback can help accelerate the learning process, and often gives you glimpses of flow, even when your skills are put to the test. As you continue to code, moments of flow become more common as the number of problems you tackle will match your level of skill.

Financial Security

The third guide is financial security. Wait, what? Shouldn’t we just “follow our passion” instead?

I grew up indoctrinated in the church of following one’s passion. And I must admit that I feel a vague sense of shame when I tell people that I’ve chosen software development as my new path. There’s a part of me that wonders if I’m being judged for choosing security and stability over more uncertain but potentially more rewarding paths.

I eventually realized, however, that when it comes to financial security vs. finding your passion, there actually is no choice. If you had to choose between starvation and a menial job fastening zippers to jackets in a sweatshop, you’d choose the sweatshop every time. You wouldn’t have the luxury to think about following your passion because the options are so incredibly limited. You’d line up for that zipper job and you’d feel grateful if you got it.

The very fact that we’re having a debate between choosing a life of stability and financial security and choosing a life of creative expression, purpose and meaning, shows just how affluent our society has become. As Eunice Hii says in her Illuminating talk, Don’t Just Follow Your Passion: A Talk for Generation Y: “Passion is a Privilege.” The fact that we are able to pursue our passions today is incredible–a luxury that few generations who’ve lived before us have known.

So while passion is important, security will always win. The only difference from person to person when it comes to pursuit of passion is:

  • The amount of security needed
  • Knowledge of opportunities available

How much security do you need?
While security will always win in an equal battle, you have to think about what defines security for you personally. Can you live from day to day without a worry about your next meal or next month’s rent? I know some people who can, although they usually count on the support of family and friends should the worst case scenario come to pass.

On the other end of the spectrum are people who don’t feel comfortable without a decent income, a good health insurance plan, and a 401k. If these things aren’t taken care of first they can’t pursue their passion because they’re too busy worried about paying the rent not just months from now, but years from now.

Any honest talk about the pursuit of passion has to start with the level of security you need in order to do so. As Penelope Trunk said: “No great art was made by a person who can’t pay rent. If you can’t pay rent, you think about that constantly, to the point that it’s impossible to consider the perfect word or the perfect shade of blue.”

I almost agree with this, but I would revise it to say that no great art was made by a person worried about paying rent. This is an important distinction.

I’m a worrier descended from a long line of worriers. And find that I identify much more with the those who need more security than those who can make do with less. I’ve been told to follow my passion all my life. This is probably why I’ve felt shame every time I’ve traded passion for security.

But instead of feeling shame for these decisions, I’ve learned that it’s much more productive to be realistic about the level of security I need and try to adjust it by:

  • Reducing worry through mental training: meditation, therapy, hypnosis, NLP etc.
  • Thinking through the true consequences of a worthwhile risk (Will I really end up homeless if the career change doesn’t work out? Probably not).
  • Learning and researching opportunities where fulfilling work also fulfills my need for security.

Learning About Opportunities
I believe that of these options, the third is the easiest. If your need for stability and security is high, it would behoove you to spend your time exploring fields you are passionate about that fulfill your need for meaning and creative expression. Chances are that as you search, you may find hobbies that don’t pay well, but you may also find an opportunity where both your passion and need for security meet. The trick is to expose yourself to new ideas, new worlds, and new ways of thinking. If I had done this at an earlier age, I may have discovered my interest in coding much earlier–an interest which, as it happens, pays very well.

Choosing a Way

It’s no coincidence that Taoism, one of the most influential Eastern religions, simply means “The Way.” Choosing a Way is much more than choosing a set of tasks to occupy our time.  Our choice is a chance for personal expression and connection, a chance to grow in our skills and engage fully in the performance of a task. It’s integral to our sense of self-worth and value and it’s the way we support our own livelihood and those who depend on us.

When choosing the way of code, I decided to devote all of my attention, time, and resources to making the career change and I don’t think I could have done it without feeling confident that it was the right choice for me. And while I didn’t have any mystical divining stones to guide me, I had developed a sense of what was important to me. Perhaps that was all I needed.

Zen Stones Photo Credit: George Hodan

If you enjoyed this post, please consider leaving a comment or subscribing to the RSS feed to have future articles delivered to your feed reader.
  • Excellent read, Kenji. Somewhere in the past, our worrywart ancestors likely had a common ancestor.

    You and I are both fortunate to be able to have both ventured far and wide across the world in search of meaning and to be able to balance passion and security with a concerted effort of hard work, passion and hustle. Of course, times change and passions change, but having watched you navigate those weeks of coding boot camp swim lessons, I’m grateful to have been inspired to keep at it by you.