How To Rediscover the Joy of Programming: Tips from an Amateur Coder
The word “amateur” usually carries negative connotations, but its etymology—from the Latin “amare”—refers to love. As an amateur coder, I’m someone who programs for the joy of programming.
Arguably, all programmers began like that—learning how to code because it’s something they like. After all, few people invest time, energy, and perhaps money in becoming better at something they hate.
But here comes the trap of becoming a professional programmer.
Soon enough, whether you work as a freelancer or for a company, you realize it becomes less about doing what you like and more about doing what others like. If you’re lucky, the two can often coincide. But it’s not very common.
After all, much of professional programming today is compartmentalized in nature. Long gone are the romantic days of a couple of friends coding a 48K game for the home computers of the ’80s. Today, professional programmers typically work on tiny portions of the final product, lacking a clear line of sight to the bigger picture.
All this is not too great for finding joy in programming, especially the kind of joy you felt when you began playing with code. “Hello, World!”
I’m an amateur coder, though technically one could offer an argument against that. Some of my Android apps contain ads, which means I do see a connection between my coding and a source of income.
Yet I consider myself an amateur; someone who codes only for the joy of programming. And just as I balance between coding for fun and coding as a possible source of income, I’m convinced any programmer—including experienced, full-time professionals—can rediscover this kind of programming joy.
It ultimately boils down to three things: attitude, seeing the bigger picture, and having foresight. Let’s take a closer look at them. With my tips, you too could become an “amateur”—someone who falls in love with programming again.
No Joy Without the Right Mindset
Have you ever told someone you felt a bit down, and they told you to “snap out of it”? Annoying, I know. “Oh, how come I never thought of that! Gee, thanks for the tip!”
Don’t worry, that’s not what I mean. Having the “right mindset,” or what I referred to earlier as attitude, is not about somewhat magically deciding one fine morning that you will discover joy in programming, even if it’s on a project you feel not-so-keen-about, to put it mildly.
Rather, what I mean by “the right mindset” refers to understanding what makes you happy.
It sounds so self-evident, perhaps even silly. And yet my experience—as not only an educator and writer, but also in life in general—has shown me that many people don’t really ask themselves the difficult questions.
They go through life on autopilot, and those with regular jobs are particularly vulnerable to such an outlook. We’re creatures of habit; we don’t like to ask ourselves such questions because … we might answer them.
That is, we might discover we don’t like something about the current situation, which would mean we’d have to somehow change it.
In our context of rediscovering the joy of programming, you must ask yourself these difficult questions. What is it you like the most? Is it problem-solving? Creating solutions? Perhaps you are one of those people who manage to discover aesthetic beauty in the code itself.
To me as an amateur coder, it’s a combination of these and other things. Sometimes I just like to give myself challenges, perhaps at the limits of my current understanding, and then feel the reward of actually making it work.
Whatever your source of pleasure in coding, you must zero in on its nature and form. Once you (re)discover that, you’re ready for the next step.
The Bigger Picture
As I mentioned in the introduction, the contemporary reality of professional programming is such that, more often than not, a professional programmer lacks a clear view of the bigger picture. If you’re lucky, your work is appreciated and your contribution valued.
Perhaps you are praised for your solutions of your own small part of the whole. This doesn’t mean you shouldn’t keep your eyes on the bigger picture, to the extent it’s possible.
Barring problems with colleagues or similar issues originating from lacking soft skills, one of the most common reasons people are unhappy in their work is a disconnect between what they do personally and what is produced collectively.
I’m not the first person to notice this, by the way. Workers’ alienation from their product is a concept that’s almost 200 years old.
In other words, to rediscover the joy of programming, you really need to see how your own contribution connects to what you’re making with your teammates as well as other teams that you might not even know of. This isn’t always easy, for the reasons we’ve seen. The saying about the left hand not knowing what the right one is doing is at its best (or worst, if you prefer) in the context of professional coding.
Moreover, depending on the specifics of your work, you might not even be allowed to fully know what the code you’re preparing ends up as. It doesn’t matter. Discover as much as possible. See how it’s all connected, to the extent it’s feasible.
Ultimately, understand what it is you’re making. If, for example, your own source of coding pleasure is in finding solutions, try to find out how exactly your contribution helped address an issue.
This not only helps you rediscover joy in coding, but it also makes you more productive— you’ll likely have renewed energy if you can grasp how your code is actually implemented.
As an amateur coder, I’m sometimes stopped—or at least slowed down—by my lack of knowledge. I’ve sometimes given up on projects for this reason and, let me tell you, the feeling of not seeing the final product is awful; I truly hate it.
You perhaps think a professional coder can’t afford to give up, and you wouldn’t be wrong. Work is work, and it must be done, right?
Ah, but there’s a catch.
The Bigger Bigger Picture
Going beyond the “bigger picture,” we have the “bigger bigger picture.” Consider them nested functions: Your bigger picture returns results based on what you feed it—the parameters—but there is a larger structure around it, the bigger bigger picture.
In plain terms, if the bigger picture is your view—no matter how limited or partial—of the work beyond your immediate focus, then the bigger bigger picture is your view outside work altogether.
This is another thing many professionals often forget: Work isn’t everything in life.
It’s hard to continue doing the same thing you’ve been doing for eight or more hours every day. I can sympathize. As a professional writer and editor, at the end of a day dealing with texts it feels difficult to write—or even read—anything for pleasure.
But giving up on your “amateur” side of coding—what you once loved—because of your professional one never ends well. Few things in such a context can be more disappointing than ending up hating what you love.
Try to do some coding that isn’t work-related. It doesn’t have to be anything big, nor does it have to take much of your time. It could be a couple of hours every weekend putting together a mobile app. Or it could be some little open-source project you work on with other people.
It all depends on what you like. That’s the only requirement: that you feel enthusiastic about it. Workplaces and tasks come and go; experiencing and personal fulfillment are forever.
All this takes us to perhaps the most important element of rediscovering the joy of programming: having foresight.
Foresight in Coding and Life
One of the silliest questions I see in job interviews or personality tests is, “Where do you see yourself five years from now?”
Well, if the first six months of 2020 haven’t convinced people that life can turn upside down unexpectedly, I don’t know what could.
It’s of course necessary to have some sort of routine and continuity in our lives. It’s equally important to have some general idea and plan ahead. But precisely because life is unpredictable, it becomes even more important to understand our priorities.
In our context of rediscovering joy in programming, foresight isn’t an attempt to find an answer to the silly question, “Where do you see yourself five years from now?”
Rather, foresight means asking yourself, “Where do you want to see yourself five years from now?”
You might think this is some linguistic trickery, yet there is a subtle but important difference.
You see, once you put volition into the picture—“where do you want to be”—there is another, implied question there: “What do you need to do now to be where you want to be later?”
This takes us back to both previous sections, attitude and the bigger picture, effectively combining them into the grand question: “What do you like the most about coding, and how can it enrich your life even beyond the confines of professional programming?”
To me, as an amateur coder, everything about it is enriching because I don’t have to do anything I don’t feel like doing. I don’t have deadlines to follow, nor a manager who expects results. Of course, your own situation may be different and, remember, such questions are difficult.
When all is said and done, it’s a matter of whether your current situation is consistent and compatible with what you envisioned when you began this journey, still an amateur coder yourself.
And if not, then what should you do?
Obviously, neither I nor anybody else can provide you with an answer. This is something only you can do. But I can tell you this: It must be really disappointing to look back and realize you didn’t do something you wanted to do.
Ask the Right Questions, and the Answers Become Easier
As an amateur coder, I can work on anything I like, for as long as I like, and even abandon it in the middle if I lose interest. As a professional programmer, you don’t have the same kind of latitude.
But you can still rediscover the joy of programming, as long as you ask yourself the difficult questions.
What is it you like about coding? What was it that inspired you to not just learn coding, but make it a career?
The questions then become increasingly more difficult. How does your work allow you to experience joy in coding? Does it, at all? And, if not, what can you do about it?
Most people seek answers, but it’s the right questions that matter.
Once you identify what you want from coding, then you can start considering how to amplify it.
Sometimes it can happen within your current professional context, sometimes it can happen outside of it—for example, as a side project—while still continuing in your current workplace.
And then there are times when experiencing programming bliss is just incompatible with your current work.
What to do then depends on your priorities and overall life situation. For some it’s easier to try to find a balance, for others it’s preferable to reconsider things and even make radical changes.
Every one of us is a different person, and we approach issues differently. But trust me when I say this: Once you pose the right questions, the answers become surprisingly easier!