Hacker News new | past | comments | ask | show | jobs | submit login
I'm Not Sure I've Ever Enjoyed Programming
47 points by Alekhine on April 10, 2022 | hide | past | favorite | 42 comments
Aside from a quadratic formula program written on my TI-84 in high school, I did not do any real programming before I was 19, when I learned C because I consciously decided I wanted to learn a new skill. I read stories of learning on a ZX-Spectrum at 5 years old, but I never really got that experience of just playing around. I think for me, programming has always been work, and that makes me very sad because I know this can be a very rich and rewarding hobby. I think the only time I really felt this was when I played EXAPUNKS.

Can someone point me in the direction of 'fun' programming? Tools that are just really enjoyable to use? I want to find the joy in computers.




The "fun" of programming (imo) comes from the short feedback loop and reward cycle of solving something moderately difficult but not overwhelmingly so and seeing immediate results - code, compile, run, it works!

I'm not sure the tool matters and is more about where your interest lies. The same thing happens with React/JS (refresh, it works!) Swift/iOS (rebuild in Simulator, it works!) or backend / systems / data (run, check output, it works!).

It could just be that programming isn't your thing, but generally most humans like feedback loops and dopamine hits.


As someone with a private teaching background (>100 pupils, mostly 1to1) I have always wondered about that. There are huge individual differences. It never ceases to amaze me.

My pragmatic advice (without going into my theories): just observe yourself throughout your activities, take daily notes. If you don't like to write essay-like diary entries just reduce it to an organized excel spreadsheet e.g. specific activity, time spent, rating system (long-term/short-term satisfaction, hard/easy ...), misc: (interesting) things you observed about yourself; you get the idea.

In most cases it really helps to clear up some confusion and misconceptions you have about yourself. "Fun", "Happiness", "Flow" etc. is a spontaneous state dependent on a plethora of things working in sync nobody can teach you directly because in the end you are the driver balancing all those things. Once you get a better sense what versions of "fun" you enjoy, observe and ask others: How do they go about this? What is fun for them? Maybe you find some interesting strategy you can apply or get an appreciation on how individuals can vastly differ from you.


Agree with this. I think there's many different reasons people like programming. I personally found myself liking the process of making something. This translates to other fields like woodworking and cooking.

Similarly, I've always thought about people's enjoyment of games. There's so many different reason one could enjoy a game. For example: When I was playing to win, i wondered what pushed me to do so. Turns out i didn't enjoy winning. I just hated losing. That realization helped me enjoy games more.


Well said. This is true for everything. There is a sweet spot between too easy and too hard. I would recommend taking a step back. Ask yourself why you want to code. Computers are powerful machines so find something interesting to do with them.


I find the math of programming incredibly satisfying from a craftsmanship perspective, but there are many tools that are unsatisfying inside programming.


I agree 100%. Hence why I like side projects. Even if they aren’t that successful, you have an extremely short feedback loop of 1) customers paying you, and 2) customers giving feedback directly to you.


This is a tough one. In many ways, programming is just work to get to an ends. Such that if you don't have anything that you are interested in doing with a program, then I question if there is an intrinsic property of the art that will attract you.

Looking back on my starts. Original computer was one you had to type the program from a magazine into in order to play it. Make a mistake transcribing, hunt it down. Get it correct, get to play a game for a short while. Wireframe magazine is recreating this. Each issue has a fun recreation of a classic mechanic.

Moving to a more modern computer, used to be that it was a bit of a programming exercise to keep DOS happy so that you could play different games. If you got fancy, you probably wrote a menu system to pick your games.

Even my first dip into "business style programming" was in getting some gaming going. Friend and I used Access to build a D&D character sheet generator. Got our toes wet with SQL, even.

If you enjoy math, https://projecteuler.net is a good place to see if you can get some programs written that usually explore some fun properties.

Similarly, I remember having a ton of fun coding fractals back in the day. The state of graphics programming is... difficult, though. I'd point back at the pygame zero suggestion, even though I am not a fan of python. :(


When I was 6, I was bought a ZX Spectrum. I didn't really know what it was for or what you were supposed to do with it. However my friend who lived in the same street also had one, and when I went round his house he showed me how to use it. He turned it on and simply typed in the following magic words:

    10 PRINT "Matthew is cool";
    20 GO TO 10
And then when he typed RUN the screen suddenly filled up with just how awesome Matthew was. I couldn't believe it. It was like you could just make it do anything. All the stuff I couldn't do, all the stuff I struggled at in life, you could just tell the computer what to do instead and it'd make it happen on your behalf.

But there was a bug in the program. I could see it immediately. It said "Matthew" is cool. I needed to fix this.

