Ask HN: What brought back the joy of programming for you?

36 points by endorphine ↗ HN
Question goes to those who fell in love with programming, then lost their love for it because of reasons, and then they rediscovered it.

73 comments

[ 7.6 ms ] story [ 286 ms ] thread
Rust and scala
I really enjoyed "Learn Rust With Entirely Too Many Linked Lists" which engaged me like no tutorial or textbook has for a while.

Anyone remember "The Poignant Guide To Ruby"? That was a fun work of art.

I remember Why's Poignant Guide! What a treasure.
You don't hear about people jumping into Scala much these days. I still have fun with it (most times, it does have some shady backroads). Glad to hear you're having fun!
Pytest, Playwright, and Pre-commit, rewriting to use more modern frameworks, Codeium, poetry, taking some time to set up VS code extensions.

Also, being way more selective with personal projects. Having too many of them can make other, unrelated projects at work miserable, by messing with your schedule.

When I had my own note taking app, it would sometimes take an hour a day. That's more than enough to affect social life or make someone tired at work the next day.

Especially with hardware related projects as those can also make a physical clutter problem.

I enjoyed personal things a lot more once I started layering on all the best practices, same as I'd do for a work project.

And work projects, I've started doing things like type hints for everything not just "stuff that seems big enough to need it", rather than the usual "Just enough" method that a lot of people seem to use.

Before that I wasn't really happy with the quality of anything I built myself.

Now, projects get more reliable and often more performant over time, and I don't feel like I'm just spinning in circles writing garbage, and I'm actually learning new tech and practices I'm actually going to use in the future.

Also, Gitmoji, badges, and all the current trendy things people do with readme and documentation might not actually be that useful, but they sure are fun.

I've started doing block quotes under title headings, like novelists used to do at the beginning of a chapter, and using retro web 88x31 badges.

Building products myself, with my own rules on how it'll be built, and how we get feedback from customers.

I fell out of love for programming after working at too many feature-shops where we'd churn out feature after feature (and in some cases blindly remove features), with nearly zero feedback from real users - just input from product managers with zero domain knowledge.

The joy returns in situations where it isn't software as a team sport.

I'm very capable in group settings, but it's far less fun for me. It's a continuum of the larger the team, the less enjoyment. Working on projects I choose, alone or with one other person, is the environment I enjoy most. There are tradeoffs with each, but I prefer those constraints.

Sounds like Lisp was made for you. ;D (Cuz the codebase eventually becomes something only you can understand.)
In my day job, I build things in a web context. I recently started working on a side-project that wasn’t web-based, and it really re-enforced how tiring it is to work with most web technologies where you want some sort of server-side functionality as well as a UX that only something JS-‘enabled’ can provide.
Seeing direct value to customers instead of being "forced" into features/bugs by management whose only goal is to measure Jira story points, OKRs and measurement of work to stack rank people.

I want to spend time working for the customers, not for bosses who don't care about customers.

When I got a job at a big tech company which convinced me I was smart enough to learn difficult parts of programming. Before that I thought "I'm stupid, nothing I make will be of any value"
Playing around with a Raspberry Pi Pico. After more than a decade of building digital applications, being able to write a program and seeing the output change something in the physical world was pretty cool. I remember feeling that same spark I had years ago the first time I made an LED blink.
Making my own projects, the stuff I wanted to tinker with. Building a software 3D renderer may have no practical use to anyone else, but it gives me joy seeing a world come together on screen knowing I put each pixel there.
I'm a web dev by day so playing around with Unity has been really fun. Having to consider time, i.e. what does everything like at time t=0, t=1, etc., adds a new dimension I don't get it my day job.

It's not programming but playing around with Blender has been really fun too.

