How do you make programming fun again?
I remember enjoying and looking forward to programming. I saw shapes and structures as I imagined programs. Recently, it's gone and I don't look forward to it. I am now changing projects, but in the past that used to, on the contrary, excite me in anticipation of a new start. Another thing I remember is feeling this positive rush just after waking up, thinking of the things I'll do. Do you know what I'm talking about? If so, what do you have to say about it? Tips?
24 comments
[ 5.6 ms ] story [ 37.4 ms ] threadFor others, it might be retrocomputing or using small systems like Arduino or Raspberry Pi. (Long ago when I thought I might want to learn to fly, I read an article that alluded to airline pilots flying ultralights on weekends; perhaps it's like that.)
These are slides for a talk based on a book the author wrote.
You might want to check out the book "Flow" as well
The short answer is that we get bored when the challenges and skill level are misaligned. To keep something fun (or enjoyable), it has to keep getting challenging at a pace we can handle.
Flow would be a deep-dive after that -- I skipped Drive, because I was already reading a lot about it, and was looking for deeper information.
Peopleware also covers this topic from a programmer-centric perspective.
Here's the link without it: http://www.theoryoffun.com/theoryoffun.pdf
So perhaps (in deference to your new project) you should look at the projects - do they add value to the world, are you selling adverts to Silicon Valley or water purifiers to the Great Rift Valley?
Sometimes the kick comes from helping other people learn and grow as programmers - maybe you are just ready to program less ...
Beyond that I've discovered working on programming challenges frequently helps as this leads me to research topics that are new to me and stokes the passion fire.
So I began to code in Python to test things and as my hobby language in free time/other hobby projects. Changing from a old well-known world to a refreshing and problem solving focused world was one of the best things I made last year.
I believe learning a new language has to do with this feeling, but if you are going to learn something new, try to choose a modern language that turn the problem solving in the main track, not compile error hunting.
I completely agree with you on the sleep aspect. Sleep does wonders for concentration, creativity... I would also recommend a standing desk.
And eating nutrient dense food is the best way to get vitamins.
Years later I got a gig doing Scala. I did not like it at all working with Scala and other people code.
The libraries and their classes or traits expect a certain type and juggling between them via type casting several time until you get the correct type wasn't fun. The reflection class, at least for me, was hard to use.
- Projects I worked alone on or at least was the single person responsible for my code (I do like to work with a good designer or a smart guy for the API)
- Projects that involved learning new techniques
- Projects where I was doing a healthy balance of new code vs maintenance
- Projects with very little red tape and lots of responsibility
Technology by itself can be interesting and rewarding but it's never the reason you'll like a project.
I had a lot of fun doing a very simple CMS backed website in Python with Django where I did basically everything I already knew in another language, only targeting IE9 or more sane so I could use CSS Animations and other nice stuff. The subject itself was not appealing itself although the client was nice and the designer was very good.
If you find yourself using cool hip framework x in hipster language y and you are still not happy: perhaps you're just doing too much maintenance on an application that really starts to remind you of that old Java Enterprise stuff you so desparately was trying to get away from, dragging yourself from meeting to meeting while you wait for that half-assed designer to finally give you the design you are now asking for for two weeks on end already.
My goals for the future are:
- Do more small projects that I can rule completely on my own, until I
- Find a product that will either be completely mine, or
- Get into a startup with brilliant people
Now the application is built, I get to do more tedious data cleaning, fixing all the crap data that the users put in. I don't enjoy it as much. Sometime I get a feature request that is challenging, and my interest picks up again.
I deficiently find that when I am creating something that it inspires me a lot more. Also having worked on a coupld of maintenance programming jobs before, I am not going back to that.