Programming can be enjoyable, but not always so. I bet even those who claim to be the most passionate about programming suffer from impossible deadlines, technical difficulties and other causes. As a programmer, I certainly don’t want to have my final moment like this:
You see, when you lie on your death bed, you will look deep into your wife’s eyes, and think of all those lovely moments you spend in Visio drawing UML diagrams and writing clean, simple and maintainable code…
Stack Exchange User 11170 - http://programmers.stackexchange.com/a/114888/95830
But also, I don’t want to be a “9-to-5 programmer” who doesn’t touch anything related to programming outside of work. Maybe because I started programming as a hobby, and that mindset has remained. I actually do want to advance my techniques and understandings at work and in my personal time. If you’re like me, then you’ll want to maximize the joy of programming in order to stay motivated and passionate.
There are ways to make programming interesting (again). For example, I associate programming with video games I enjoy. The association doesn’t have to be accurate, just enough of a trigger to make you view programming as a slightly more fun subject. Make associations or connecting dots is also considered a very valuable life experience.
Another way I find useful is to juggle between different types of tools and stacks. These are like micro context switches that keep things fresh and interesting. I actively maintain my work and personal projects in at least two different languages, on purpose.
And sometimes, given enough freedom, use a simpler and more accessible programming language leads to a more interesting programming experience.
I just went through a ridiculous 7-month milestone for a product that I participate at work. Logically speaking, it was due to a chain of decisions marked as “cannot release without” at the times. So we had to delay the release over and over.
Immediately after the burning crusade, we decided to practice strictly scheduled, liberally scoped milestones. We keep each milestone weekly, but we can add, remove and break issues down so long they’re justified. For example for a comprehensive user activity log feature, we ready the data layer and start recording them in one milestone, then iterate over one or more milestones to expose the view, and better the user experience. Nobody gets easily burned out anymore.
I believe that helping by teaching and sharing knowledge is one of the most delightful form of joy. You can solidify and improve on the knowledge domains, while saving others’ time. It is easier than ever to share and exchange knowledge these days, for free, especially in programming fields. You can do it through Q&A on Stack Overflow, participate in popular learners’ forum and chat, improve relevant Wikipedia entries, read and write articles, or even a book… Not to mention that you can participate in open source projects, in ways of reporting issues, improve documentations and code.
Applying this at work, and instantly get an improved team dynamics.
There are so many other ways. Explore them, and share them! Don’t let the dull business world and those non-makers get you burned out and lose passion on the craftsmanship and art of programming.