How do you keep the passion for programming if you have done it for ages or achieved it all?
I was talking to my dad about careers and he said that you may be passionate about IT right now, but when you work for a long time you will lose that passion and see your job as a means to earning money and no longer a hobby. He also went on to say he really enjoyed programming but lost that passion.
My dad got a degree in computer science and an msc in database design. He spent a decade writing C and designing Oracle systems, so he's certainly got the life and technical experience (not recent) to comment.
Programming is the one thing I can do without any of my disadvantages effecting my performance. I had a passion for playing pool - strictly a hobby - but lost it and as a result I always lose. No surprise as I no longer want to play and writing code seems to be the hobby which has taken over (and not just because coding will be my livelihood, I just enjoy writing code to do interesting things). I hadn't achieved everything or had the ability to pull off every shot in pool, but I am not able to pull off everything in coding either. I still have a lot to achieve professionally and technically. Maybe when I can, I would get bored?
What do you guys reckon? How do you keep the passion (good question for experienced coders who have been coding for 10 years+).
Here are some advices:
=============================
After coding for 30+ years I can tell you several things.
One. Passion comes and goes. Call it "slump" and you see it for what it is -- temporary. Call it passion and you get confused about time and waxing and waning of interest.
Bored is a choice you have to make. Interest is when you actually look at what you're doing from a coaching/training perspective. Become your own coach. Improve you own performance. Find role models. Study them.
Two. Dwell on your "disadvantages" and they take over your life. Let them go. You're free of them only if YOU give yourself permission to move on.
Three. Careers come and go. Technology comes and goes. The coding I'm doing now is nothing like the coding I did 30 years ago. You can learn new stuff. Or you can lament the passing of the old stuff. My advice: plan to keep running to stay one step ahead of the state of the art.
Four. Go back to pool and play for fun. Winning is overrated.
Growing and improving are where the action is.
====================
The very fact that you can't achieve it all is what drives me. I've been developing for 4 years and the constant learning is what drives me. I'm heavily focused in the .Net world, and every time I check out a different framework (eg Ruby/Rails) I get excited about something new to learn. Not necessarily be an expert in it, but to witness new/different ways of achieving the same results.
In a way I look at completing a project like a computer game (don't hold that against me). In both you can come to the finale in different ways. I know that I completed Fallout 3 in a unique way that probably no one else did. The same can be said more my apps. Sure I follow some guidelines and best practices but I still produce a result in my own way.
=====================
Coding can get boring, but never design.
Get a career where you are always designing in software instead just coding it.
Software is still very young, there are many things that still need to be discovered or built. For example, right now our concurrency models in C++ and Java are hard to use. If you have the passion, you can figure out how to make concurrency design easy.
=======================
One point to add is look to why you're passionate about what you are. I can't speak to everyone else's passion but for me programming is a language to express my passion for understanding and solving problems - that's very different than being passionate about programming. You have to look to yourself for the answers about what draws you along the path you follow. Once you understand what inspires your passion, you will understand much more how to keep that passion alive.
========================
Actually you are putting the weight of your dads expertise behind your question. So the real question is: Has your dad kept up with new ideas and paradigms? Will you?
There are certain things that
- repeat itself (see history of operating systems on different platforms),
- that are kind of fixed knowledge (algorithms and complexity)
But a lot of stuff changes fast:
- different ideas for SWE in general (OOP-paradigm, DML (and especially recent DMLs, that try to close the OOP-relation gap), testing-suites, distributed versioning system).
- new challenges in hardware-utilization (mostly solved via the OS, but it only has been for 20 years, that you can really participate in OS-creation).
- every day more things one can compute
- your digital photos (from sorting via stitching unto stacking)
- your need for security instead of speed (see signatures, see encryption (in short: see Bruce Schneier)) ... with everything from mail to RFID-passports
- your wishes to individualize your gadgets
I have been coding for 10+ years. Not all the time for money, but a lot for fun (see Multi User Dungeons). And I myself would like to have more time to learn things I still don't know.
Yeah, I can imagine to loose the lust for new things, I will one day, that is about getting old. Talked with my friends about it: every generation has a gap. Has something it starts to dislike of the "young people". We geeks have a slight advantage over other people (I already see it with my former classmates), because we are technology-friendly and at the moment the gap revolves around technology. We better do cultivate this advantage :)