I hear you. I come from a web dev background too and co-created A-Frame (https://aframe.io/) 8 years ago taking some of the Unity ideas (entity component) while retaining the fun parts of Web deving and publishing. Games and 3D graphics is super deep. Joy for me is having always interesting areas to explore that are not just the accidental complexity of the regular Web dev tooling.
Retirement.
Ah so you are motivated by when you get tired twice. /s

I often feel like the favorite part of my job is the paycheck every two weeks.

I'd focus on the back part. Why was programming joyful then? Why is it not now?

Maybe it's the environment? The language? The community?

I think certain people's brains work better with different languages. Often there's an overlap with community. I started my career in ruby, and still write it as much as I can, though these days, not usually for "work". I love writing it, and it's creator wrote it to be loved when you're writing it. Even though python shares a lot of similarity with Ruby, I find it frustrating in a lot of the little details and design decisions, and I just don't enjoy writing it like I enjoy writing Ruby.

I don't particularly enjoy writing javascript, but I've always enjoyed writing Swift. I also enjoy go, though find some of it's design decisions on the margins perplexing, pedantic and annoying.

Experiment with different languages. Find something you understand, that your brain doesn't have to fight with.

Also, get a hobby that has absolutely nothing to do with computers. Do something tactile -- baking, carpentry, fixing things. The raw difficulty of manipulating things in the real world is both deeply satisfying, and gives me a deeper appreciation for the ease and elegance of manipulating computers with software.

Hope this helps. Good luck.

Working on open source projects with zero commercial potential. I get paid in exposure! (Half kidding)
I first read 'The Joys of the Craft' section of 'The Mythical Man-Month' at about the five year mark of my programming career, a time when I was feeling a bit blue about the whole enterprise. It inspired me and kept me at it for decades more.

One bit from it, not even the most quoted:

"Yet the program construct, unlike the poet's words, is real in the sense that it moves and works, producing visible outputs separate from the construct itself. It prints results, draws pictures, produces sounds, moves arms. The magic of myth and legend has come true in our time. One types the correct incantation on a keyboard, and a display screen comes to life, showing things that never were nor could be."

[0] https://home.adelphi.edu/sbloch/class/adages/joy.html

Unwinding abstraction layers and trying different platforms, building my tools for the hell of it
C++

I’ve being doing mostly mobile apps for the last 10 years, tried Rust for fun for a couple of months, recently tried C++ and I’m having the time of my life.

Btw, not sarcasm, now looking into C++ jobs

iMessage automation. I love technologies so ubiquitous that they end up registering in our brain as “real life.”

We spend so much time texting each other that it has become transparent, so one expects a cute little chatbot or small game to show up, and it delights people!

I recently made a framework to allow playing Twine games through iMessage and people really love it:

https://www.mayer.cool/writings/imessage-text-adventure/

Another one that brought a lot of joy was hooking up a friend’s iMessage to immediately respond to all messages with a chatbot. It was before ChatGPT came out, so it was just convincing enough to have people for a few messages, but scuffed enough to have some very funny off-kilter responses. It sowed a lot of chaos in our group chats :)

Programming Pearls, Thinking Forth, The Little Schemer, and SICP
Writing about it. Corporate programming often sucks the joy out of figuring out small things.

A few years ago, I started writing about simple things that I learn during my day-to-day work. I write on my personal [site](https://rednafi.com) that I cobbled together in a single weekend.

It doesn’t take much time and works as a great confidence booster when a few of them eventually hit the front page of HN.

Now I often pick up new things just so that I can write about it.

I just started learning Golang.
Hey me too! Seems fun so far.
It's the most fun and joyful programming language I've tried so far.
I made a tool that emailed me the top 10 posts from various subreddits every 24 hours. I solved my own problem and it was the most satisfying thing I built.
I'm only a hobbyist, not a professional (yet!), but: giving up on making whole apps in JavaScript\TypeScript and React. It's not what I'm used to, it just doesn't click for me, and I just don't like it. I admit it's subjective.

I stopped trying to make my little experiment apps in React Native and restarted with C# and I'm much happier. I'm using Avalonia since apparently Xamarin\MAUI is not in a good place lately.

Much like the best camera is the one you have with you, the best programming language is the one you like enough to actually make stuff. The problem is whether one you like is supported on the platform you're coding for...

Pen plotting. You write code that makes designs by drawing a bunch of lines, and then use a robot (mine is an AxiDraw) that traces it out on paper.

In general, generative art (using the pre-generative-AI meaning, i.e. procedurally generating art). There's something really satisfying about writing code in a creative context, because there's often no right or wrong. Often you write a bug, or your algorithm didn't work as you expect, but it looks interesting, and that becomes a new path to explore.