Did you ever ask yourself:
- Why do I love programming ?
- How did I came into programming in the first place ?
- Am I still connected with that first love ?
If you are in a transition or things get tough (quitting your job, midlife crisis, family matters), then you probably did.
Importance of Why
You may simply answer: I code for a living, to earn money.
That’s a good point.
However, your work may become a hassle if it’s your primary why.
Developer’s world is constantly changing.
If you don’t update your skills, you become obsolete, and competition will turn you into an has been guy.
Why would you update your OS to the latest version ? Why trying different OS like Linux, OS X, Windows ? Why learning new languages, new frameworks, new libraries ? Why optimizing your workflow with new editors, tools, utilities, config files ? Why even reading tech articles, blog or books ?
All of these takes time.
If you don’t have a beautiful and obsessive Why, you’ll have a tendency to keep playing around with the technology you already know.
How did you enter the programming world ?
Out of curiosity ? Friends’s influence ? Parents’s help ? School ? For developing your own game ? Your own business idea ? Your own website ? To impress friends, family ?
When I was 10 years old (30 years ago), all my friends owned a Nintendo, or an Amiga, Amastrad, Atari, Sega… Playing with them was highly addictive.
I never had any of those. Instead, my dad bought a Macintosh. For writing articles, and publishing magazines.
I won’t ever forget playing breakout on it, using a mouse for the very first time. And playing DarkCastle, the one game that compete with gaming machines of that time.
I also got passionate about using drawing application in those early days (MacPaint).
It felt like drawing on a paper, with the digital magic touch addition.
I could use the pencil, eraser, filler, change the brush size, and the filler pattern.
It seemed magical and I could play hours with it.
Then I naturally came to use Hypercard, which offered the same drawing tools as MacPaint, with the possibility to add interactivity.
You could draw a scene, let’s say a house with a tree and a pond fish, then add a transparent button let’s say on the pond. So that when you clicked on the pond, something special would happen, like the animation of a fish jumping in the air, and falling back in the pond.
You could actually trigger any instructions with events like mouseClick, mouseEnter, mouseWithin, mouseLeave, etc…
I didn’t realize it was programming at the time. I was hooked in trying all the possibles instructions to add interactivity to my drawings, play music, play animations…
I played hours with it, and was eager to show the results to my family. I wouldn’t have explore much if it was me alone.
I loved it to draw anything, then add hidden features that would surprise them.
It was more about creativity, and exploring new possibilities that nobody was really aware of at the time.
It was far from coding blocks of code in a text editor.
Gradually, I came to it, as I was eager to grow my one line instructions into more sophisticated code that could do more cool and surprising stuff.
At the time, I developed simple educational games, related to what I was learning at school, like how to memorize irregular verbs in English, or how to learn new English vocabulary in a funny way.
I also wanted to develop games like Tetris, Pacman, DarkCastle, but I soon realized I was limited and needed to switch to a more professional developing environment.
So I used Pascal and C language. They were way faster to execute, and the possibilities seemed infinite, although not as intuitive as Hypercard.
I finally could develop anything I wanted. Any game, and it looked fantastic.
I didn’t “learn” how to program, but I was driven by my desire to create good looking results, and exploring new possibilities. It was all about experimenting.
Eventually, I also played with assembly language. I remember I was playing SolarianII, a space shooting game, and couldn’t pass the three last levels. However I got thrilled when I discovered I could invoke MacsBug, a low level debugger, at anytime on that machine. From there, I could explore and modify the code being executed in assembly language. I figured out the memory location for the variable holding the number of lives, so I could modify it to whatever number I wanted. I was stunned it really worked. I finished the game that way, which was a disappointment for cheating, but clearly a cool hack to finish the game.
Why do I love programming in the first place ?
There’s something very rewarding in imagining something in your head, and then realizing it straight with your hands.
Could it be a game, an educational program, a system utility or a business oriented application.
There are two points to keep in mind here:
- You need to have a clear view of what you want to do.
- You don’t code for the love of coding in the first place, but for the end result. Then eventually coding will become enjoyable as you master the process.
The point is, you don’t code for yourself, you code for the result to be used by others.
Coding looks like a lonely activity, but good coders fuel their energy with emotions they share with others.
Could it be the end user, their team mates, the testers or business associates.
It’s a wonderful feeling to become confident enough to build anything you can imagine. The key point is to know what you want. And to be excited about it.
Conclusion
Remembering why you first came to love coding is important, because it’s so easy to deviate from it.
Before coding, ask yourself :
- Do I have a clear idea about what I want to achieve in the next three hours, or the next three days ?
- Will I be excited to show the result to someone I know ?
- Why do I want to learn Python, Javascript, React, IA, Machine Learning, blockchain… is it because it’s trendy ? To get a promotion ? To get a new job ? To make my business idea come true ? Simply out of curiosity ? Learning with following a tutorial is cool, but it can be very boring if you don’t have your own Why.
- When was the last time I enjoyed coding that I forgot eating or sleeping ?
- When was the last time I was thrilled to watch people’s reaction about the product I made ?
- Would I be enthusiastic myself using my application or website ?
- Am I part of a vibrant community that is pulling each other forward ?
I wrote this article because I feel I somehow deviate from my initial passion. I took a year off to think about it.
Being a professional developer is cool (you get paid for what you love) until you get trapped into a daily routine with a foggy view of what to do, and why you’re doing it.
Top comments (5)
Nice write up. Could you please elaborate more on the "somehow deviate from my initial passion" and "daily routine with a foggy view" parts? What sort of spark would reignite your passion? and what would you change in the daily routine to keep things more interesting?
That’s an interesting question to dig in.
Loving to code, like loving another human being, is to be taken care of, or it might get weaken over time.
It relates with being active (new) versus being passive (used to) paradigm.
It doesn’t necessarily means you need to get a new job / a new relationship / move to a new place every year.
Just being mindful about it. To try new things, and tickle your comfort zone.
What spark can reignite your passion:.
Each point should come naturally, but we may tend to forget about it, like I did. I wish those could light up my passion again (time will tell).
Thanks for pushing my awareness into that direction.
By the way, it’s always nice to hear about other perspective / opinions.
I feel the same today. Took 5 days off, trying to convince my self to learn something new, but I can't find that Why. Money is good on the managerial level where all devs go to die...and going higher looks a long way to go. I need to find that Why again. Thanks for your write up.
For me, software development is not about languages, libraries or frameworks, but about creating structures and approaches that solve complex use-cases or problems, and do so in a maintainable/sustainable way. Though I immensely enjoy Java and (vanilla) JavaScript, these tools are exactly (and only) that: tools. It's the architecture aspect that I love.
I think that is a good article !thanks