I’ve always been in the camp that I enjoy making things and code is simply the medium in which I feel most comfortable to do so. Sometimes with money in mind, sometimes not.
In a similar vein, I really enjoy building alongside others. So, I’ve been running a group that all build things together over the course of 6-week cohorts.[0] (Just finished the second one!) it’s really fun to see everyone nerd-out about their project and challenges they face. And hits that pure “just for fun. No really” vibe for me.
Hi, I have a personal project I would like to start just now, so I would like to give this a try! But I have a question: in which timezone are the meetings scheduled? I'm in Europe, and if you guys are from the other side of the ocean it could be inconvient to meet.
Awesome -- still need to figure out exact time for next cohort. Since we have people from all over (SF to Seoul), finding a time is tricky, but so far has been okay! I'm currently EU time as well. So, I'd say, go ahead and sign up for now and I'll do my best to make sure I can find a time that works for everyone.
I've often described my motivation for building software to others using imagery: I like to go find a secluded beach, build a large, magnificent sand castle, and then walk away. Will anyone notice? Probably not. Will the waves eventually destroy it? Yep. Did I still get immense satisfaction? Absolutely.
The way that I create software is more akin to a hobbyist woodworker: I encounter something which doesn't exist exactly as I want it yet (or I'm aware of any else) and I build it for myself. Extremely adhoc and single use but I get extreme joy from being surrounded by my little creations.
Reminded me of the Beach Artist, Jon Foreman. There's a news article on YouTube about the art he created on my hometown beach here - https://www.youtube.com/watch?v=OEaJZF1z6j4
I had a bad interview experience where the interviewer asked me to walk him through a project, so I chose something I worked on at home for a few months.
He kept questioning me "why" I made the project after I repeatedly told him it was just for fun and learning. He just could not imagine why I would spend a decent amount of time outside of work where I worked on something just for fun.
To be fair, bringing up a personal project done for fun and learning is just asking for trouble: they are clearly interested in seeing how you perform and talk about a project, maybe how you work with other people, other departments, users, etc.
A home project maybe covers the how you perform but that's it; if you had made it a product then it would be a good example but strictly for fun/learning doesn't seem something I'd bring up in such a context.
I want to be clear that I'm not shunning home projects, just bringing them up at an interview, unless the interviewer specifically asked for this kind of projects.
I wouldn't bring up my personal projects either. This is stuff I do with zero obligation to anyone other than myself, and with no deadlines to worry about. I walk away from projects the second I stop having fun. Many of them are unfinished. I usually have huge bursts of productivity followed by burning out which leads to weeks of inactivity.
It may be evidence of enthusiasm for computers and the craft but it is not really representative of job performance.
I write stuff for fun, but there's always some reason why I chose to build e.g. an in memory inverted index with a gRPC CLI client instead of anything else. Usually it's a simple non-business reason like "I wanted to see how gRPC worked" or "I read a blog post about Elastic and thought it sounded fun" but there's still an underlying story to tell about why exactly word stemming was interesting, fun, and a good learning opportunity.
I believe that's the majority view in general, and as the number of programmers continues to increase, the majority view eventually also affects the average view of programmers as well. Okay with that as long as they don't deem such thing unacceptable (people are different for different reasons, aren't they?). In fact I think a healthy mix of both kinds of people is needed for many cases.
When I interview people, I ask them to describe one of their difficult work projects. I also ask them if they ever developed anything just for fun. I take their responses to both the questions into account when making a decision on taking them to the next round.
>When I interview people, I ask them to describe one of their difficult work projects
This only leads to a "rich get richer" kind of situation, where people who happened to get jobs that provides them with the kind of impressive difficult projects will keep working on difficult projects.
This is just a reality of hiring, I think. People with more experience tend to find it easier to get hired, thus granting them even further experience.
IMO, the best way to avoid this chicken/egg is with government subsidized technical internships like we have in Ontario. It's a great deal, businesses get junior technical labor at 50% on a fixed contract, and the students get access to learning they'd never have during school.
That's not meant to see who works on impressive projects. It's meant to see how you work in projects you find difficult and how you face that kind of difficulty.
why is that signal on how well they'll perform at the job? If someone doesn't code for fun but is a great programmer you don't want to hire them? Why is that considered acceptable?
You parsed it incorrectly. It is the other way, in fact.
Several times, people do very interesting personal projects, but fail to perform at the same level at work. That gives a clue that it may have been an unsuitable work environment that impeded their performance. It could also be a difference pertaining to their orientation to structured vs. unstructured working conditions. It could be related to explicit objectives with tight deadlines vs. exploratory development with open deadlines. And, more.
Knowing what my work environment is, I usually could understand their medium-to-long term fitness.
So, if you have a candidate that thrives at fun projects but not at work you put them to the next round, because you think your work environment is sufficiently different to make them thrive at work instead of their fun project?
The fact that someone builds something of their own volition is an excellent marker of initiative, of breadth. If there is a choice of potential hires, this signal factors in.
> He kept questioning me "why" I made the project after I repeatedly told him it was just for fun and learning
This sounds like a miscommunication on both sides versus anybody failing (or being correct). Assuming you weren't interviewing for a research or entry-level role, picking--and then sticking to--a home project doesn't answer the implicit question: can you manage a relevant project. On the interviewer's side, instead of doubling down on asking you about the project you chose, they could have nudged you into highlighting relevant experience.
LLMs have really provided me with a lot of confidence to explore making more fun random projects. I personally didn't like the long research process and tool setup just to begin to do something basic. Now a lot of friction is gone and I can prompt a silly idea and get a super simple prototype running and then from there, tinker on my own.
I made this geolocation music web app that plays a little tune based on your precise location. It's just a little fun toy that serves no purpose but I regularly use it when I go for walks just to hear the variation in tunes in different parts of my city.
>I personally didn't like the long research process and tool setup just to begin to do something basic.
I am the exact opposite of that. I love to do the basics and dig myself through it to understand the fundamentals of everything. I love to rebuild stuff. Though I don't research too much. I get some ideas, but basically just read about the functionallity (and theory) about what to build (a CPU, a Compiler, an OS, some webapp, you name it) and then try to come up with a solution by myself. If it kinda works, then ill reavaluate my implementation with looking at others and iterate from there.
Somehow I refuse to use big libraries or frameworks (yes, you could argue the compiler is big too etc etc, but you know what I mean). This makes it unlikely to build the next million-dollar project, but I enjoy it. For a few years I had a negative self-talk and told myself that this is a bad approach. But nowadays I just love it. It's fun. I do enough serious stuff on my job and I don't need a million dollars really (even tho it'd be nice). I rarely use LLMs or SO. I try to stick through reference sheets or read through git repos myself
That's really great that you enjoy the learning process. I feel like curiosity is such a key to being a creative developer. I do fear LLMs will add more of a black box to projects for better and worse. Nice reminder to always ask "why" something works.
This is so cool. I had a similar idea that I did except this one was akin to virtual geocache. Your uploaded a file and could only see the file if you were 5meters within the gps coordinates. Now will take is inspiration from you and add music. Thanks for sharing.
I asked ChatGPT to explain GCC internals to me and it actually helped a lot. I actually managed to add a builtin to this thing. Getting the compiler to actually generate the code I wanted, on the other hand...
Been a while since I've looked at the code but from what I recall, each number in the geolocation is iterated through and assigned a note. This note is generated using the Web Audio Api. It's quite simple and there's so many ideas I have to build other musical patterns. But I do like the simplicity.
In my personal career path, I went from being too tired to work on personal projects, to only working on stuff which might have monetary value, to lately deciding I'd rather live somewhere cheaper so I can afford time between contracts to work on whatever I want, especially the moonshot projects. You know, those kind of projects you have dreamt about for years, that might take 10 years to achieve.
The goal is to work in weekly sprints. Like one or two weeks a month might be contract work, and 2 or 3 weeks a month dedicated to those projects that keep me up at night.
Basically yes, do it for fun, but also set serious time aside for it. It is so sad having dreams that have no time to be explored.
This aligns well with a discussion I had with some colleagues yesterday, and how good artists, authors, programmers, painters, etc. focused on pumping volume. My example was John Carmack's days in Softdisk who was forced to make games that they were nothing to write home about, but according to himself "the time constrains and need to build monthly played a great role in developing our skills that would be later used to make something like Doom".
That's when I realized the root of my own procrastination: I was trying to choose "the right language", to build "the right portfolio project", in order for me to get "the right job". And I thought to myself "no kid ever starts playing with a computer for something as shallow as getting a job".
It's not that there's something wrong with getting a job - I still need to pay the bills. But for the journey of self-improvement in any craft has to have yourself creating, as Carmack aptly puts, "hundreds of programs". Serial startup developers know this, because jumping from startup to startup will have you build stuff fast, fail fast, and learn from it.
After dealing with the products of people writing either "just for fun" or "just for profit", I think I'm ready to meet someone who's willing to try something a little in-between... because here we are, decades later, and Brooks' assertion about the cost of Programming Systems Products remains valid, and everything written either "just for fun" or "just for profit" seems to be little more than a Program, with all the attendant lack of sound engineering that comes with it. I'll happily pay for good programming systems products if someone is willing to actually write them. I just hope someone will get past this false fun/profit dichotomy so we can actually get there.
No, I want "it should exist and should be paid for"... even if that amount winds up being quite small, and only a one-time payment... but I know I'm in the minority that believes nobody should work for free. I'm willing to tolerate a one-time payment knowing that good programming systems products are not going to fall out of the sky because of the amount of work required to hatch them in the first place is apparently beyond what both individual hackers and paid corporate developers are willing to put into their works, so I can't just sit back and wait for someone to write something good... if I don't pay someone who says they'll do it, it's not going to happen at all.
I'm not going to copy-paste paragraphs from The Mythical Man-Month for you. I will say that my definition accords with Brooks's definition presented therein.
> If one spends a lot of time on Hacker News, or other startup-oriented news sites, they might believe that everyone is working on their next multi-million-dollar startup and/or exit strategy. It may be hard to imagine that people work on open source code purely for the fun of it.
There’s no contrast here. HN is my primary source of FOMO for programmers having more fun than me. No, really.
A little OT but instead of a regex a LLM can be really good to fix HN titles and avoid such errors, e.g.
Prompt: remove any hyperbole from this title otherwise leave it as it is: "just for fun. no really"
Gpt 4: The title “Just for Fun. No Really” doesn’t contain any hyperbole, so it can be left as it is.
I really like the list included in this article and the general thesis of "try to have fun programming again!" However I think the post is just touching upon the deep hustle culture issue our culture has, which is in my opinion a symptom of late stage capitalism, where we are all transformed into nothing more than worker-consumers and the height of success is becoming a worksumer, where you've managed to monetize your consumption activities (streamers, influencers).
How can you justify coding "for fun" when realistically that time could be spent billing to a client? Even if it's just a couple hundred extra bucks a week, if you invest it wisely, come retirement that could be non-insignificant increase in your quality of life! Or maybe the extra cash saves your ass when you get an unexpected high medical bill, if you're an American.
Why would you build a FOSS project when Google or someone is just going to take your project and integrate it into something they're building, monetize their product, and you'll never see a cent of it? Or why work on your own FOSS project when you could do the more optimized thing of trying to get a commit in on react or vue or whatever which will blow the socks off your interviewers during your next job hunt?
Maybe we're all quite ill right now or maybe just I am if nobody else thinks like that. I don't have a solution it just makes me sad that that's how things seem to be right now, and that's just as a relatively well off American developer. I imagine it's even worse if you have to fight much harder to get the high paying jobs that I have much easier access to.
The hustle culture you’re describing so well brings me down every day. I want to be a craftsman, growing experience and using my knowledge and expertise when I deliver value. Competing on care and attention, charging what I need and delivering something I can be proud of.
The first step for that is something I’m planning rather soon: move to a small town where I can afford life without needing to hustle with all of my energy just to stay afloat.
I took that first step by moving to Taiwan and it completely changed my life. Having a privileged life of plenty makes a literally unimaginable difference. Money buys freedom, if it doesn't in one spot, you can maybe geographically arbitrage until it does.
The "hustle culture" affects you if you believe it does. If you didn't "get a commit in on react or vue or whatever" until now, what was it that stopped you? Why aren't you billing that client? Will starting a hobby project now change anything meaningful in your life?
I personally think you need to let go of this mindset and try to do something just for fun for once, no really.
I’ve come to think that libraries need to have either of two properties in order for me to want to use them:
They are well-known and provide sufficient value that DIY would be infeasible (cryptography and image generation for example); or
they are wellwritten enough that I can debug them or even take over maintaining a fork if the upstream is abandoned or I need to develop the functionality in another direction.
It’s astonishing to me how many are comfortable with releasing random unvetted libraries in production and still are very careful about reviewing code added to the project itself.
I went so far into this rabbit hole I've come to regard depending on anything but the Linux kernel as unacceptable.
To that end I created a freestanding C programming system of sorts. My own libc, essentially. Without all the legacy of C like errno and locales, and with no portability requirements. Then I implemented a lisp interpreter on top of it. I needed to implement some ELF stuff and eventually I realized I was recreating the linker well. I suppose that'll be the foundation of the lisp's foreign interface.
It's in my plans to create a freestanding Linux VFS for SQLite and integrate the database directly into the system as a module. I'll also try porting libsodium at some point, I'm not smart enough to roll my own cryptography.
This is a great list of projects that are “for fun,” but the flaw is that all of them are “complete,” or at least achieve something close to their stated goal.
A true list of “for fun” would also include projects that were never finished, projects that someone spent a few weeks on and then forgot about, projects that were a dream and a mess of premature abstractions that never saw the light of day…
Coding for fun also means enjoying the journey and stopping when you feel like it.
I enjoy learning and teaching. In my spare time I build, or often half build things, and then write about aspects of the process. For the longest time I didn't even share my blog with people. I recently started sharing one particular series and I've gotten a number of comments on "why?" or "why not just use X library instead of building it from scratch?" Doing something just because seems lost on some people.
Same feeling here as well. That was basically the main reason I created my online school... to teach the things I was not allowed to teach at the university.
That's a great thing. It's like cooking and crafting an amazing meal just for one. It's a completely intrinsic experience but definitely worth it regardless.
I struggle to explain this mindset to some people that send me emails at pikuma.com. Still, my take is always: "if we need to explain why this course is exciting, then que question is probably already answered."
Exactly why I love being part of the Recurse Center community. It's a lovely little oasis full of gentlenerds who program seriously for the "joy of computing": https://joy.recurse.com/
I would add that like poems, a "logiciel" as we aptly say in French, is like echoes of some mind(s).
If you never wrote a poem, I encourage to do it so. I don't write them to publish them, and actually some of them I write them over several years or even decades. Not that they are that long, but where I have the privilege to do so, I like to let the initial vision mature. And when I read them from time to time, they do resonate with something deep inside me. I also write aphorisms in its dedicated note book.
I wish we had more programming language out there with only readable words in it to combine both the pleasure of out loud utterable and executable written pieces.
There's an excellent anecdote of Maxwell[0] and Thomson[1] looking at some experimental apparatus the former had built, and when the former says to just look through the eyepiece here, the latter asks him what the deuce the little man dancing in the corner is for.
I have a "tinker" directory with decades worth of small, just-for-fun projects I've coded. Many of them are bleeding-edge browser experiments, and I don't want to bother with "requires such-and-such browser" messaging, I just want to see what is possible.
For most of them, building the thing is fun and instructive--and every once in a while I can draw from this reservoir of creativity for new public-facing projects. It's great!
When you only code for money, innovation is out of scope. Innovation demands focus, and focus comes with the fun you put into writing code.
Making contributions to open-source code of your choice just fun is something you can proudly tell others about because there is no money in it for you directly (Sponsors increase the excitement to work more, together and better).
Side projects can also become your source of fun if open-source projects are not for you, but you must share with people around you and the world.
The modern world is built on a happy coincidence that hackers found joy/fun in programming and also that sometimes that programming included useful things like file systems or OS's.
And, transferable tech. Things like large distributed video games, are difficult, and the tech built for 'fun game', can be transferred to industry.
Another Fred Brooks quote on why programming is fun:
> Second is the pleasure of making things that are useful to other people. Deep within, we want others to use our work and to find it helpful. In this respect the programming system is not essentially different from the child's first clay pencil holder "for Daddy's office."
Freed Brooks, the manager who wrote that most programmers should be the handmaidens of the 10X programmers. I don’t think I’m going to take hints on fun and autonomy as a programmer from that man.
You can’t (royal you) associate a quote with a famous person in order for it to be apparently more credible and profound and then swivel and say “no, forget who that was” when people complain about that person. The cat’s out of the bag.
Pick a lane. No silver bullets in quoting rhetoric.
I’ve encountered a pattern where people that respect me see me as “more” than a software developer when I reach out into my network to do dev work
I’ve run companies, and done manager roles within organizations, I’m prideful of my coding abilities and find it more powerful of a skillset than management
Its objective to me to want to do individual contributor software dev work, and seeing how the corporate ladder has morphed into leveling to accommodate that, its really surprising and antiquated to hear their word choice of “more” than a developer
and its also sad to see how two-faced they are to their employees then, where they are seemingly gaslighting employees to being prideful of their wage work while being relieved to be exempt from that amongst people in the founder or capital tier that they respect
i programmed things for fun for months on end without having an internet connection. never had the need to share. occasionally I needed connection to download papers on the subject.
It was likely removed by HN's automatic clickbait filter. It modifies your story title at submission time to remove hyperbole, filler words, all caps, etc. Pro tip: you can edit your story title immediately after submission to fix any weirdness introduced by the filter.
In a similar vein, I really enjoy building alongside others. So, I’ve been running a group that all build things together over the course of 6-week cohorts.[0] (Just finished the second one!) it’s really fun to see everyone nerd-out about their project and challenges they face. And hits that pure “just for fun. No really” vibe for me.
[0] https://lmt2.com