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.
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.
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.
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.
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 ?
- 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.