I have been programming since the age of 10 and always enjoyed development ranging from high level architectural planning to low level programming and reverse engineering. I think programming is a kind of creative art and this is what I enjoy(ed) in it so much. Getting into the flow and implementing my previously well though-out evil plans or walking in the park and thinking about problems and solutions or simply trying/learning new things.
However, this world is quite far from being ideal so there are several problems to face as a programmer:
Nearly 100% of the companies have a system in place which promotes “ladder climbing”. Universities “produce” career programmers because most companies need it and built an environment to make use of this. I think the barrier for entry to a programmer job is quite low so you can get in regardless whether you are naturally good or just a career programmer and above the barrier you are measured by the “years of experience” when it comes to ownership and to some degree compensation. Creativity and brains aren’t needed: 99% crap shovelling and production of glue code (this is usually called a “solution” with officially correct spelling). Implementing systems again and again with the same well known patterns/skeletons and bugfixing unreasonably complex and buggy codebases.
It’s quite demotivating when someone with much worse tech skills has the decision power and earns twice as much. I had to face things like this quite often early in my “career” about a decade ago. Being a talented programmer isn’t enough. You have to be good in “business” too, otherwise you will be exploited and/or ignored. I thought by proving myself to be good and useful I would be rewarded. Huge mistake made by a lot of techies. In reality they reward only your negotiation skills. For this reason I don’t care anymore. I interview for a well paid job or contract, then 9-5 and go home to work on my own business. I plan to free up as much time in the future as possible, maybe then I will be able to do the things I like: for example programming, picnic, reading, sunbathing, etc…
While I managed to pick up these stupid “business like” skills I can’t enjoy my “career” that is forced upon me. Hobby programming is about creative art and freedom. Jobs in general are about generating money (or “value”), meeting deadlines and playing stupid corporate games, shovelling crap. Develop negotiation skills, build an image and reputation as a recognized “expert” and then you can make use of your job or contract at least as a money generator. Perfect for a career programmer especially if we are talking about a nonconformist one. If you are a talented programmer and want to enjoy programming then this is probably not for you. Start a hobby project and you might create the next popular framework that will be used by stupid companies (oh, sorry - forgot that you have a job and don’t have time for programming…).
During the last decade I had the luck to work only on a single project where tech talent was really rewarded and valued (not only with good compensation, but also with trust and freedom to act). Such companies and projects are probably rare. In my opinion most companies don’t need a talented techie who cares, but don’t even deserve one.