Hacker News new | past | comments | ask | show | jobs | submit login
How do you make programming fun again?
28 points by dmos62 on Apr 29, 2014 | hide | past | favorite | 23 comments
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?

I'm a C/C++ programmer for more than 10 years for Windows, and these last years waiting for compile/link and a lot of annoying errors absolutely nonrelated to what I was doing it is really disappointing.

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 am going to suggest you download and read the free PDF from "A Theory of Fun" -- http://www.theoryoffun.com/theoryoffun.pdf‎

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.

Helpful. Thanks. I enjoyed a TED talk (http://www.ted.com/talks/mihaly_csikszentmihalyi_on_flow) by the author of the book you suggested, I might read it.

Reading it now -- it's somewhat academic, but comprehensive. Many people have recommended Dan Pink's "Drive" as a good popular summary of the findings.

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.

Your link has a LRM (left-to-right mark) at the end.

Here's the link without it: http://www.theoryoffun.com/theoryoffun.pdf

Programming is like writing - in the main the subject matters much more than the writing itself.

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

Projects I liked:

- 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

So when I started my job 3 years ago, I went from Perl based tedious stuff, to building a database and web front end for my organisation. I decided to learn Django. That took away a lot of boring boilerplate, letting me concentrate on the create interesting stuff. The documentation is good, and its very well thought out (not what I find when I am trying out JavaScript frameworks). That helps.

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.

How do you make programming fun again? You learn Haskell.

I found both learning and just writing in Haskell a joy, and I can recommend it full-heartedly. It might be a little hard to get started with ( especially if you're not familiar with functional programming ), but it's really awesome, interesting, and just flat out fresh once you get into it.

That's what did it for me.

For 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.)

Take vitamins & get more sleep. Sometimes its not the coding - its you (please read in a good way - once you overwork its easy to go in a downward spiral.) - Been there, done that

Correct any vitamin deficiencies, rather than take vitamins generally. The most likely is probably vitamin D deficiency. Indoor office worker in a northern latitude? Even if you do spend some time outside you are likely deficient during the winter.

And eating nutrient dense food is the best way to get vitamins.

Start with a healthy diet before you start taking vitamins. They are probably not necessary, unless you are already eating a perfectly healthy diet (which I doubt). I suppose it could be helpful if you refuse to eat healthier...

I completely agree with you on the sleep aspect. Sleep does wonders for concentration, creativity... I would also recommend a standing desk.

could you elaborate on the vitamins part please? I feel I need this but no idea what to get exactly.

For me, it was moving from Java to Scala, but YMMV

That was me a while back with just learning Scala.

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.

I try to learn a new language or framework when I enter this mode. It works best when I dive in and code through an actual tutorial first because there is a specific achievable goal.

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.

I know what you're talking about. I remember feeling it often when I was first hacking away at QBasic in high school. I don't have any good suggestions on how to bring that "sparkle" back, other than to find projects that you're passionate about.

That might turn out to be a very good advice. I may have been increasingly approaching my projects as senseless chores.

I know how you feel, a few months ago I was working on a game with a friend just for fun (I was coding, he was doing everything art, music, etc). At one point I realized I was putting off working on it because I wasn't enjoying it, so I just told him that I didn't want to make it anymore and moved on to projects I found more interesting (like cryptography :D). If your projects feel like chores, I would recommend learning about a field you don't know much about and starting from scratch there :)

Learn how to make iPhone or Android apps, it will be fun

Join an open source community! :)

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact