I definitely identify with the author. A big mistake I made in the past was to assume that other software engineers are equally enthusiastic about these kind of projects, or the least bit impressed by them. I was asked for a job interview to prepare presentations on two projects I was particularly proud of. I chose a hobby Operating System kernel I'd developed from the ground up, and a fully-functional MIPS assembler I had written. The interviewers (senior developers within the company) really just did not get it. Responding with questions such as: "Is this going to make you any money?", and "When do you expect this to be complete?". They really couldn't understand my motivations. I did these projects for no other reason than that I love programming, and I have never stopped loving learning about it. I have never needed to consider, or justify to myself why I did these things. I do them because I enjoy what I do.
I ended up pivoting to discuss some comparatively banal professional project migrating a mid-sized financial product to a new tech-stack, which managed to captivate their attention. I found this experience extremely disheartening, however important a lesson it was to learn. I don't think it's changed my outlook in any way though, admittedly. I still work on the same kinds of projects, and I still think the best developers are the ones who do work on toy projects for their own enjoyment.
I strongly relate. I spent a couple of weekends working on some procedural art [0] and was pretty happy with the end result. When I showed it to some of my co-workers / manager, they were baffled. "Uhh.. OK. Why did you make this?"
This is beautiful, I really don't understand people who don't see the value in creating beautiful or interesting things.
I can understand not wanting to do it, it takes a fair bit of time and energy that only comes with a fair bit of passion on the part of the creator, but not understanding why people would just want to make things? That's fairly alien to me =)...
I'd echo seanwilson and ask that you look at flocking, but also more general boid behaviours[0], small herds of these butterflies flying together in a space would look very cool =)...
Sometimes I post things on Show HN that have people seemingly baffled. I like to retort that I made them because I wanted to. It's what I chose to do. I enjoyed doing it. People don't seem to think that's good enough. I think to a large extent coding can be like making art. You don't have to explain what you're doing. You can do it because it satisfies you. Not every "coding product" has to be an actual product. I think engineers in general would do well to learn to appreciate things from an artistic perspective and be comfortable with ambiguity in purpose and meaning, and even if there was a clear purpose, they don't have to know it to appreciate the creation. I know it's tricky, because engineering is by necessity such a logical, needs-clear-definitions type of undertaking, but there's also so much creativity that happens in the space as well. I think the "space as a whole" is lessened when people only what to judge code products in a utilitarian or easily understandable sense. Sometimes you just make things because you can, because you choose to, or because you want to. And that's cool, equally (or more) valid and can be very special and powerful. Practically for some people it might even be a good antidote to the common trope of "culture / industry malaise or disillusionment", while at the same time helping people learn and improve their skills doing something they like. Ultimately, everyone's different, and I get if some people want to factor all the work they do, including learning, from a "how will I bank this?" perspective, and that's cool, but I just think there's room for more views, and they should be appreciated, and certainly not shunned. I think our industry is lessened when people shun people making stuff for their own reasons. I really like doing this, and I think you should try it to, if you're on the fence! :P ;) xx
> I think to a large extent coding can be like making art.
That resonates very strongly with me.
> I enjoyed doing it. People don't seem to think that's good enough.
Yeah, I've found that a lot of times when you want to show something you've made to someone, they'll automatically expect it to be useful and judge it from that perspective. Perhaps that would be different if we could frame it in a way that from the beginning helps align expectations?
> Perhaps that would be different if we could frame it in a way that from the beginning helps align expectations?
It might, but I just want to put it out there sometimes. I don't want to have to explain it, or limit its appreciation to whatever I say it is. I like to leave it open for people to interpret. Sure, when you go to a gallery, sometimes there's a little card that "explains" the art work. But sometimes not. I guess I like the freedom of just creating things and letting people interpret them. I don't want to do that all the time, explain it, but I do it sometimes. So I suppose I'm pushing the task onto the consumers of the work to work out what it means for them, rather than me to explain it. And seeing well are people going to be open to that or not. Whatever their reaction, it's okay either way. I just want the freedom myself to explain it when I want and not when I want, but on a basic level both are equally valid.
I'm not in charge of hiring people but I think your project is awesome.
I do DFIR though and from time to time I help with interviewing potential security analysts. If someone has the skillset needed for the job and on top of that they are so passionate about technology that they work on even tangentially related projects outside of work its largely regarded as an excellent indicator that they'll be a good hire. Obviously that's not the only type of good hire but its one of them.
If I was the person you responded to afterwards I would have come to the conclusion that the interviewers were genuinely stupid people. Even if you don't know anything about OS development you should understand as a person that works with computers or a recruiter that hires for the industry that its a non-trivial project.
Nice! Have you considered adding flocking (https://en.wikipedia.org/wiki/Boids) with lots of them flying around? For a "useless stuff" project, I coded this for bats (all the same model) flying around. It's really fun to play with the flocking parameters to make them behave like bees, fish, birds etc. and it's not much more code than a regular particle system.
That's very cool! I should probably have added to the original comment that in the cases where it's been my role to interview potential candidates for a position, these kind of projects are the first thing I look for. I'd much rather work with people who are fundamentally passionate about what they do.
Thanks, and that's great! Due to experiences like the above I would probably not even think of bringing this up in a regular interview, unless I get the vibe that the interviewer might actually find it interesting for its own sake (which isn't that easy - turns out I have a terrible intuition for which people would appreciate something like that).
These are beautiful! And I second the other comment asking how it works. A good candidate for a blog post if you're looking for a more appreciative audience than your coworkers.
First I'm generating the general geometry of the wings - the most basic shape is a "teardrop" / half of the infinity symbol (see this[0]). Then they are scaled and rotated randomly (within a range to match the other parts of the wings), and further perturbed to make the shape more random. Then I'm drawing lines from the "tip" of the teardrop to the edges and using them to color the segments. The final result is rendered with Three.js[1].
Obviously this is a very succinct explanation, it took me quite some work. You're welcome to look at the code[2], though it's quite messy :)
I feel changes a lot between locations (“scenes”). Back when I lived in Berlin, we had entire meetups dedicated to talk about _useless but cool projects_. Moved to the Bay Area, and I could never find anything remotely similar. Maybe they exist, I just couldn’t find one.
I also experienced the same interviewing experience you had, many times: my “talk about something interesting you made” answer used to be “I made a twitter bot that makes poetry with ML and I spent months training it” - it always got radically different reactions, from blank stares to “why didn’t you use those to mine bitcoin?”
A lot changes between times, too. Decades ago, those of us who did computer "stuff" in places like the Bay Area were typically nerdy science/math lovers who were an unfashionable segment of society with hobbies like ham radio, astronomy, homemade electronics, science fiction, math competitions, etc.
Meetups like the West Coast Computer Faire, little shops like Weird Stuff, amateur radio "hamfests", astronomy clubs, and so on were everywhere. Programmers knew how to use soldering irons and slide rules. Tech companies were rounding errors compared to, say, car companies.
But the intellectual fashion enforcers with wealth and power that tech companies are now, with tools to make society submit to their will are not the culture we were. Like Wall Street before them, they have bigger plans than ordinary, little people with their quaint hobbies. So even though we pocket protector and slide rule types still exist and can form a quorum online, the in-person meetings mostly (not entirely but mostly) vanished back in the dot-com mania.
> A lot changes between times, too. Decades ago, those of us who did computer "stuff" in places like the Bay Area were typically nerdy science/math lovers who were an unfashionable segment of society with hobbies like ham radio, astronomy, homemade electronics, science fiction, math competitions, etc.
Dammit. So this is not something I merely suspected but is really true. I grew up around the year 2000 and programming was all I could think about, I read about people/meetups you describe and was eager to be a part of them.
By the time I grew up, attended university and started a job, things seemed very different. The stuff that got me excited about programming are now considered "boring" or "legacy".
Makes you wonder if you should give up on what you like doing and do what is considered amazing now (AI etc) even though you don't find it fun :/
> Makes you wonder if you should give up on what you like doing
Absolutely not. All these things people are talking about in this thread are still out there, you just have to keep looking. Posts show up on HN occasionally that hint at it, but one of my favorite places to go browse when I need a hit of that passion project ecosystem is hackaday.com.
There are so many people out there doing cool stuff just to do it, especially given the fact that everything is literally orders of magnitude more accessible than it was even 10 years ago when you consider resources like YouTube, and the race to the bottom on cost of things like Arduinos, 3D printing, etc.
If this does circle back to finding a job, then that's a matter of finding the right fits. I got my first job out of college writing iOS apps for motorcoach bus schedules by showing the company a game I released on the app store, and my most recent position for a Senior iOS dev (which has translated to a firmware position), I spent most of my interview talking about my homebrew synth project: https://imgur.com/a/FZ6GFsI
There are people out there who will be interested, and they also happen to be people who hire people! I show my coworkers my side projects all the time, sometimes they're somewhat relevant to what we do, sometimes they don't relate at all.
I stayed all my life at the same location, and I noticed the change between the times, too.
My guess is that this is because of different motivations people had to learn computer programming. Did you learn programming because making simple programs in Basic was irresistibly fascinating? Or did you learn programming because people told you that this was how you could make a lot of money? Of course the former type of software developer is more likely to play with "useless" (i.e. not immediately profitable) stuff than the latter.
When I was a kid, personal computers existed, but they were mere toys. It was not obvious that something like today's IT industry will exist one day. Therefore, only nerds played with personal computers. And the first IT companies were full of nerds, because those were the only people who knew how to write code.
When it became obvious that IT jobs are well paid and the demand for programmers is large, people motivated mostly by money started studying computer science, too. These days they probably are a majority at most workplaces.
Nerds had their moment in the spotlight, now they are being displaced by normies. Being fascinated by tech for tech's sake is uncool again. It is cool to be fascinated by tech for money's sake, though.
By firing James Damore, even Google made it official that people on the autistic spectrum are no longer welcome.
Related is the common misconception that the well-known tech companies, corporations and startups alike, are part of that same "nerd" scene you mention. They aren't. They're just another flavor of business, and the people running them are just businessmen.
In contrast, I always found myself feeling like a fake not being familiar with soldering irons, hardware, kernel programming, nerdy and rocket sciency stuff.
Those things are exciting to me. But I notice my work colleagues, especially the ones from newer generations and those working more on high level stuffs, are rarely interested in these computational/communication device hobby thingies at the fundamental levels. They are more interested in what to make out of them rather than what are they made of.
No, no! It was about how interested you were, not how skilled.
These things are exciting to me
And there you go: you're the real McCoy. When I say, "programmers knew how to use soldering irons and slide rules," I mean that you, a programmer among other things, would get together with friends at an astronomy club meeting, and somebody would know how to estimate a rough comet orbit from some observations with pencil and slide rule, and everyone else would say, "ooh, show me how!", even though the Naval Observatory was going to do it for you and do it better. Yes, but how can I do this magic myself? Most programmers were the kind of people who wanted these other skills but didn't necessarily have them.
I'd go to a hamfest barely knowing how to spell "ohm", discover someone building his own computer, and he'd show me how to solder a joint that didn't look like a little silver snowman, and I'd teach him that, no, surprisingly, there is more than one algorithm for sorting, and we'd both hear that someone had just picked up a communications satellite overhead on his HeathKit shoebox receiver, and we'd run off to see it. Was there money in it? More likely to cost money than make money. Couldn't NASA do this? [puzzled look:] Sure, but look at this! We're picking up a signal from SPACE!
Ok wow, I feel like this really describes me, I'm playing Kerbal Space Program Multiplayer and one of my friends has completed the game so knows how to do everything and I'm still trying to do each bit that's already been done.
It's very much, "look I get that we've done it, but I want to know how to do it", how else am I going to learn?
I never really got into ham, I should see if there's anything locally...
I really feel this. At some point, all those hobbies became metrics to optimize for monetary gain, things to put on a cv. Somehow that seems to have changed everything.
There is this modern phylosopher, Byung-Chul Han[0], who talks about this and similar stuff on his essays and books. You could read him on a weekend, his books are short.
[0] https://en.wikipedia.org/wiki/Byung-Chul_Han
There are plenty of people from both groups in their comment who participate in HN. It's not too surprising, he was not too kind.
It's the tyranny of the internet, the bigger a group of people the harder it is to keep everyone happy and in agreeance, and not tread on any toes. Disagreement isn't the end of the world though.
I had the same experience when I moved back to the Bay Area. I made a serious effort to find meetups and connect with hacker spaces, etc. Most of them were veiled product pitches or fishing for developers to hire. Also, some of the meetups had people obviously looking for ideas to take. Really turned off by all of it and quit going out. When even TechShop went bankrupt I realized that the "scene" was long gone.
All the eccentrics and wizards seem to be gone. It's all just crass transactional factory workers. Last contract I was surrounded by people who talked about the entire line of Audi and BMW sedans, but had zero interest in any ideas.
A good portion of the population would have no idea whatsoever to do with themselves if money ever becomes unnecessary for society to function. This is why so many people who suddenly become rich are prone to drug abuse and increased suicide risk. Some people are only able to see what they were taught.
Well, statistically speaking, neither will the commercial project, no matter how useful.
It's too bad interesting but ultimately useless projects hold so little weight in interviews. But I don't know if it's clear cut that they will be less profitable than commercial projects, which fail more often than not. Expanding your skillset may be more profitable in the end.
I've been thinking of pivoting to useless myself. With projects of some commercial potential I have to have a novelty budget, usually ending up with Node.js and React because as boring as the stack is you can always Google a problem and have the solution handed to you on a platter. But so far none of them have made me any money. They have given me some business experience, though, but I get even more pushback from highlighting or trying to apply that in my day job. They want a good little worker bee, not someone who will be gunning for any business development positions.
That's a really disappointing reaction you got. If I was interviewing someone who described having implemented a kernel or an assembler for fun I would be thrilled!
You would be thrilled, but would that get the candidate the job?
A very common topic about programming is how useless are most whiteboard job interviews, as they challenge the interviewees on something they will never use in the job.
Few things are farther away from day-to-day programming that a white-board problem, but kernel development might just be one of them.
In regards to the GP story, I'm also saddened that the interviewers didn't show interest for those projects. Kernel development indicates a high aptitude for many kinds of unrelated programming jobs, but not for most of them. Especially "enterprise" jobs. For the purposes of the interview the "banal professional project" is likely the relevant one.
If anything, having the senior developers show no interest is a good thing, and indicates that even if the candidate gets the job he probably won't enjoy his time at the company.
> Few things are farther away from day-to-day programming that a white-board problem, but kernel development might just be one of them.
Kernel development involves reading vague documentation (that might be wrong) and figuring out how to make things work with not always useful or immediate feedback. And reading other people's similar code to check for clues.
If that's not relevant to day to day development, I've been working at the wrong places. Yes, you don't do a whole lot of page tables day to day; but ocassionally you might need to make something work better or faster, and having deep knowledge of how you might put something like that together will help a lot as you dive into the murky depths of whatever actual OS you work with. Or you could open a support ticket with your vendor, I dunno, people always say that's an option, but I've never seen it happen, and it takes longer to make a clean example program to share outside the company than it does to dig in and fix the problem.
I think in general people severely underestimate how useful seemly unrelated experience or knowledge is.
Keeping with the example of creating an OS kernel, foundational programming skills translate across everything. So kernel development shouldn't be a negative signal in regards to programming ability.
In regards to kernel development itself, I think it's probably very valuable experience not because of the programming but because of the perspective the person has gained. I have no experience with kernel development, but I would hazard that you need a very different mindset and approach compared to application development.
I think the perspective you gain from being forced to adopt a different mindset and approach is massively undervalued by most people because it's not immediately obvious how that experience is useful or directly applicable.
> I think in general people severely underestimate how useful seemly unrelated experience or knowledge is.
I'd go as far as saying people who've never done this level of hobby work don't understand the amount and breadth of experience and knowledge one gains this way.
A OS kernel or an assembler for a niche architecture aren't something you just do like another work task. It's not something you half-ass under deadline pressure by gluing together some third party libraries, StackOverflow tips and hastly skimmed documentation. Your boss would never agree to pay you for the amount of time and care that's involved in hobby projects like these. A month of such a project will teach you more about computing than a year on the job[0].
Unfortunately, this kind of experience is hard to keep track of and neatly summarize on your CV. If you tried, you'd end up with a page or three extra, and people would think you're just keyword stuffing, and doing it badly - referencing niche, unmarketable technologies, seemingly related to nothing[1]. These skills are important and very useful, but they don't look like it until you need them[1], and you're unlikely to pick them up on the job, unless there's already someone who had them before joining the company, and is now teaching others. There just isn't time. Taking care, or spending time sharpening the saw[2], is considered time not spent delivering business value.
Since most software companies aren't really training their workforce much, it's kind of dumb to ignore off-work experience - after all, if your company isn't giving people time to skill up, why assume previous companies on a candidate's CV were different?
--
[0] - It might not teach you how to work in a team setting, though. That's what jobs are good at. That, and teaching you what "good enough" is.
[1] - Like, I wouldn't put "Event Tracing for Windows" as a qualification on my resume, even though me being familiar with it saved the company a lot of money they'd otherwise spend on people continuing to fruitlessly chase a heisenbug.
> Few things are farther away from day-to-day programming that a white-board problem, but kernel development might just be one of them.
This is true. I'd counter that though by saying that I don't think there's any other project that's taught me more about the nature of what we do as programmers than Operating-System development, even just the little I've done. In order to build even the most basic, non-functional toy kernels you need to gather a comprehensive, holistic view of how compilers, operating systems, and computer hardware interact.
> You would be thrilled, but would that get the candidate the job?
At previous companies I've worked at (small statups) where I had a high influence on hiring: yes absolutely unless someone more qualified with the same excitement came around (aka Rob Pike walks in).
At Google interviewing is complicated. There is a lot on the Google careers site about this if you're interested. If you brought this up while doing team matching it will make people's eyes light up. My TL liked that I was doing game dev, R&D, and OS dev for fun and I think it's a large part of why I was chosen for my team.
Kernel development would be a stupid thing to put in your requirements list as it would generate too many false negatives, but it should definitely be a nice bonus for any candidate since it demonstrates a fairly high basic level of competence across the board.
Nobody's complaining about whiteboard coding challenges because people who ace them suck at writing code. It's because a far greater number of perfectly competent programmers will fail any given challenge of that type above trivial complexity.
> because people who ace them suck at writing code
Is there such a high correlation? I used to do a lot of hackerrank-style problems for fun, a few years ago. If I had to evaluate my ability to write code back then: pretty crappy.
I was good at writing functions, I was bad at writing programs.
I think their point is, there's just so many bad candidates that even among those that pass whiteboard coding challenges, most can't code - but it increases the ratio of good to bad coders in the pool, so in lieu of a better option[0], it's still used.
--
[0] - There are plenty of better options, but they tend to not scale - so they cost more, and companies avoid them.
No, that's not my point and it's extreme arrogance on your part to assume that coding is some sort of arcane art only accessible to a select few. Programming is a skill like any other, you develop it with experience. DS&A screening simply selects for people with a decent understanding of the fundamentals, even though it has a very high false negative rate.
Imagine in any other industry, where the candidate mentions
irrelevant job experience, and expect that to be the criteria for acceptance into the job.
For example, an actor applying for a role in a commercial might cite their side role in doing a theatrical production of hamlet for their community, but the interviewers (an advertising production agency) might only want to care how much professional experience they have shooting commercials.
Sure, these experiences in "unrelated" work might show qualities that could be applied to this job. But you aint paid for your broad and wide interests in the topic - you are paid on being able to implement some work/feature that somebody else told you to do. And in fact, if you require intrinsic motivation to actually perform well, you might end up being a liability to the team, rather than an asset - after all, if the work is boring, and you lack intrinsic motivation for it, you might slack off, or over-engineer it to make the work more interesting to you. Or you might end up being a difficult person to work with for other team members because you sit so far above them intellectually.
> For example, an actor applying for a role in a commercial might cite their side role in doing a theatrical production of hamlet for their community, but the interviewers (an advertising production agency) might only want to care how much professional experience they have shooting commercials.
Does it work like this? I guess it depends on the point in actor's career. If they're 10+ years into commercial acting, then community theare might not be relevant, but at the start of one's career, it seems to me to be highly relevant. At the very least, it demonstrates the person knows the basics of acting, can follow the script, and has experience dealing with the support structure (director, sound/lighting technicians, etc.). This isn't fundamentally different from what they'll face when shooting a commercial.
Also: at least over here in Poland, most film actors come from classical theatre background, they study in theatrical schools. Any kind of theatrical background is highly relevant.
The analogy here doesn't make sense. It'd be more like the actor mentioning that he doesn't have any experience doing commercial work, but he has acted in a theatrical production before (suggesting that he's adaptable and willing to do more than just one kind of acting job).
That's literally what happens for most business or leadership interviews. The only common thread for most of them is that they ran a company. They may know nothing about the market, the customer, the product or anything else related to the business, it may even have failed miserably, but because they have an MBA and hired a handful of people they're somehow competent for the job.
How about we hold those people accountable to the same standards? Hell, most of your politicians are that way.
You have dentists commenting on how pandemic response should be.
For the last 4 years a failed business man con artist destroyed pretty much all he could get his hands on and he's still hailed as some sort of mythical creature.
> Imagine in any other industry, where the candidate mentions irrelevant job experience, and expect that to be the criteria for acceptance into the job.
Are you f'in kidding me? Either we hold the other useless part of society to the same standards we hold ourselves accountable to or we give each other a break.
EDIT: and for all the ignorant folks thinking Trumps schoolyard bully rhetoric did anything but empower the CCP keep in mind that Chinas nickname for Trump is "Chuan Jian Guo". Trump the nation builder(guess who's nation they are talking about). And as much as I disliked Obama and his TPP, it was the answer to the new silk road. Trump basically handed China the entirety of Asias future on a silver platter, and in return the US got what? 10 billion in trade deficit balances? Completely laughable. Or the new Blue Dot(completely fitting name by the way)?
Blue Dot is described, officially, as promoting global, multi-stakeholder “sustainable infrastructure development in the Indo-Pacific region and around the world.”
It is a joint project of the US Overseas Private Investment Corporation, in partnership with Australia’s Department of Foreign Affairs and Trade and the Japan Bank for International Cooperation.
Now compare it with what just happened this same week at the inauguration of the China International Import Expo in Shanghai.
As Xi stressed: “To date, China has signed 197 documents on Belt and Road cooperation with 137 countries and 30 international organizations.”
1. MIPS, eh? Say, does your assembler automatically fill branch delay slots, or is that manual? Does it just fill them with noops, or does it move instructions from the branch target?
2. Do you have all the pseudo-ops, so that a move doesn't have to be expressed as add dest, src, 0 type of thing?
3. Is your assembler syntax compatible with other assemblers? Is the object format?
An important lesson for me was that doing side projects during my free time didn't make me a better developer at work. Writing a video game or even a webapp without the constraints of working on a team and having business needs that you don't get to choose.
Partitioning "work programming" and "home programming" as two separate skills in my mind has been very useful.
My experience had been the opposite. Most techniques, patterns and tricks I learned in pet projects improved my work code. Of course, this is only work's code part, other business stuff like meetings, constraints, etc. didn't get affected so much.
Yeah that's what they're saying I think. Programming outside works helps your programming inside work sure. But for many (most?), programming ability isn't the limiting factor on how effective you are as a _developer_ at work.
Which is something I consider a big scam pulled on the people entering this workforce. You expect to be using your brain to build great, useful things - but in practice, you're expected to be a people person collaborating on doing mostly crap job under tight deadline pressure. No surprise burnout is a problem in this industry.
I mean spread awareness but that's pretty much every job. I've done a lot of kinds of work in my life but this is pretty much the easiest. At least we're paid well and respected. All the other kinds of work were just as hard under as much or more pressure and also for poverty wages. I'll stick with this one lol.
You're absolutely right. We have it quite good, all things considered. It's not like I'd have chosen another career if someone told me how the real world works up front - but it would've saved me a few years of pain due to mismatched expectations.
I was thinking about this recently. Loving to code and getting better at designing and implementing code only goes so far in the industry. To really "level up" you have to learn a whole bunch of other things related to project management, communications, and politics.
I use fun side projects to really level up my software design skills because I can take on bigger tasks and have total freedom to experiment with different designs. I don't think I'd be the programmer I am today without all the side projects I've done over the last 20 years. On the other hand, work has taught me how to work on a team, how to communicate well, how to make political trade-offs, and more.
Thanks: I'm now changing my interview process. If the company doesn't "get it", if they don't understand why _having fun programming_ doesn't make me a better programmer, it's time to leave.
A hobby OS kernel sounds effing amazing and super cool. I've also written an assembler and interpreter (8051 variant), which was mind-bending in a great way. Thanks for posting!
I don't know, if I were in a position of hiring programmers I'd be a little suspicious of how much they do it for fun. I don't want people who base their choices of language, libraries, frameworks or whatever at work on what is fun or interesting to them. I think I'd want to see them have fun creating something for which programming was a means to an ends more than the fun part itself.
It's just a different type of enthusiasm. Some places need/want people really enthused for computer science. Other places want people really enthused for whatever domain they are in. Other places want people really enthused for solving customers pain. Other places want people really enthused for a cause. Being enthused for x when a company wants enthusiasm for y just makes it a bad fit. It doesn't make either party wrong/bad/whatever.
I wasn't trying to be judgemental. It could be, for very valid reasons, that genuine enthusiasm for programming just isn't valued or is viewed indifferently at that place rather than necessarily being something that is either going be crushed out of you or else you'll leave or be pushed out...
Genuine enthusiasm is lethal in any work environment. IT is considered a cost center and people who actually care keep asking for things which cost more money or overcomplicate a manager's work day.
I've found it is cultural and more nuanced. IT can mean a lot of things too, many of which are not related to writing software. And if internally developed software is not adding a competitive advantage, should it really be internally developed?
If genuine enthusiasm really is lethal, it sounds like a toxic work environment.
Sadly, some recruiters are looking for a cog to fill a specific hole, and they do not want someone more experienced or better than what they're looking for (ie. they dont want the Einstein, they just want a math teacher). The salary would also reflect that they are specifically looking for a cog. It's best that you didn't get that position.
I disagree - they didn't ask GP because they wanted to gauge their interest in programing - they asked that question because they wanted to figure out what kind of colleague they would be, and if their experiences would mark them as more suitable for role compared to other candidates. GP's answer was probably from the left field (for them) - put yourself in their shoes: how would you gain insight into gauging their suitability for "cog" work based on completely unrelated hobbies?
Always keep this in mind at the back of your mind when interviewing - your answers have to relate to the job you're interviewing for in some shape or form, hopefully in a good way. I'm guessing the interview wasn't at a kernel, embedded devices or compiler companies - those would have dug into GP's projects in detail, with enthusiasm. GP would still be cog there, obviously.
> put yourself in their shoes: how would you gain insight into gauging their suitability for "cog" work based on completely unrelated hobbies?
This is the core disagreement though: to 'ajxs, me, and many other commenters here, these aren't unrelated hobbies. Software engineering can't be neatly demarked along the lines of programming languages or frameworks. These are just the tip of an iceberg (and most of them are just flavors of the same thing, solving the same underlying problems).
You don't just write a OS kernel and become experienced in kernel development. These kinds of projects, done on the side, with no deadline pressure forcing you to do a half-assed, minimum-effort job, allow you to gain more generalized, holistic understanding, that's very much transferable into just about any kind of programming job you could do.
> your answers have to relate to the job you're interviewing for in some shape or form, hopefully in a good way
That's a very good point. Myself, when talking about my seemingly unrelated side projects, I consider it my responsibility to show how they connect to their domain and skills they look for.
There's a lot of truth in this comment. Being able to gauge the interest of the people you're presenting to, and adjusting accordingly, is obviously going to benefit you in any situation too. It's a good idea to focus on keeping things relevant. In my defense, in this case the instructions were very open ended. They wanted projects I was particularly proud of, and left the scope very wide.
Regarding gauging my suitability for "cog" work: Without wanting to sound arrogant, I don't think it's really that remarkable a feat to memorise the semantics of modern enterprise tools (maybe only a great feat of patience). I can't imagine why anyone would want to hear about all the ORMs I've used, or what Java/Python/Node/<insert tech here> libraries I've used over the years. That stuff is already in my resume. I think it's probably a better wager to risk boring the person looking to hear all about which new Java features you've used, rather than to risk boring the interviewer looking for genuinely interesting passion projects.
> Regarding gauging my suitability for "cog" work: Without wanting to sound arrogant, I don't think it's really that remarkable a feat to memorise the semantics of modern enterprise tools
That is not arrogant at all. However, I think there is room for pride in enterprise projects beyond memorizing specific libs. You can be proud of turning out a solution under pressure, or solving a seemingly-intractable problem creatively, or even a technically simple solution that improved your/user's lives. One of the most high-impact things I've done in my career was to implement a CSV export feature in an afternoon, without being prompted, saving my colleagues many hours of work per week - they were delighted and I'm yet to tip that.
Interviewers are not always looking to be dazzled by technical brilliance (which is a plus), but you can show many other attributes: grit, patience, creativity, curiosity. I think your side-projects exhibit all 4 attributes, but interviewers are fallible, and it's your role to figure out which attributes are desirable for the role and weave them into your answers.
I've found the same thing. I love working on projects in my spare time, a lot of them completely pointless, but fun. I've seen the reactions you describe and it feels like talking to an alien.
I've learned as well that not everyone enjoys working on code in their spare time, or if they think they might enjoy it, they just don't have the motivation to begin. On the flip side, when I do bring up a project I'm working on and see someone's face light up and they describe something they're working on, I feel an instant connection.
Wow, they are seriously missing a beat. If someone is making useless stuff, it shows they are passionate, which is hugely valuable because people will work hard and make great code because they enjoy themselves.
Maybe I've just got lucky but here in the UK whenever my passion has bled through in an interview it's been recognised and I've got an offer.
I'm currently one of those interviewers and we always ask about fun projects like these. We do that especially since that shows that they're not doing the job only for money, but also because they're passionate about developing software.
This helps on multiple levels. For starters, if you focus on one task for too long, that may result in you having a too narrow view on that problem. While doing a fun project on the evening your mind wanders and sometimes suddenly you get an idea to approach that pesky work problem in a totally different way, even though you were thinking about something totally different.
Or when you return to your specific work task you can just look at it from a fresh perspective.
Or you get a new work-related task and suddenly think "Oh, I could just use part of my [Bobble-Head simulation] algorithm here and this could save me a few hours."
If someone says that everything you are doing has to have a specific goal other than just "for the fun of it", I wouldn't want to work with them.
Folks with a deep interest to investigate complex systems in their spare time are unusual -- curious, inventive, and driven. They seek epiphanies about how the world works and are and willing to dig deep to learn about it.
People of this type are displaying the rarest part of the 20,000 hours of practice that's most essential to achieving greatness -- they're pushing themselves to exceed their limits to explore the unknown -- to get better and see farther. And they're willing to try and fail. They're the inventors, the disruptors, the source of all creative change in the world.
I suspect most employers won't welcome that attitude. Like most people, they're happy to wear blinders to disruption in their routine (AKA new ideas / better ways). So let them hire programmers who were accountants in a former life.
If that kind of person is not you, then you're in luck. True to form, in choosing to discuss your passions, you interviewed differently. In doing that you discovered something very useful -- this is a place where you do NOT want to work. Epiphany revealed; the search continues.
You've already got a bunch of replies, still like to add something. I'm in the "I never felt anything towards coding" category. Tried to grow passion for it, just doesn't work. But I'd still be thrilled (and possibly intimidated) to see a passionate developer showing up for an interview. That these interviewers didn't get that you have passion for the work itself and not its outcome, not a great sign.
Hope you found something more fitting for your personality.
A perfect employee is someone who has all the skills necessary to build a successful company... but for some reason decided to build one for you, instead of for himself/herself.
I just want to say that I am the person that doesn't like doing anything unless it creates value. I am just wired differently. For me a useless project is a waste of time unless I'm trying to learn something new, and even then I try to find something that is going to be useful because otherwise I lose interest.
I don't know what it is. Maybe because I grew up relatively poor?
I also love programming but mostly when it solves an issue for a business. There is nothing better in the world as far as careers go. When I can make $150 an hour and create so much value for a business that they will gladly give me their money, its special.
In general I have hard time just relaxing, I prefer to do and build things around the house.
That's really tragic that people think like this. Not everything needs a "purpose", in fact many of the most beautiful things in life don't. Doing things for the intrinsic joy rather than for some end is a key to life actually imho. Those who must always do things with some future goal in mind, getting more money, power, stuff, prestige etc are missing out.
Ironically, tinkering for fun can lead to innovation. Many cases of this in maths, science and engineering.
If I'd have been interviewing you we'd have talked about those two projects a lot. Especially the OS kernel :)
I currently have two hobby projects "in development". An bot trader (it broke even over 6 months with pretend money).
And a logic analyser using a Raspberry Pi Pico board and the excellent sigrok software - this project took a baby step to being non hobby when another dev found it and raised some issues.
Kudos to you, for working on the stuff that you really like. These toy projects could teach us or the people that see them, a lot of stuff.
"Senior Developers" doesn't mean that they will relate to everything related to software development. Either, they stick to the domain they work on or, to the ones that makes money.
Personally, I've always been fascinated with systems programming, thought I'm not much proficient or put in much effort. Whether something is going to make money or not, like many personal stuff we do (art for example), isn't eventually going to make us money, rather it gives us a sense of satisfaction.
> The interviewers (senior developers within the company) really just did not get it. Responding with questions such as: "Is this going to make you any money?", and "When do you expect this to be complete?".
I would expect that to be followed by, "Just kidding! I have side projects of my own, and that's what my wife says, haha! Don't you hate that?"
Here's what I tell those who question projects like these: By designing and implementing a game engine or a compiler or a microkernel, you become the sort of person who can do those things, and you become the sort of person who can do all the things that they entail. The product is not the software but the mind that makes it.
I think your initial approach is a brilliant way to interview a company to see it they're "your kind of people". If they have no interest in creative inventions or fresh ideas, run for the hills. You'll never be happy there.
Well they were interviewing you for a job not having a chat at a meetup or at the pub. I don’t think it’s an indictment of your interests rather if you “get” the question they’re asking you
I totally understand that whether you were offered the position or not isn't the key take away of the story.... But for the sake of my own wondering, did they offer you the position?
In this case I wasn't offered a position. The company in question is well known within a certain field, and has a reputation for having a difficult recruitment process. They were offering a very competitive salary, and I was admittedly excited at the prospect of working for a company with this kind of elite reputation. This was the final stage of the interview process. I had passed the technical challenges and initial interview. In the end, I was able to walk away from this experience with my pride mostly intact.
That's funny, I had the inverse interaction of someone telling me all theh wanted to do was be useful and I just could not relate. Like you, I do it because I like it.
If you can afford choosing your employer, this is a good test. Who wants to work with people that wouldn't be enthousiastic about such cool hobby projects? :)
A lot of game developers have written a 'toy' game engine.
A lot of embedded developers have written their own little OS.
A lot of web developers have written a 'click this button to autogenerate web pages' tool.
And so on.
Face it. You are just not that hot. Another X Compiler for Y. Great. Probably doesn't really work. Senior devs probably care more about that you can finish boring project or stack. Spend hours on some tiny thing and make it work.
It probably also depends on how you present those hobby projects. Instead of saying "Look, I am so cool!", you can say you use this as a means to become a better programmer.
It's good that the leadership was more interested in your useful professional projects rather than the less useful things you make for fun. As professionals in a business they should be more focused on trying to make money. People need to have some kind of strategy to make money in order to survive in business for any extended amount of time.
Since a little less than two years, I live from a website I built, and I have a lot more control over my schedule.
Since then, I built a lot more useless stuff. I'm the only user. I can hardcode things, introduce breaking changes, manually migrate data and so on. I can cut corners, or over-engineer everything. Other people can use it, but I don't care about what they think of my variable names, or which features they want.
The turning point for me was the concept of apps as home-cooked meals [0]. If a gardener can grow flowers only he will see, I can write code only I will run.
Genuinely curious - Are you saying here that you have a blog that runs on your own code or your income comes from the project?
I only ask as if you’ve discovered a way to produce an income from coding something your own way while still having no-one else to answer to then I too would like to reach Valhalla and you must show me the way.
It's a content website with affiliate income, nothing outstanding. It worked really well, but that was just luck. I didn't expect that, and I couldn't do it twice.
Before that, I worked programming contracts, and 3-4 months of those per year would also suffice.
Given our profession, many of us could also work less and live on half their income.
I think of it as my in-house software. Most software businesses write never leave the business, with a lot of the remainder being written in a support role just to further other business needs, not to be sold (such as a bank's online banking phone app.)
But it might be even better than in-house software. I don't have to collaborate with anyone. I can observe "best practices" or not. I don't have to care about rough edges like bad error messages - I'm the programmer and user, so I know what the message means.
I'm calling it my return to hacker roots. Unix was written for hackers who cobbled together quick solutions to personal problems. I no longer feel pressure to share my creations - sometimes I think people get minimal benefit from what I share, but it's more work for me than it's usually worth. Sometimes I feel bad about "not giving back" but many people "giving back" have their own self-driven reasons, such as building their portfolio of work. I have a day job so these reasons don't exist for me.
My most useful software is my meal planning and grocery list system. I've been using it over ten years now. Occasionally I'm asked to share it but it's a very nasty personal creation. I have no desire to share it. I do need to overhaul it though.
Linus Torvalds says he uses some hacked-up abomination of a text editor because it works for him and he knows it. That's the hacker spirit.
Created an account again (lost old few weeks old one lol) just to reply in enthusiastic agreement on the utility of barebones custom software - but not so much due to the lack of public-facing maintenance and the responsibilities that lie in parallel. Frankly, my own reasons hinge on annoyance with status quo consumer-facing solutions gone boiling over.
Ex: I’ve taken to creating my own CRUD programs for iOS or likewise for shell-based Python scripts on a desktop for things from lists & reminders, tallies, to some minuscule gym data tracking, and a few memory logs.
I grow weary of bloated apps and programs built for a remarkably simple purpose but lacking just basic malleable parameters - and yet swelling in size, latency, cost. Or hell, advertisements and “social” shit haranguing me at every menu bar. What the fuck? Hell, music applications are lousy with them - as with YouTube Music or Apple Music.
So yeah, I’m all for it. My life is too short to acquiesce & tolerate the specter of proprietary watered-down stacks without reservation where I consider it desirable & plausible to do otherwise.
write to the moderators to get your account back if you can provide adequate supporting information - this is what I did only so long after I'd begun this account and only emailed to inquire in a "kick me cruel world" moment...Just try if it means something to you because definitely the administration cares about keeping the HN community swell and together
I think that when people hark to hacker roots or however you want to call the experimental unconstrained and free wheeling pursuit of intellectual satisfaction through commanding over technology, I want to shout out aloud "hackers don't ship they deliver works of art "!
I really was looking forward to reading a deeply philosophical introspective considering the poverty of creation that can result from incessant pursuits of relentlessly necessary and important objectives that you have no part in deciding on in any way regardless of the obviousness of futility or impossibility. Impossible tasks multiply most flourishingly in your nearest non tech founded startup, if you need a refresh. Meanwhile the best of us regularly encounter projects that we cannot apply any benefits of our skills and experience to help or even avert failing. To a certain degree this is commonplace, I mean, not the default mode experience of experienced professionals in tech. We definitely can relate nonetheless.
I find pointless work refreshing and it revitalises me in every way. I tend to choose painting for my pointless occupational diversions, but isn't it a definition of art to need no purpose to exist?
whilst I don't consider that comment exemplary English, and I'm inclined to rewrite or edit it, may I ask if I understand what you are saying to me, first, and if I am to take what you say literally or not?
my reason for asking is because the most common concern raised when someone's saying that they can't understand a statement or comment uses the phrase "I can't understand" in reference to a particular area of confusion or incomprehension. In this case, I would prefer to clarify the point of your concern in a postscript instead of editing the original text, since that's much better for the integrity of the discussion.
However, because omission of all mention of what's desired to be understood, in this form of inquiry so particularly diminishes the likelihood of success for your (rhetorical, implied) inquiry, or else is a omission possibly due to inattention or haste, and I have observed almost identical responses to a increasing sample of comments other than to my own from where I have been able to discern additional semantic information about the question posed, and this has been a reliable negative indicator of sincerity and a consistent indicator of positive derogatory intent on the part of the non understanding declaration, I consequently do not wish to fall into a conversational trap set up only to insult or deride anything that I have said. Indeed, since you have stated that you don't understand what I'm saying, and this can be taken to mean total incomprehension on your part, obviously simply rewriting my comment alone is not any guarantee of my being able to help you at all. Since this is something that I feel strongly about personally, I am entirely happy to completely structure my original comment anew and break it down into the constructive components and argumentative logic to convey my meaning with the maximum possible clarity.
in absolutely no way am I meaning to condescend to you or criticise your motivation or personal character in this response - absolutely the opposite : the difficulty this presents is that if eg English language comprehension is involved in a fundamental part of your reaction, then I will need to consider this and compose any renewed comment accordingly. For example this reply itself is complicated grammatically and I will restate myself in accordance with your response if any. The only reason why I write this way initially is because I want to convey the nuances of my predicament as clearly as possible to the audience in general and also for the consideration of the moderators if by any chance this is interpreted in a negative light that I haven't been able to anticipate and prevent from affecting the most broad perception of my writing which is by virtue of being a public forum necessarily and preferably my primary concern. In different circumstances but in cases of apparently identical correspondence with the same comment on my language, when I failed to appreciate the pejorative intended meaning and absence of goodwill in the statement that I replied to, it happened that the negative overtones superimposed and obscured all beyond the cursory impression of a snarky exchange and it was thought that I was engaging with a troll deliberately in order to start a cryptic flame war in the guise of semantics. I wasn't and I am not now attempting anything of the sort. But as is clear from my defensive language already, I've been caused to infer something potentially negative which effect I'm entirely certain could have been averted had you made your comment more understand, as well.
(I've worked on concurrent channel linguistic analysis since the early nineties following a successful project processing telephone sales transcripts for outcome prediction. English is far more wealthy and rich in structure than even linguists sometimes realise. Purcell's Lewd Songs are the most excellent introduction to the capabilities and subtlety of cryptic communication in the English language. Temporal dithering of phonetics in the 4 part harmonies are used for singing two simultaneously radically different song lyrics. The cryptic verses are the "Lewd" as in "and bawdy" verses.)
A problem I experienced with this is future-me is another user. So some aspects of documentation, ease of use etc became more important. Of course, that's my decision whether to support future-me or not, so is consistent with your philosophy. But it's quite difficult if I do, to know how much, and what exactly, is really needed... because, well, I can't google for it.
This. In school I was taught: “in class, you learn the lesson then you get the test. In life, you get the test then you learn the lesson.”
This parent-comment musings drive home the importance of documentation, or complete project management. You’ll feel it viscerally and whatever the experience, you’re responsible for it.
Yep. My personal projects are documented as if I had to hand them over. It's partly because I like writing documentation, and partly because I really enjoy those readmes and comments later.
I made a commandline tool that shows my APIs "from outside": what is public; do names make sense from that point of view; can you see the basic use/idea?
NB: (1) I made easy improvements it indicated, but not hard ones. (2) the tool itself is super-hacky.., partly my philosophy to impl once to understand the problem, once to solve it (because there's no point designing "the right" solution before you've encountered the whole problem - and I haven't yet.)
I really enjoyed this post, thank you so much for writing it. It made me think of a lot of "personal app" ideas I've had over the years, almost all of them orbiting around the idea of sharing something with my family friends in a more simple and straightforward way than off the shelf apps.
The biggest reason to make useless stuff instead of useful stuff is to avoid harassment. If you have something useful on GitHub then entitled users will come out of the woodwork to request features, report "bugs" (read: the user is doing something wrong), or otherwise expect free work out of you.
My biggest reason is that I don’t have to finish. When I get bored with it, I move on.
I used to put pressure on myself to “finish” and would often miss and feel guilty. Not just computer projects, but electronics, learning musical instruments, etc.
Then I realized I was making my hobbies work and doing it badly. Real work (where I have to finish) got in the way of my hobbies. Hobbies are supposed to be fun, relaxing, and rewarding. What was I doing?
I gave up the pressure and it was liberating. I pick up the guitar for a couple months, then get lost in trying to make analog circuits. I tinker in the garden then teach myself enough CAD to do a small woodworking project. I started sewing masks and tote bags then set it aside. I fish a bunch in the spring and fall. Then, I’ll revisit them later when the muse hits and don’t feel like I wasted money.
Now my only goals are to have some fun, relax, and learn something new.
I really only program for fun in languages I don’t know or platforms I haven’t played with. I learn by picking up a project that scratches an itch.
Sometimes those feed back into my work (eg Go, Kotlin), but most don’t (various LISPs, low level C).
My issues are exacerbated by my ADHD, but I would recommend the approach to anyone with a steady job they enjoy. That and not using TV/movies as a hobby. There’s just so much cool stuff to explore.
Yeah learning things is so fun, and also so is just having a bunch of weird skills you're competent or at least knowledgeable at.
I won't post my list of accumulated learnings because it's about as good a personal identifier as my SSN. But it's similarly scattered as yours and I love them all even the ones I haven't used in years.
It's really become the way I orient my life. What bizarre or useful thing I'll get into next is always the big question now.
I haven't gotten any feedback on my github stuff (which isn't quite useless, just not useful to many), but it's pretty easy to ignore feedback in general, and it's not too hard to turn off issues; not sure if you can turn off pull requests though.
That is an excellent idea. I hope I'll never have to do that (haven't had to deal with this kind of thing so far), but I'll definitely try this should an entitled user show up in the future.
This is one of the downsides of programming-as-a-art: if you create paintings you may get feedback and requests for more (or less) - but you’re unlikely to get bug reports.
Try making actual art with programming, eg demoscene or quirky twitter bots or programs that automously paint paintings, and you'll get way fewer bug reports.
I use Github all the time to find code samples, especially for 3D stuff, shaders, audio, emulation, demoscene... It's more common to find solutions to my problems in zero-star projects than in big ones.
Lots of people star my code-as-art experiments too, and from the forks I can see they find educational value in it.
Not everything in the world has to fit perfectly into some preconceived mold. Heck, in that case, the most interesting/educational things are trying to avoid that.
There's nothing to be gained by anyone by using this approach, and a lot to be lost.
Gitlab/Bitbucket are not "dumps" for projects you deem useless, and "useless" projects are not useless at all from an educational point of view. Gitlab and Bitbucket are exactly the same as Github and should have both "serious" and "useless" projects the same.
Using a personal Gitlab instance or anything similar for that is a terrible idea because it costs substantial time and money of individual developers and severely hurts discoverability.
People should put their "useless" projects wherever they want and are permitted to.
Who says I want 'discoverability', after all we are talking about useless project born of a hobby no?
Not everyone wants to have to share everything that is useless with the world especially if it's only going to be you.
I also don't want people to have to bug me for feature requests as well on top of that.
There is a reason GitHub/Lab/Bitbucket has private repos for this purpose.
You can obviously choose to share it, but you shouldn't be whining if your 'useless' hobby repository suddenly becomes the focus of attention of developers requesting more features.
I never said you wanted anything. I'm the one who wants to have 'discoverability', both for my projects and other projects that might interest me. It's you, for some unknown reason, that don't want me or anyone to have it!
> Not everyone wants to have to share everything that is useless with the world especially if it's only going to be you.
Then don't. But don't demand that of others.
> I also don't want people to have to bug me for feature requests as well on top of that.
That's perfectly acceptable, and I never implied it wasn't.
> you shouldn't be whining if your 'useless' hobby repository suddenly becomes the focus of attention of developers requesting more features
That seems to be your problem, and you're the only one in this discussion complaining about it. Looks like you're projecting your issues onto me.
Anyone who thinks github code should be polished and supported or hidden from view is going to be sorely disappointed in my island of misfit experiments, but I really couldn't care less. I didn't put it on github for fame, exposure, or resume fodder, I put it there because they host my repos for free.
I would suggest you may not be the right person to use code in these repos.
For someone like me sometimes I'm looking for a small sample of code that fits a pattern. I could careless about the project. Sometimes you need an odd piece.
Saying his code doesn't belong on github tells me you might not belong on github.
I wonder why people are so annoyed or upset by this.
If you don't want to support an arch/language/platform, etc. just say so in the readme (all arch/languages/platforms besides ____ are unsupported.
People expecting things are pretty par for the course on the internet... Just be firm and curt. Close the issues quickly and refer to them if reopened.
If individual users are being persistent and causing problems, you can ban them. But if your problem is caused by a large number of different users, each coming across the project for the first time and creating annoying issues/PRs, banning doesn't help.
Or just ignore them. Don't engage with the message either physically as in typing a response, or even just mentally. Skim and move on.
That people send unwanted messages on the internet is the most common complaint I see regarding the internet that I just cant empathise with at all. I just really dont get it. Possibly has something to do with my first couple years online involving 4chan.
Wasn't really my experience. Besides, github have tons of useful smaller projects that either don't have any issues filed by strangers or have them while author happily ignores those.You have make something pretty big to have big enough community for it to cause issues.
And if that really bothers you, you can turn off issues in github.
I would image that satisfaction I'd get from having people actually use my code would greatly outweigh the inconvenience of being pestered about new features.
I'd imagine that it is satisfying, yes. But I think you may be underestimating how little other people will value your time in asking for help using that software. I have a colleague that maintains a popular open source project, and he spends a ridiculous amount of time answering questions about problems they're having, and very often those problems don't have anything to do with the software he's written, but the competence of the questioner. I had been considering developing a package, perhaps paid for with grant money, but the long term commitment that comes with it has scared me off.
There’s definitely something uniquely satisfying about knowing that code you wrote is saving other people time or helping them create things. The beautiful thing about programming is you can solve a problem once for yourself and also end up end up solving it forever for everybody.
That's precisely the point. They aren't free to make a pull request. A pull request puts a time demand on the project owner to review and merge the patch.
What they are free to do is fork the project, and do whatever the hell they want to in the fork.
Some the comments here are disheartening. So much crass dismissal of anything not monetized. A lot of what we use on regular basis got started with simple ideas for things with limited usefulness at the time. I remember when there was much more creative energy in this industry. Obviously, tech is a major economic force now. But, that pretense of creativity and exploration is still being exploited. That's why we are funneling entire generations into coding classes, maker spaces, and youth empowering tech initiatives. They are being told, "learn to love coding. explore your dreams". Very quickly they get redirected into conformist production paths so they become tools. What a shame.
It's ironic. Where do software companies get their highly technically competent developers? Most of them don't train people, nor do they give enough time for developing deep technical skills. They rely on people who picked up most of the necessary experience prior to joining, and then maybe transferring some of their knowledge to others. But where do those original knowledgeable people gain their skills, if not at their jobs? By doing useless side projects.
> But where do those original knowledgeable people gain their skills, if not at their jobs? By doing useless side projects.
So much this.
The time you have is a finite resource, and technical expertise is a function of how you invest your time in activities that enable you to learn and grow.
More often than not, your job is not aligned with your career plan or growth path.
So how is it possible to bridge that gap? Well, through your own persona projects, projects whose goals are set by you and are not encumbered by third party requirements and don't even have to have a business model. Just coding.
Corporations want the reward of investing time in learning and exploring, but they don't want to foot the bill.
I remember when I was in college and told my friend that I just spent a sizeable (for a student) amount of money on an electric guitar and couldn't be happier.
His reply was: so, how are you planning on making that money back with it?
I had no reply to that.
There are people who, as zombie fiction for teenage audiences author Jonathan Maberry put it "think like insects" - they have but one overriding goal in life: maximize their total wealth.
This is an approach to life so foreign to me yet so often rewarded that it makes me wonder who's really happier.
One thing I know is that I hate working with such people - reading their code feels like listening to muzak - it works, but there doesn't seem to be any actual thought or design behind it. Long term it becomes unmaintainable, but that usually doesn't matter much, because projects get rewritten all the time.
Sounds like this is how he keeps his interest in coding alive and his ability to enjoy it in spite of getting paid to do it. If you only do what you get paid to do as a coder, you may grow to hate it and this can be career-ending. You could suffer burnout or just decide to quit or get fired and no one wants you anymore.
The first rule of sustainable productivity is taking care of the thing doing the producing. If that's a human, that isn't limited to physical wellbeing, especially if they are producing knowledge work.
It’s funny, my favorite useless projects have also mostly been compilers and game engines!
+1 to this mindset. I would go even further and suggest that useless projects tend to be morally superior to useful ones. A lot (not all) of the useful software out there ends up being used to make the world worse, but useless software can only ever inspire joy (in yourself and, hopefully, in others).
Personally, I got to the point where I realized that trying hard to make software that's useful can turn a side-project into something stressful, essentially a second job on top of my regular full-time job, which I just can't do, too much risk of burnout. Trying to turn something into a side-business adds a lot of constraints. You're not just playing anymore, you have to optimize everything towards the goal of making profit.
However, I still think you can enjoy working on things that are useful, to yourself and other people, and not for profit. The projects I'm the most proud of are projects I've shared that have been used and appreciated by many users online. You just have to keep the project small and simple, and keep your expectations low.
Agree. Something else: Useless software is also very educational.
I'm also into compilers and engines. I learned 3d programming by looking at small projects online. The "worse" the code, the easier to learn. If I had tried to follow the Unreal/Unity/Godot codebase I'd still be at the intro screen.
> useless projects tend to be morally superior to useful ones
people have claimed that crypto mining is useless too - but a lot of people also claim that crypto mining is morally wrong since it consumes vast amounts of electricity for "no reason".
I think there's no such thing as morally superior, and a project is never useless to any and everyone. A "useless" project is taken to mean useless to everyone else but the author (since it inspires joy - which makes it not useless).
So in other words, a project that's only useful for yourself is morally superior. However, that's just another way to describe selfishness. So by the transitive property, being selfish must be morally superior!
A lot of people who insist on building only stuff they can sell have very little business sense. They rarely seem to know if what they're building has any real chance of making money. As a result, they end up building a lot of stuff that's both useless and boring.
Love the OP's attitude. It's perfect for anyone looking to explore computing as a medium.
The HN comments they quote (shipping for customers, and avoiding pointless homework) come from a very different perspective -- where the medium being explored is not computing, but rather the process of satisfying specific human needs in the context of a "market".
Both have their own value; it's just that they're completely orthogonal in intent and worth not conflating.
It's not that I would recommend every project must have customers, but I do think that most programmers will learn & grow tremendously if they take on a project where they are trying to directly satisfy a set of customers. It came to mind because whilst there's a tendency to focus on projects that are technically challenging or interesting, I think such a project would perhaps prove even more challenging, albeit in very different ways.
The number one reason at this point in my life (44 years old, fulltime programmer) that I tend to not have any side projects at all is my absolute disdain for physically being tethered to a computer.
After a full week of staring at a screen and sitting too much (I alternate between standing/sitting desks all day) and typing, the last thing in the world that I want to do is more of that. Which is unfortunate, because there are numerous fun programming projects that I'm itching to do.
So I play music and make elaborate chalk art with my kid and garden and ride my bike like a madman. And I suspect that I'm better for it. (Though I'd probably be better at my day job if I were doing those side projects.)
I realized at some point, that I would actually love coding, if it could be physicalized. Like the games Factorio or Satisfactorio. Give me VR/AR and a 3D programming language and I'd get willfully lost for days.
But sitting or standing for hours and hours in front of a screen, I'm starting to resent it. This goes so far that I started thinking about building a backpack with an extendable arm to hold my laptop in front of me. Still 2D and physically moving doesn't add to the programming task, but at least I could move while working.
> I realized at some point, that I would actually love coding, if it could be physicalized. Like the games Factorio or Satisfactorio. Give me VR/AR and a 3D programming language and I'd get willfully lost for days.
I have thought about that a lot, so much of software is ephemeral, and I find I can never talk to anyone in the real world about it making it feel even more ephemeral.
I don't intend to retrain exactly as I do love software, but I have been trying to work with software that interacts with the real world more often, and I have been adding lots of hands on skills to my skill collection.
Working in robotics or automation could potentially be a decent blend of software and the real-world that still has career prospects, and if anyone has any suggestions on more hands-on software industries I would love to hear them.
Almost glad I'm not the only one who feels like this.
I always wonder how and why people feel differently. It is obvious, that a good chunk of programmers have no problem being passionate about completely abstract problems. I've also seen some of those programmers talk about having a mental map of the program, which they can manipulate inside their mind. Is that the difference? I don't have this mental map for code, therefore I crave a 3D representation through other means?
Let's call it the ability to physicalize mental models inside your head. I've also heard mathematicians talking about this ability. And personally, I'm way better at math that can be visualized (geometry, trigonometry, calculus and so on). Respectively, I only start to get math that can be visualized and it's my preferred way of thinking about math, not the manipulation of symbols.
Well, I'm rambling. Good luck finding a more hands on software job!
I am in the same place. I am 46 vs 44 and run vs bike but otherwise we're twins. In the past, I'd get excited to know I had a free block of hours to sit and explore new tech or work on a new project. Now, with the same free block of time I'm itching to go explore some new trails.
47yo runner checking in. I'd rather do just about anything outside than touch a computer on my time off. Admittedly, it is a complete 180 from when I was younger.
I've been building a useless app in my free time, an hour here or there, for the last 2 months. Then last week at work, I got a chance to contribute to a project that happened to use the same stack. It was random luck. And the useless project prepared me for the useful one that pays me a salary.
I think the flip side of this is that, for most of us, it's very hard to learn new and interesting stuff in our paid software engineering roles. Day to day tends to be dominated by maintaining code you didn't write, dealing with business concerns, or greasing the tiny wheels in the big machine that your team covers.
I came to the same conclusion over the time. Mainly because I figured out:
When you want to build stuff for profit, coding is an afterthought. There are so many tasks necessary that involve zero coding. You essentially become your own product manager that needs to talk to (potential) customers, completely reevaluate your value proposition, do marketing sales. The more time you spend on coding, the higher the chance your assumptions about what people want are wrong.
If you want to spend 100% coding I would argue that's impossible to make profitably.
> And if those aren't enough, I have several more useless projects planned! I can't wait to get started on them:
I feel like this is such a key technique for maintaining momentum with your personal projects -- always keep a list of things you want to work on next. I'll often find myself day-dreaming about the next thing on my list while I'm still tinkering away on my current project. After I realized how important this was for myself, I started noticing other people doing it too; apparently whenever Bob Dylan had an idea, he'd write it down and put it in a box. When it came time to create, he'd open the box.
I didn't know anything about compilers, but I figured out how to compile Piet programs, so I wrote a compiler[1]. The project has stalled out for (a) lack of free time and (b) some silly ambitions, but I don't care what the public thinks about my lack of updates, and that's great. In the meantime, I've been going down weird rabbit holes and learning aspects of computing that I missed in school.
I build a lot of "useless" stuff too. Where by useless I mean useful to me, but isn't ever going to have customers.
A. Educational value is a thing. Not everything needs to be a business with customers. Not every project needs to make money. Many of my projects teach me something about science, tech, or arts.
B. Fun is a thing. Building stuff is a way to enjoy life for me, similar to spending time on the beach.
Oh I just called them "useless" in mockery of the HN sense of the word, i.e. in the same sense of the word that TFA speaks of: not being able to scale it into a unicorn startup with customers.
But yes, they are useful to me as art, as educational projects, as fun, etc.
There is a lot of sentiment on HN about how you should be making a side business or selling your own stuff or being your own boss or getting your first 100 paying customers or your $xxxxx MRR or whatever.
That is all fine, but I think that line of thought can be a little bit toxic at times: you don't have to be continually hustling for the next dollar all the time - it is ok to do stuff simply for the joy of it.
I disagree with this. Sure, hackers get excited at people posting business/financial success stories, but a big chunk of HN gets super excited about hacks that are smart but have no economic viability.
This comes in stark contrast to the IndieHackers/ProductHunt/Twitter builder communities, who are all about making revenue and not about tinkering and doing cool hacks.
I love making tiny projects for fun and not for profit, using tools I enjoy working with and not tools I would need to scale to a trillion users, trying ideas I like and not ideas I can monetize. I almost forgot why I enjoyed coding.
The usefulness question is the a poison to discovery.
How many things we use in our daily life would have survived the first peer review for usefulness?
The printing press? Makes no sense, use scribes. The public cant even read.
The internet? Why would people use a computer to communicate and share data? Its super slow, just send a magnetic drive or even better, copy the images on paper.
Solar power? We have coal, oil, nuclear, that stuff has no future.
If something is not useful, in dubio assume, that it is, but you just are not capable of seeing the use or the market it will create.
I mean, your point is a good one but those are bad examples.
The printing press was made to print bibles in bulk.
The internet was made by the DOD and universities, not to transfer large files/images but for small text documents.
Solar came from LEDs which were discovered by accident by scientists working on other semiconductors (trying to find something useful), but to your credit probably explored because it was interesting. 99% of the work done on solar now is to do something useful.
It isn't useless by any stretch, it is non-Commericial, it is playful, experimental. I understand the sentiment and the terminology, not challenging it, but being silly and playful should be just as valid as making a your next open source side hustle.
Once things start getting _serious_ for some definition, a whole other cloud rolls in. There is now a right way to do things, but how do we know this is the right way. How do the boundaries get pushed? Much of the time, best practices is a signaling phrase to have an in group and an out group.
Things like esolangs give one cover to be playful. For example if you try metaprogramming in Python, you will be called out as unpythonic. If you create classes in Python with public member variables, you will be ridiculed.
Go write books, programs, plays, scripts, go do sports, go do drugs (responsibly), go drink, go play board games or online games, just do it. It's your life, your body and your decisions.
This is something I try to be careful of. Programming takes time, which is an opportunity cost as we get older. If I was well off, I would love to relax my mind on projects not going anywhere.
However until that point, I try to do something that I feel has some value (or hope will one day).
That said, I do agree with the general premise that work is where we spend to make money and we should relax in our spare time. The criteria for me is that I should enjoy what I’m doing and it should have some small chance of success. But as long as I enjoy it, then I’ll be okay. Better to do a project with 2% chance of success that I enjoy than one of 50% chance of success that I feel like a chore. Life’s too short.
However I would not be able to actively do a project with zero chance of any value (learning can be achieved through many ways, so I don’t count that as value on the outset, only as justification for the time spent afterwards). I rather go for a walk then. There are only a few hours a day where I have the energy to code, it’s too precious to waste.
(ps sorry for the over use of first person - just wanted to share my perspective)
It becomes (or at least implies) too much anecdotal, which is not ideal for a unopinonated discussion.
Excessive use of first person imo is a good flag that the writer is too self concerned (egotistical), which can interfere with their judgement (as it’s affected by ego and not a cold, rational look at both sides). Which I’m guilty of from time to time.
I realized that as I was halfway through, but it was too late in the night so I just pressed reply :)
I think the important thing is that considering a project useless frees one of any obligation to think about its usefulness. It might not be useless but its value might come from not trying to be useful.
Which is probably what you meant anyway, but I think "useless" means two different things here.
This is exactly why I hate the expansive IP contracts I've had to sign with my employer. It effectively requires me to ask permission for publishing these useless weekend stuff, robbing me of the joy.
I just cross those bits out - I'm just writing a crud app for you - and you want to own everything I think - yah, na, happy to sign over copyright for the code I write for you (literally the conversation I had for my last contract). If they say no, oh well.
I must say that I also relate with the author and would add that making things just for fun or your own curiosity or even need, can be beneficial to others too, directly or indirectly. With every toy project, new skills are acquired. Useful or not, you cannot now at the time, but I can say that if I did not make toy projects, I would not have jobs that I had and some of the projects that others also find useful, like https://newreleases.io, would not exist.
Most of the projects I do for fun is either project I know customers are working on, or stuff we already have at work. This gives me a goal, and gives me a sense of how hard the problem actually is. If it does work out, no one care, the thing already exists.
I also have a project I normally use when attempting to learn a new language. It involves naked women and copyright violations, but it get’s me around most aspects of a language and gives me a sense of how complete a language and its eco-system it.
> It involves naked women and copyright violations, but it get’s me around most aspects of a language and gives me a sense of how complete a language and its eco-system it.
You can't just leave us hanging like that. What's the project?
One of the Danish newspaper have a page 9 girl (like the UK page 3 girl). One of the magazines have a "girl of the week" (they also have a male version if that's more your thing).
For my learning project, for the last four language I looked at, my code grabs the latest "page 9" girl every day, and builds up an archive. Because Denmark is a small country, the girls in the newspaper will frequently have appeared in the magazine at some point, to it checks their archive and try to build up a merged archive.
It's a neat little project for learning, because you need to do at least: http requests, regex, database integration, an web application (to browse the archive), scheduling and how to use modules/package/third-party libraries. Later iterations also adds a REST api, so I can use the project to learn how to write JavaScript application.
Over the years ive found myself with my "hobby art-ware" between two seats: programmers/engineers that, contrary to my expectation, dont see the value and ask questions like "is it on product hunt?" And the other camp being my artist friends who ask: "what do you wanna say with this, what is the concept"
I finally have found piece in my "stuff" being a product of my intuitive curiosity and therefore not bound by the same laws of explanation :-)
I talked to someone who just finished their CS degree. He said "The school had all the rights for the graduation work, so I made sure it was a useless as possible"
My own guesswork answer: a 'useless project' necessarily combines a personal interest with the total absence of external obligations. Productive work sometimes has the former property, but rarely has the latter.
A successful useful unpaid project might feel like an obligation, if there are users and a community around it.
Note: does not apply to Fabrice Bellard, with his remarkable talent for building incredibly useful software on a whim, on his own, in secret (at least initially).
Making useless stuff is nice if you and everyone else knows that it's useless and you can optimize the activity for maximum learning.
I hate making useless stuff when everyone else believes that it's useful. Then the work is usually tedious, repetitive, stressful and frustrating. There is 0 satisfaction. You just want to waste as much time as possible to maximize your hours/income.
I think toy projects are a great exercise to innovate your conventional way to write code.
For example you can't necessarily improve if you can't simply how you write. Readability is essential in code. So practice makes perfect and writing for profit often requires redundancy which does neither the programmer or the customer any good.
Before I decided to pursue my CS degree and write software for a living, I was afraid that getting stressed from university/work would make me hate programming. One of the reasons that kept me going was because I still try to find the time to make stuff like this. It reminds me how programming can be fun.
That's why Factorio is such fun and addictive crack for programmers: it's 100% useless stuff! There are no stake holders screaming for features. No QA nit picking and submitting bugs against your unique artistic self-expressions. No customers canceling their subscriptions because they don't like the coal smoke belching megafactory bitcoin mine you just built in their back yard. You can do whatever you fucking well please, for as long as you want, and don't have to answer to anyone. The only existing life in the universe is you and the bugs. And you can disable the bugs if you like! What other programming environment has a "disable bugs" feature that works?
Now I am retired and have chronic fatigue where interaction with others exhausts me, programming without any pressure is a great way to settle my brain. Probably not for everyone, but having been coding for nearly 50 years it's what I am made of!
If I were interviewing for candidates, I'd definitely ask for their "useless stuffs".
Sure, being able to develop and maintain whatever you need for your company is important, but sometimes you don't have much degree to employ your creativity.
I once tried to setup isomorphic Haskell webapp (haskell on both server and client) and i learnt a bunch of things. The result is useless, not practical but their knowledge is practical, and it's what matters to me, not the result.
I think I’m somewhere in between. I like thinking about (and sometimes building) things that are possibly useful, but difficult or painful to monetize. Kind of an academic approach where I don’t need to grovel for funding.
> I’ve always pursued my interests without much regard for final value or value to the world ... I’ve spent lots of time on totally useless things. - Claude Shannon [1]
He is known for a large number of playful side projects.
I'm far from starting any personal project at all during my Saturdays but I do have a useless stuff fascination.
I'm often wondering myself why I watch so many videos about people fixing or modding old Amiga and 68k computers. Those computers are bare and raw compared with what we have today. However I find those fascinating. I wonder what is like to write programs in these machines.
Obviously it's not useless. I'd say it's super important even, because it fosters a culture beyond the dominant capitalist culture of consumption for the sake of consumption which seems to eat away at every facet of living leaving complete emptiness of meaning in its wake. This is fundamentally what 20th century capitalist critique is all about and IMO a big reason why contemporary art practice is all about critical theory
My philosophy is, as long as you are financially independent, you earned your right to work on useless projects. If not focus your energy on making a recurring source of income which generates money even if you end up in hospital for 1 year.
My philosophy is that it is harsh to treat it as a luxury that should be limited to those who achieve financial independence, because most people won't achieve that independence no matter how hard they try (or if they do they will be rather old, i.e. retired), but the need for creative leisure and self-expression throughout life is strong in a lot of people.
I agree. My comment was mostly from the perspective of a software engineer. I have not achieved financial independence. Is no where close at the moment. But still the philosophy remains. I don't think it's that hard to achieve financial independence especially if you are a software engineer. So giving up even before trying is not the most optimimum decision I think.
There seems to be a critical role of consequence-free exploration (or at least consequence-reduced) in creativity.
Richard Feynman's commentary on being burned out and playing with ideas of spinning plates, which culminated in his Nobel Prize award, comes to mind. Recently featured on HN (and something of a perennial favourite): https://news.ycombinator.com/item?id=26931359
You'll find similar observations regarding corporate research and development. See David Hounshell's work on R&D at DuPont: Science and Corporate Strategy: Du Pont R&D 1902-1980, originally published in the 1980s.
Similar stories exist for AT&T's Bell Labs, Xerox PARC, IBM Research, and even Ford Motor Company's research division. In the case of the latter, Henry Ford (in)famously gave his engineers significant discretion, but somewhat-less-than-optimal equipment, the latter apparently a spur to creativity in order to overcome limitations.
Geoffrey West has discussed this regarding the Santa Fe Institute, I believe in the Q&A of this presentation: https://youtube.com/watch?v=w-8sbSPf4ko (At 1:09:00)
West quotes the late Max Perutz's guidelines for organizing research, in full:
Impishly, whenever he was asked whether there are simple guidelines along which to organise research so that it will be highly creative, he would say: no politics, no committees, no reports, no referees, no interviews; just gifted, highly motivated people picked by a few men of good judgment. Certainly not the way research is usually run in our fuzzy democracy but, from a man of great gifts and of extremely good judgment, such a reply is not elitist. It is simply to be expected, for Max had practised it and shown that this recipe is right for those who, in science, want to beat the world by getting the best in the world to beat a path to their door.
As an anti-creative environment, the most effective obstruction is to ensure that everything is not only consequential, but a path to failure. This tends to emerge in oppressive and excessively bureaucratic environments. John Cleese outlines the general parameters toward the end of this presentation: https://youtube.com/watch?v=Pb5oIIPO62g
The start-up world seems to me to increasingly exemplify the high-consequence, no-win environment.
The main takeaway from the article is an old one: play and learning are very closely related and perhaps our instincts for play have been honed by the evolutionary benefits of that relationship.
I ended up pivoting to discuss some comparatively banal professional project migrating a mid-sized financial product to a new tech-stack, which managed to captivate their attention. I found this experience extremely disheartening, however important a lesson it was to learn. I don't think it's changed my outlook in any way though, admittedly. I still work on the same kinds of projects, and I still think the best developers are the ones who do work on toy projects for their own enjoyment.