I ran home to my own ZX Spectrum and tried it out. I typed in exactly the same magic words, except this time I switched the "Matthew" for my own name, and voila. It worked. The bug had been fixed, and my own TV screen filled up and proclaimed to the world just how fucking cool I actually was.

I think that was when I realized I had to be a programmer.


See, I never got this experience. The computers I had growing up were Windows boxes I was deathly afraid of breaking and locked-down consoles. I never got an easy-to-use programming environment.


I always found that getting the computer to draw pictures and then make them move around was what let me start to experiment. There's things like Love2D right now that'll give you a lot of the same creativity. It's never too late to have fun!


I don’t think the answer to fun will come from the tools, but from the problem.

Programming is not entertainment, but a way to enlarge your brain to solve a difficult problem.

Find a problem that you care about (like you did with the quadratic formula in high school) and program a machine to solve it. Maybe, you’ll be magically 19 again

How did it feel where you wrote that program on your own initiative? If it felt great, you already have an answer


Graphics demos and screensavers and such don't solve any problem other than "make interesting stuff appear".


"I need to be entertained" is absolutely a valid problem. Even from a practical standpoint, people make billions of dollars from that.


They solve the problem of how can I make this ball move across the screen.


Typically, not in any way that has elements like: an external requirement specification about what the ball should do (or that there must be one), and tests that validate that the ball is moving correctly.

It's basically art. Art of all types has internal technical challenges: specific problems to solve which are even testable. E.g. how do I get this paint to dry slower to have more working time for the intended style; how do I get these two materials to adhere; what fingering can I use to play this passage fluidly; ...

My point in this thread is that some people might be motivated into programming if they stop thinking they have to solve some external problem, other than the vague requirement of making something beautiful or entertaining.


I think the first step is to identify an area that you are interested in, for example music, cartoons, computer games, puzzle solving, 3D models, etc. If you only know C, then part of your problem might stem from the edit-compile-run-debug-loop. Look at more interactive languages, e.g. Python, JavaScript as with a browser Dev-Tools, Smalltalk.

Although Smalltalk is not a widely used language, it does have a large selection of interactive playgrounds that some people enjoy. Another option might be to do more hands-on project with Arduino - where you can build and program robots, various automatons, etc.


One of the things I always found fun in programming, is anything related to graphics. The main reason is that you get immediate feedback while you are working on it.

If you are into computer graphics, you might be interested in the following:

The Ray Tracer Challenge, see https://pragprog.com/titles/jbtracer/the-ray-tracer-challeng...

three.js journey, see https://threejs-journey.com/


I learned digital print design because I saw the world of pen & ink design get flattened by computers. I learned web design because I saw digital print design get steamrolled by the internet. I decided then to learn programming as self-defense. I'd had two careers rugpulled on me by age 20 and I didn't want to have that happen to me again. Of course it still happened a few more times but that's another story for another day.

I had a decent career in programming, but over the last ten years or so I realized that I didn't really enjoy it. I was OK enough at it, but being around world-class people convinced me that I was only ever going to be OK, and that wasn't enough. What I really do enjoy is solving problems, and more importantly, finding the right problems to solve.

What rekindled my interest was working with my kid. It's cliche, but games programming with kids is hella fun because it's personal and low-stakes. Minecraft mods, scratch apps, etc.


I guess tools that fit my way of thinking are more enjoyable to use, because I feel there is less in the way of realising ideas. You mention C, have you tried any higher level tools?

The other side of the coin is that you get enjoyment from seeing something valuable to you realised. For me this has been creating a card game I invented with a friend, and combining computing to solve problems in another hobby I have — or something I value (deejaying tools, computing tools, knowledge sharing tools, privacy tools). Perhaps this is the same for you.

Perhaps it’s just not fun, don’t feel the pressure that you must enjoy it. Everyone is different!


They say that choice of language doesn't matter, to just pick something you like and dive deep, but one doesn't really know the feel or pitfalls of a language until you dive deep into it for yourself. I think there's something to be said for using the tools that are already with you, like Bash + the Coreutils, BASIC, or C out of necessity, but I've found it easier to become immersed in higher-level and "ideologically opinionated" languages like Python, Ruby, and Lisp.

For me programming was something that started gradually as I became familiar with Bash, until in denial that I was programming at all. Ansible introduced me to Python, Jinja, and YAML, but I still didn't consider what I did to be programming. Scripting, but "I'm no programmer", just in a sysadmin rabbit-hole. I'll have impostor syndrome real bad.

Going back to Bash after working with Python was rough, and I've since delighted in learning new programming languages and paradigms as I solve my problem-of-the-week, gaining a new understanding and appreciation of how people can approach programming each time. The problems are trivial in retrospect, but feel significant at the time- each is an important stepping stone in the broader understanding of computing that I'm developing, as well as an excuse to get sucked into the syntax, ecosystem, and mental model of a new perspective. Perhaps I'll learn to delight in C someday too, but today I've found my stay in Lisp, and look forward to using purer functional languages in the future.

A background, and the perspective it gives a person, is a unique and special thing.


I've done a little hobby work in Haskell, which I'm now remembering I enjoyed.


There are a few ways I think I could find gratification in what I do with computers. Building something that other people use (they could have complains, that's fine). Probability because of humans liking the feeling of being needed.

Encounter a problem and solve it with computers, even more fun, every time you or anyone hit the same problem, they use your tool and realize how easy it's now, that feels great.

You read code/solution/architectures and you go like "Damn! that's clever" or "Oh! that's so neat and lean" or "That made a lot of sense!". Basically, the hit you get from understanding something clever, that means you just leveled up and you'll remember that you understand it now.

Think about other people, how they would use it or whosoever is going to read it. You make it simple for them to read or an elegant solution to the problem. Being able to formulate something, anything, gives a good feeling.

In some sense, the above things are applicable to any field.


https://www.shadertoy.com/

* Low friction, nothing to install, near instant feedback.

* Fun starting at simple shapes, gradients, distortions, all the way to absurdly good looking rendering.

I did have that experience of growing up with fun programming, for me shader programming brings that back.


The most fun I have programming is solving problems. Being paid to do it is even more fun but also can be stressful.

If you don't enjoy the work, perhaps you need a different problem to tackle. Come up with an idea, and learn everything you need to manifest it. If that's not fun try another, you'll come to a conclusion either way.


The fun comes from actually building something useful and then getting to use it. I see too many programming tutorials with code snippets that can technically run, but won't actually do anything interesting. I feel like this turns a lot of people off who would otherwise make excellent programmers.


What do you want to create? Pick anything. What would be fun about that?

Your question is that broad. There are many, many, many axes of difference to explore.

Another way to look at it is "what's fun to you?" If you can't think of anything, you're out of luck. If you can think of anything at all, incorporate some coding.


I started programming as teenager, but mostly used it to write stuff I wanted to use - or just for the curiosity of it.

Then after college, I started coding as a traditional software engineer. It was tedious, it was procedural, etc. but the products were robust and efficient.

Then I left that field, and got into analysis / data science, and I'm back to a much more ad-hoc way of coding. I write scripts and small pieces of software which solve specific problems, sometimes never to be used again - but it's fun. I use programming as a tool to solve specific problems. And while the code I write is less robust, breaks easier, it's really not a big problem...I'm essentially the only person that sees or uses that code.

So, at least for me, the more "applied" side of coding turned out to be the best match for me.


For me there are different kinds of joy I find through programming:

1. Imagining something to make and bringing it into existence. As a teen I programmed my first computer (Atari 400) to draw rectangles to scale dimensions of my room and furniture and I could move them around to see which layouts fit and might flow well. It wasn't very hard to write but a lot of fun to play with.

2. Solving a difficult problem/puzzle that I encounter (usually at work) with an out-of-the-ordinary (or sometimes much simpler than imagined) solution. This fits very much in line with how I enjoyed solving math/physics problems that sort-of seemed like riddles with rewarding punchlines.

3. Making a library or part of a program that exceeds my original design or expectations. This can come as I need to change it for extra purposes not known at the start and they are easy to fit in, or on rare occasion 'just work' with different inputs to my great surprise.

I started out programming as a hobby long before I thought it would be my profession and having programming buddies to show stuff and learn from was a key motivator. Later on, I've become completely satisfied at solving problems to my self-defined level of completion. On one hand I might me more motivated to do more if it was shared and used. But then on the other, then it could become ingracious unpaid work--like some open-source horror stories.

The best generic advice I can give is to make the programming part secondary. Find something that you want to exist and could make. Often this can be a website that organizes certain information that you want to catalog and share. If you start making it and enjoy the creation as it starts forming, then you may be onto something. Anything (web/mobile/vr?) with visible/sharable output is more relatable than something that only a backend dev could appreciate. It's tricky to find a topic that isn't already being done well by others so usually something niche that you have an interest in is easier to find. Sometimes you can take an existing idea you like and put a twist on it to make it new and interesting.


I think another thing that takes a lot of the fun out of programming now is that everything is so complicated. There really aren't simple systems what you can know a lot about and play in that doesn't have a tonne of frameworks and documentation.

So finding a programming environment that minimizes up-front learning and lets you get to the fun parts sooner is a huge plus. One thing like that for game-like things is SDL[0], Box2D, or libGDX (if I recall correctly I used on Android a couple times). My info is a bit old, so maybe others have other good examples of desktop/mobile/web libraries that fit is ideal.

[0] https://www.libsdl.org/


Being 'taught' or following tutorials, working on what your manager was told is important for $$$ are all the death of joy.

The excitement you hear about comes from personal discovery around things of interest to you (possibly only to you) and the feeling that you really understand something not widely known, so that you could bring it out and use it for something.

Even esoteric cases are all connected to a single underlying reality underneath, as you improve and gain understanding by your own hands pieces of what underpins everything, you will find unexpected connections even in your mundane work-stuff.


In my experience, the best work-work is the side projects.

The things people did not know they needed. Or knew they needed, but could not get. Or sometimes even articulate.


I don't particularly enjoy sawing wood or gluing boards together, but I enjoy the art of woodworking.

Similarly, I don't necessarily enjoy writing code, but I do enjoy building useful programs.


Weirdly I enjoy writing code but I don't enjoy building useful programs.


For me, a lot of the fun was in making the machine do something it wasn't supposed to be able to do. Or something that was a lot better than people expected it could anyway.

These days we don't have the same innate hardware constraints, but there's still a lot of fun in working against tight constraints of some sort.

For writing silly games I've had fun with the pico8 virtual console, which is highly constrained. I also like playing with speeding up algorithms, that often has interesting time and memory trade offs.


A couple of ideas:

* make Pong. pygame if a good place to start if you want to make things as easy as possible.

* play with microcontrollers. There's a lot of fun to be had with making LEDs blink, hooking up displays, etc.. I'd recommend one of the Elegoo starter kits, which gives you a clone Arduino Uno, components and instructions to get you started. The Raspberry Pi Pico is also pretty good, and seems quite popular with "Makers" (and even industry). Probably go with the Uno first, though.

Have fun.


Ruby and ruby on rails is really fun.


Build something for yourself, something that you would want to use. Fun in programming is all about coming up with the desired behaviour of the program and and then building it iteratively. Other option is to look at any open source program that you use daily and see how you can improve it or something that you want to add to it and then work on it.


If your own curiosity to problem solve or create doesn’t fill that niche naturally, I highly doubt any ideas here will help. You clearly know some of the domain and capabilities of the craft.

If I were you, I’d get out of the industry. Find something else where you can enjoy your career more.


Programming is just a tool, a means to an end. Use it to create something you enjoy. A project you care about will drive you to learn and explore widely and is usually as "fun" as programming gets.


I've been on many projects that were cancelled, whether unexpectedly or expectedly.

That's what made programming less fun for me.


Join the PHP World where programming is fun again


Every programmer is diffent. Do you enjoy math? If so maybe you would like Haskell?

For me the real fun in programming is high level work and web/UI design. I really don't like C/C++ much at all.

Things like PyQt desktop apps, SQLite database work, Vue/React on Node, CSS, etc.

Also, Arduino programming is pretty fun, if you're just doing typical embedded stuff like "Make a kitchen timer". It's a lot less fun if you start building your own network protocols or anything that needs a malloc().

It's still C++, but you're on a known fixed platform, usually doing tasks that don't involve any real data handling or dynamic stuff. Almost all the challenge comes from just dealing with hardware issues.

Low level programming isn't a particularly miserable job for me, but it is still mostly just a job.

Another thing I like is contributing to FOSS projects.

The one trap that took me the longest to get out of was writing new programs from scrath for personal use. I always wind up not enjoying them, and then on top of it, throwing them away completely when I decide that the existing stuff that's out there is better, just because I don't have to maintain it.

Now I'm pretty aggressive about not allowing code I have to maintain into my life. I don't even look at tings like Arch, or anything advertised as "Lightweight and flexible".

Nearly every project I've ever done on my own is now totally abandoned, because it's so hard for one person to build something that saves more time than it uses. It's possible if you have extra constraints that prevent you from using existing software(Like a hatred of Electron), and a desktop/CLI workflow and great touch typing skills.

But otherwise you have to REALLY look for projects. 99% of what I see on github I have zero understanding of why it was made, and a lot of it seems like it would be an active nusiance.

Like the famous kumar-asshole.sh, that restores a database to the last backup if it detects an email with certain keywords, or a script by the same person that started the coffee maker, perfectly timed to be ready in the time it takes to walk to it.

The amount of time they save is fairly trivial, and kumar-asshole doesn't even address the issue of why they keep breaking it, and the perfect coffee timer just deprives you of an extra 30 seconds of away-from-the-desk time.

On the other hand, if you specifically enjoy using DIY software, it's a lot easier to find projects.

GDevelop/Godot games look somewhat fun to work with if you take the time to learn them. Plus, as creative projects they don't take six months of development to feel like they were worth doing, you can make a game in two days that(Probably not, but maybe) people actually want to play.

I haven't done game dev in a while though.




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

Search: