I've always thought of myself as a struggling artist and musician first, code being one of many avenues to express myself, and also to pay the bills until I got into more managerial roles, and now I get to use it more creatively or in pursuit of creative endeavors rather than during work time, and it is incredibly liberating.
I've found that just writing code only takes me so far, I need to share as well to feel good about it. But sharing anything outside of the ordinary with the world means painting a pretty big target on your back. On the positive side, it also opens up an avenue for getting paid.
My point is that if you start with the fun and let it grow from there, and you're willing to go through the discomfort of sharing, it doesn't have to be either or.
I wish to share, but not to helicopter parent. I've long felt this case ill served, from 1995 Perl CPAN's "you own the package name" (vs author-packagename-version triples), to 2025 github's impoverished support for communities of forks. No "past me wrote this; present me frees it to jam; future me isn't involved - play well together, and maybe someday I'll listen in or drop by". The emphasis has been on human ownership/control of code, and of limited human collaboration, rather than on code getting out there, building friendships and communities, having fun and flourishing with the humans.
That's only with GitHub. There are other platforms, obviously less popular, which don't take that approach.
Heck, most of the "real" free software world (the one building entire operating systems, desktop environments, programming languages, games... other than Linus with Linux) operate in that manner.
I am always perplexed when people ask me about my GitHub account for my opensource contributions: I point them at whatever the latest incarnation of ohloh (OpenHub) is where they can find thousands of my commits over hundreds of projects.
Any platforms emphasizing rendezvous? Like... Let me know whenever someone on my <fun people list> commits a new project, or is looking for help. Any meet-and-hacks later today, anywhere on the planet, which welcome virtuals? Happy to do 20 minutes of pair programming now - you know my profile - is anyone around? Text me whenever a flash-mob hackathon gets going. Notify me whenever code, any language, seeks help with <expertise domain>. Using my profile-3, find me a couple of candidate tickets for later. ... Sort of AI-facilitated social networking for humans and code.
I used to think the same thing, that sharing was caring. Now, for me, I would rather share with non-coders. So now everything is communicated as a product summary, not a coding project.
>No one likes schleps, but hackers especially dislike them. Most hackers who start startups wish they could do it by just writing some clever software, putting it on a server somewhere, and watching the money roll in—without ever having to talk to users, or negotiate with other companies, or deal with other people's broken code. Maybe that's possible, but I haven't seen it.
>One of the many things we do at Y Combinator is teach hackers about the inevitability of schleps. No, you can't start a startup by just writing code. I remember going through this realization myself. There was a point in 1995 when I was still trying to convince myself I could start a company by just writing code. But I soon learned from experience that schleps are not merely inevitable, but pretty much what business consists of. A company is defined by the schleps it will undertake.
>The most striking example I know of schlep blindness is Stripe, or rather Stripe's idea. For over a decade, every hacker who'd ever had to process payments online knew how painful the experience was.
A lot of why people didn't build Stripe before was that to enter the payments space you needed connections to get the banks and payment processors to work with you. In comparison, you don't need anyone's permission to make uber for dry cleaners or something in line with other trends of the time. I doubt the Collison brothers would have been as successful getting Stripe off the ground if it had been their first company.
Working at a start-up now and seeing how many partnerships are solely due to connections of the CEO or a random board member is crushing. The tech side is an entirely and relatively easily solvable problem in comparison to the rest.
Has always been, there are a few cases where this wasn't true but odds are any industry you want to "enter" needs someone with connections to open the doors for you.
Tech is a problem that needs solving but it isn't the biggest problem to be solved, having a network and knowing people is more than half the job.
Those connections didn't materialize out of thin air, you know. Your CEO/random board member had to meet people, understand what they do, keep those connections alive, etc.
Why can't you do the same? Start now and in five years you'll be a lot more connected than you are at this moment. This is also an entirely solvable problem.
Set a reminder for 10 years from now. Let's see how many incredible new tech products have been built. My guess is that ~any judge will decide that it turned out there were a lot of things still to be built
Banking is both deeply entrenched and well regulated. I suppose people could make a venmo/PayPal/cash app payment system but dealing with cards would be more difficult
yeah. I worked on the internal banking connection at Square in the old days (~2011) and it was a _nightmare_. like, pre-TCP/IP connectivity that depended on dedicated copper to do teletype in COBOL-style fixed length fields in a cryptic format that was only specified in scans of paper documents. We had to write an adaptor that looked like, you know, REST on one end but then shoveled all of the traffic onto that single upstream connection, and then had to try to map responses that came back out of order to the right client. Miserable stuff and a threading nightmare.
This is hardly the point, but pg's use of schlep is jarring: it's primarily a verb ("to schlep"), but the noun form almost uniformly requires an article ("the schlep").
"No one likes schleps" should be "no one likes to schlep."
Love it, perfect length and cadence for a blog post (imho). Stayed focused on personal perspective / experience. Perfect minimally distracting amount of CSS. Perfect skimmability that drew me in to read in more detail. And a perfect conclusion that I just happen to agree with.
Outside of professional software jobs, for me code is also a form of personal expression. I code for work. But I also code for fun. Although there is some overlap in the experience between the two, the two forms of coding are wildly different.
I probably don't need to explain much about coding at work. It's not just about "writing code". It's about software engineering. It's a responsibility that requires professionalism, discipline, and care. The real focus isn't the code itself. The focus is first and foremost on the business problems. Good code, good algorithms, and solid engineering practices are simply means to an end in solving those problems effectively.
But in my free time, coding is something else entirely. It's a form of art and expressing myself. It all started with IBM PC Logo and GW-BASIC, where writing code to draw patterns on the screen was my way of creating art. While some kids painted with brushes and watercolours, I painted with code and CGA colours.
Coding in my leisure time is a way for me to create, explore, and express my silly ideas without the constraints of business requirements or deadlines. It's where I get to experiment, play, and bring ideas, no matter how trivial or pointless, to life purely for the joy of it. Occasionally, these small experiments evolve into something I'm comfortable sharing online. That's when I write up a README.md, add a LICENSE.md, commit the code to my repo, and push it to GitHub or Codeberg to share with others hoping fellow like-minded individuals might find joy or utility in these experiments.
Fortunately, I've been able to release a few projects that have gathered small communities of users. For example, my last such project was https://susam.net/myrgb.html which, as far as I can tell, has got about 50 to 60 daily users. It's a small number but it's not nothing. While coding for leisure has always been enjoyable, the presence of these small communities has also been quite motivating.
I think it is possible to do both with some luck. While coding for work happens almost everyday by necessity, I think coding for leisure can also happen along with it, provided other circumstances of life don't get in the way. If circumstances allow, it is certainly possible. It doesn't have to happen everyday. I know everyone has got responsibilities in their lives. I've got too. But it can happen once in a while, when a spark of inspiration strikes. For me, it usually happens on some weekends when I get an itch to explore an idea, something I feel compelled to implement and see through.
I've actually been thinking about this a bunch the last couple of months and it's a truly painful dilemna!
At a high level, for those of us who code outside of work, we're constantly faced with the choice of either working on something that we find interesting vs. something that would further our careers. It's awesome when they align, but it can be painful when they don't.
I sometimes feel guilty when I choose to work on passion projects... but if I instead choose work on professional development, I feel like my creative soul starts to wither a bit.
If you have issues with having proper material compensation for your work, you will have to work on those first before anything else.
Doing necessary work, even when you don't like is for me the definition of "work". You should also learn to manage it, if you work too much, you should take a break.
You don't need to get rich as "billionaire", but if you are good at your work it is reasonable that you will get "millionaire", because you gave society tens of times more value that what you got.
That is not something to be ashamed of. If you got the money gambling(taking it from someone else) you can feel ashamed, but not if you made money generating wealth with effort and work.
Am I the only coder who has never really felt the desire to "be my own boss" and get rich from coding?
I was so against the idea, actually, that I avoided majoring in CS because I didn't want to ruin my favorite hobby by doing it professionally.
It wasn't until a few years after I graduated with my philosophy degree and couldn't find a career that I decided to try writing code for a living.
It's been great for me for almost 20 years now, and thankfully I still love to code for fun even though I do it all day professionally, but I have not felt the pull to try to form my own startup and try to get rich.
My favorite part of coding is having a problem and then figuring out how to solve it with the tools I have. I love working as a programmer because that is what I do all day, and someone pays me really good money to do it.
And I don't have to worry about all the other stuff like business models or funding or getting customers or talking to people, I just get a problem and do my favorite thing to solve it.
And I have more time to do other things because I am not hustling or trying to get rich.
I'm the same, I started coding as a kid on an Amiga 500. But I never thought it would become my job. I studied a degree in communication and worked as a journalist first, then as a press agent. Later I decided to move to a different country where I could not work in PR or journalism due to language barriers so I went back to programming. Eventually I even went back to Uni and got a degree in IT because I felt that I had some knowledge gaps due to being self-taught. Going back to uni in my mid 30s was actually a cool experience (despite the fact that I had to study & work at the same time).
I like programming for my friends. The moment money gets involved it goes to shit. Idea guys want you to program for free , and offer you something like 1% vested over 5 years.
They have you sign NDAs before you start working. The ideas are all really really stupid.
I do have my ideas, but I’m also humble enough to just accept I’ll probably never make any real money. I self taught my way straight to 6 figures ( back in 2016 when that still meant something). That’s enough really…
Yeah, I don't want to code for equity, either. I just want to code for a flat paycheck, with maybe an equity bonus. I have been able to do this for 18 years now.
First thing for wannabe enterpreneurs to learn is that allmost all your ideas are shit, and those that are good still need a lot of luck and the best execution to get somewhere. How many good ideas didn't work for first startups that came with it, but worked for someone else years later?
I'm fine with building out stupid ideas, for one of two reasons.
One, we've been friends for a minimum of 5 years and I sincerely like you as a person.
Two, you pay me.
At least twice I've had situations where I basically need someone at a bar or something and within a week they're sending me a bunch of specs to program out something that will require a small team to do properly. Then when you do hack out a small prototype it's not good enough.
At this point in my life, I'd rather work on my own solo projects if anything. I'll release the code MIT and if someone smarter than me wants to make money off it they can
I'm there with you. So many times I have heard this, what a great opportunity for me: build another guys (I have met 5 minutes ago) idea. It's simple, just a clone of (youtube|twitter|foursquare|...) with a little twist. It will certainly make me rich, because I can have a small fraction share of the project. Salary? No, that's for losers. We are going to make it big.
Even then, if you want to at least cut me in as an equal partner I think I'd be more inclined to build out your project. But that's not what I get, I get you and your other partners keep 97% of it, and at most I'll get 2% to 3% for building the whole thing.
Speaking only for myself, I never wanted to be rich. It would have been nice to have the money, but I never wanted to make the sacrifices necessary.
I also didn't want to be used by some predator, to make them rich. I found a [less-than-perfect, but OK] company to work for, that had values I liked, and stayed there, for a long time. I got to hang with the really cool kids. I mean the ones that were so cool, no one knew who they were, because they didn't care about being cool. They just liked doing what they were doing, and they were the best at it.
I was the dumbest kid in the room, and I'm smarter than the average bear. I also got to play with some very cool toys.
But I was a manager, for most of that time, and I didn't want to give up coding. I didn't have a "shower clause" in my employment contract, so I spent a great deal of my extracurricular time, doing open-source stuff. I had an organization that could use my skills, so I worked with them.
Eventually, the cool ride was over (after almost 27 years), and I found myself ready to roll up my sleeves, and help make someone else rich.
But no one wanted me, so I was forced to retire, and I've never been happier.
I was just talking about this, yesterday, to a friend of mine, who sold his company, and is getting set to become a Man of Leisure. He's like me. He needs something to do, and I suspect that he'll do something cool.
I mentioned how upset I was, when I figured out that no one wanted me, but, after a year or so of following my own muse, I realized that I had been working at a state of chronic, low-grade misery, for over 30 years. I probably work harder now, than I ever did, drawing a salary, and I absolutely love it. This is what I've been working on, for the last month or so[0]. Still have a ways to go, but it's coming along great, and I've been learning a lot.
Here's a post that I wrote, some time ago, about how I like to approach things[1].
But only if you get incredibly lucky. Even in the Bay Area where many an employee became a millionaire the chance of that being you is still a single digit percentage.
I never thought that I would "be my own boss" after making the moves needed to go beyond just being a hobbyist, but I was quickly shown that I'm essentially unemployable.
It's been 2 years, and I can proudly say that i'm finally making more money than I did delivering packages on a bicycle in SF, which isn't much.
Getting rich was never in the cards for me, but not having to answer to a tyrannical boss every day is definitely a positive. Coming from a blue-collar background, that's pretty much the norm, and that sentiment has stuck with me.
I think a mindset to "get rich" or even worse "get rich quickly" is reallt bad for everyone even outside tech. There is certain amount of wealth you need so you need not to worry about food, shelter, kids, education, health, etc, that's all right, but beyond that it's just getting destructive. When do you feel "rich enough" already? $1M? $100M? If you don't worry about getting rich and just be ok with being mid-class, you can code whatever you like. Even without getting single dime from the hobby code you will learn a lot, you will get good with tools and quick to find solutions, easier to be employed and progress in your career. And I would believe happier in the long run.
As I get older I find myself embracing the angel more and more. I've met a lot of programmers that got what the devil was offering by only listening to the angel.
Honestly, the text looks like it was written by someone who does not understand hobbyist programming.
It's not fun. The activity is not an enjoyable act of entertainment. It's stressful, time consuming and miserable.
The result is what matters. You did something. Learned something. For you, not because it was in some work planning. It provides catharsis.
That sort of catharsis does not exist in some work related environment. It never will, unless stars align magically, which they almost never do.
I am highly skeptic of this "code is fun" perspective. Always was.
That's why "all your base belong to us" kind of contracts in which stuff made outside work COULD become property of the hiring company makes otherwise happy developers into depressive under-productive nightmares. Let them code the toy thing unharmed in their spare time, for fucks sake.
Let it be the real thing. Stop this nonsense fairytale.
It is for your own good. It prevents companies from hiring con men, it prevents young folk from being drawn to a career they will despise, it prevents massive loss of investment.
I wanted to code for catharsis. To learn. To feel I made something. Wanted, past tense. These "code for fun" people were serious contributors to my burnout.
> Honestly, the text looks like it was written by someone who does not understand hobbyist programming.
I don't think that at all. I think he just has a different perspective on it than you do. Whilst your perspective is valid, some people actually do enjoy the work of coding, especially if they can do so in an environment where they can immediately check intermediate results and use those to shape their coding trajectory as they work, creating a tight OODA loop. (Hi, Lisp!)
> That's why "all your base belong to us" kind of contracts in which stuff made outside work COULD become property of the hiring company makes otherwise happy developers into depressive under-productive nightmares. Let them code the toy thing unharmed in their spare time, for fucks sake.
> Let it be the real thing. Stop this nonsense fairytale.
On this we can agree. I think that for programming to be fun it has to be something you want to see come into fruition, i.e., not any random thing someone else wants to see, done to their schedule by their rules. Good tech companies -- game studios in the 90s, Google in the early days, even Microsoft in the early days -- knew how to make the golden goose as comfortable as possible while slipping out the back with the eggs.
But in the late 90s, Jim McCarthy's "Beware of a guy in a room" became iron gospel among management types, who interpreted it as meaning that developers must be subjected to a panopticon in which what they are doing at all times is tracked and analyzed by the chain of command going up to the C level. Hence Scrum, SAFe, and all that malarkey, and we've forgotten how to "let 'em cook" as the kids say now.
I was fine doing some hours of planned teamwork. As long as I had some time to work on things I want. Spare non paid time.
For those things I want to program on that spare time, I don't want anyone snooping around to collect anything. I realize I don't want anyone encouraging, questioning, giving advice, talking about it.
The problem is much deeper. As I mentioned, this "code for fun" people had a prominent role in my burning out. They act as catharsis blockers as much as scrum people.
It makes no sense to try anything anymore. There could be a con man happy supporter just around the corner waiting to "collect the egg for free". I will rather let them starve.
Maybe this is exactly what the profession needs. A mass strike of some sort. Not for higher pay, but for better work conditions. It probably won't happen in my time.
Coding is another tool, just the same way you buy a piece of furniture online you can also build it yourself, if you have the tools and skills. It's up to you how you want to use your resources (time and money).
Coding is a tool to solve data problems, I've been doing it for close to two decades now and I still find it fulfilling and fun. Many years ago I used to think, I love my job that I would do my job for free ... I was wrong! Others will paid for doing things you find fun, make sure you know your worth.
I understand your point, and I don't disagree with it as a matter of utility. It just doesn't capture all of what code is.
I find computer systems beautiful. A system of parts interacting in a complex dance to process data. Each part effortlessly modifyable and reusable, executable by the generic machine people already own.
I love the puzzle of putting data together, of shaping it in main memory, and the joy of finding that previous shaping makes the current problem easier. The joy of finding a hidden algebra or transitivity.
All of these things go beyond the "tool" view of software and touches the "art" view. A painter doesn't find the painting useful, they find it beautiful.
I would be writing software, even if I want paid. I would however be working on vastly different software, and I think that's the OP's point.
Maybe to you. For some of us, it's also a form of self-expression, a hobby or a lifestyle.
In my experience coding for money and coding for fun is a very different experience. I know my worth, but I am also free to do whatever I want out of my working hours.
I have no idea why they mention coding. It is the same in any kind of job. You can bake cakes for fun, make music for fun, write poems, novels, play chess for fun, practice sports, grow potatos ...
At a certain stage, you realize that in order to be able to do only that job, you must make someone pay you for it. You must do it in a way (or in a volume) which makes others happy. The fact that it makes you happy is not enough anymore.
I don't think there is an angel and a devil. It is still the same thing. If you like the result of your work, there is a high chance that others will like it. You don't need to change what you do by a 100%. Changing it by 5% - 10% is often enough.
I think it's more common because one doing only coding can get paid reasonably. On the contrary, few people who "bake cakes for fun, make music for fun, write poems, novels, play chess for fun, practice sports, grow potatos" can get paid enough for a living, so that's usually not an option to consider. (Which is the reason that I find us coding people very lucky.)
If you happen to work for a company that's big enough to pay reasonably. And even that is still a very temporary accident of times.
There was a time with plenty (comparatively to today) of tailors, living very reasonably, because there was a demand, and the means.
Today, you're lucky if you manage to find one that's in your city, and even more if he/she's not too expensive (that is, compared to ready-made stuff).
Come on, coding is universally at a premium compared to other trades. Naturally you wouldn't have a FAANG salary at an outsourcing farm overseas but it'll certainly provide you with comfortable living by local standards.
> coding is universally at a premium compared to other trades
It has been and it still is at this time. Just saying that it won't last.
The existential threat, and perpetual adaptation to technology musicians (classical as well as contemporary) have met since the invention of sound recording and its developments, is coming for software developers too.
Like you almost spelled out, tailors were never competing with ready-made. Clothing used to be expensive, until people (sometimes children) working for pennies were able to send to you across long distances something good enough to wear.
I'm not sure that is actually true about tailors. My understanding is that most clothing was homemade. I assume people didnt generally make their own shoes but they made their own textiles and basic garments and most people didnt have many garments.
Maybe there is a specific time period you are referring to where this was common but as I understand it, pre-industrially there were very few artisans selling products for money. Clothes were made largely by women and girls for their families.
Presumably he is referring to the industrialization period when suits were the everyday fashion. Once we moved on to baggy jeans and sweatpants, where the fit doesn't matter much, then the tailor was no longer relevant.
Yes, I'm referring to what we could call the golden age of tailoring, around 1800-1970.
You could say it was brief, relative to humanity history, indeed, as a transition period between cottage/home textile manufacturing as well as sewing, and high (and accelerating) automation managed by fewer people and lots of low-paid workers (as it is today).
And such is the trajectory for software development, a brief golden age, between the moment where computers barely existed, and the moment where automation/acceleration takes over.
It won't eliminate software development, but it won't require as many people as it does today. Some "local" artisan shops, highly skilled, and more expensive, may still exist.
But the capital currently feeling high tech salaries will inevitably seek new/other growth opportunities, as it has always done with other growth drivers.
It's not that work is meant to be miserable, it's that if work wasn't in some ways miserable/frustrating/unrewarding/etc, more people would be doing it for free.
Or rather, you wouldn't need to pay people to do things they already enjoy doing. So, the things you need to pay people to do must contain some things that people don't want to do for free.
I code at work so they can give me money so I can buy the stuff I need to carry on living. I have very generous employers who pay me a lot more money than I need to live on. The code I write at work is not very creative code - I contribute bugfixes and incremental improvements; I advocate for better accessibility of our products; I spend time code reviewing for colleagues. Standard work.
When the working day ends I switch from my work laptop to my personal laptop and start doing fun stuff: creative coding; curious-itch-scratch coding; etc. I'll also spend time doing the other fun stuff like writing poems, inventing languages, drawing maps, watching reaction videos - there's all that family and friend stuff too which can (often) be fun.
It's a choice: "live-to-work", or "work-to-live". I choose living. Recently my employers had a promotion round (the first in a few years) and I told my manager not to put my name forward for consideration. I'm comfortable at my current level and don't need the worries and stresses that come with increased work responsibilities - that would just get in the way of the fun stuff!
One can combat it by just choosing discipline, grit, perseverance and stop boxing themselves into angel vs devil kind of thinking. You are either working for self or working for someone else.
Life is rather what you make of it than the society perception of it.
> I have no idea why they mention coding. It is the same in any kind of job. You can bake cakes for fun, make music for fun, write poems, novels, play chess for fun, practice sports, grow potatos ...
One reason is that coding is so much more scalable than all of those. There are loads of stories of people who made some small thing that was useful, and were able to make a tidy profit on it (or sometimes a fairly large one).
I enjoy making homemade wines. Occasionally someone will try something I've made and ask if I'm thinking about selling it professionally. No way -- it's a fun hobby, but definitely not something I want to do in enough scale to be self-supporting.
I also enjoy languages, and developed an algorithm for helping me find material to read that's at the right level -- only a handful of words that I don't know. It's been incredibly helpful for me, and I'm sure it could be incredibly helpful to millions of people out there as well; so I quit my job and am trying to figure out how to make that happen:
I disagree that coding for fun and making it a product is 5-10% difference. I would say it's closer to 500-1000%. I coded a lot of tools for myself, for productivity or for fun. Currently I'm very quick in doing that thanks to LLMs, it's definitely not vibe coding, althoug there is a lot of code generated. As these tools serve only me, I may not care about code quality, about bugs, about someone elses data loss, about security, GDPR, different devices, mobiles, screen sizes, platforms, etc. I don't have to support "users" as an entity at all in my apps, it can be all hidden behind VPN, so i don't need auth. I have so many little issues in my apps so I know I can not for example click this and that in rapid succession, or drag this thing out of this container etc. It's 100% fine for me, it would absolutely needed to be fixed for other users. I would need something like a user manual, marketing page, payment processing? I don't get any support e-mails and angry users. There are many compromises that I can make with little value loss if I code just for me as compared to trying to offer a service for people and ask for money.
When you start coding and start having fun, please remember that the "fun" doesn't apply to coding as profession. The same goes for any other profession. Doing something for fun vs professionally are two different worlds.
Let me clarify what I mean by for fun vs professionally. For fun means you make decisions based on "That feature would be fun to implement". Professionally means you make decision based on "That's what good for business". Based on these definitions most of the open source projects don't fall under "professionally" category.
Aside from maybe a handful of projects that got lucky squatting on the right name (e.g. left-pad), are there any popular open source projects that have become popular on "that would be fun to implement" rather than "that's what is good for business" (understanding the user, answering issues, implementing requested features, etc.)? The chances of your fun overlapping the exact market need seems rather slim.
Even among unpopular open source projects, I expect most of them are published as a way to demonstrate ability to employers rather than "that would be fun". The latter projects do exist, but it is surprising if they make up most open source projects.
I am concerned about the authors propensity for taking pop cultural memes very very seriously. Somewhere in here is a lightbulb waiting to go off and a complete human ready to be born. Maybe consider going camping.
For me, this has somehow gotten to a point where I keep questioning myself if I’m actually doing something out of curiosity or because of the idea I could share something with other people or some other motive. So I’m not even sure what I’m curious about anymore, which might sound ridiculous.
Hey, don't worry. In my book, if you do something because you want to share it, then you're still interested in it enough (or curious about if you want). You just like to share, and that's okay.
It's also a good filter for topics. Naturally, the topics of interest of others seem more valuable.
I am doing a similar thing on my blog. Generally, each topic must pass the test of: is this useful to at least some? And being commited to write means I can clarify and organize my thoughts.
So nothing to worry about, keep on experimenting and sharing.
>In a perfect world, I could listen to the angel and solely get by having fun and working on things I enjoy. But if I didn't listen to the devil from time to time, I wouldn't stay up to date with the latest technologies, and as a result I wouldn't be able to pay my bills.
Why do you need to listen to the devil to stay up to date with the latest technologies? You don't need to work on something monetizable to stay up on the latest technologies. You can work on something for fun and incorporate some of the latest technologies to learn about them at the same time.
Do many people hobby code with that entrepreneur mindset thing? Or sit down to play guitar thinking they want to make a hit and feeling bad if they just noodle some cover songs? What a miserable existence that must be. How do you get that way? Should we blame LinkedIn or what is it?
I had my own company previously and I found it hard to detangle that commercial mindset from hobby coding. I’m employed now and find it much easier to code purely for fun.
If I played guitar professionally then I’d probably find it hard to not think about new pieces in the context of a gig-worthy repertoire.
This is a reaction that I had for a time, until realizing that outside of just "some people are different", there is also the wider protestant work ethic putting work at the center of their life, and assigning a moral value to productive work.
I'm describing it in too vague terms to be appropriate, and most people might be thinking it in that way, but I genuinely think there's a part of it in a lot of the "I did this paid service as a weekend project" mentality.
Many people think that they just have to write some code and execute it publicly and they'll somehow be provided for. That can sully recreational coding since it makes it hard to see that it will most definitely not be directly profitable without a lot of non-coding labour.
Doing business is demanding, you've got compliance and documentation and code needs to be intelligible to other people and finances and marketing and planning and customer support and all that domain knowledge that allows you to catch more than one or two paying customers because your solution works in most of a sector of society and so on.
With this in mind you'll have an easy time seeing that your for fun, recreational project is not a business and that you can't think of it as one until users are starting to force you to by being so many or offering money for additional services.
Because having your own product is something that on paper sounds extremely rewarding. If you do it well, the maintenance might be less than the work you put in your actual job.
Some people want to break out of the cycle, and you can't really blame them for it when the economy is hurting working people (ofcourse excluding that writing software is relative to other jobs a cushion job)
What other jobs have you had? I have been a photo lab assistant, a sign maker apprentice, a graphic designer, an insurance agent, a financial advisor, a construction worker and manual laborer, an inner-city math teacher, a software developer turned manager turn developer, now at the staff level.
Software is the most cush job I have had. More money for less work. Better perks. Less stress overall. Constantly learning, yes. Often frustrating, yes. But having financial resources beyond what the other jobs could provide is a thing. Other jobs I could leave at work, sure, but others I couldn't. I would never go back to being a public high school teacher; that shit was the suck. So was selling stocks. Software is a dream in comparison.
That is from the viewpoint of the top 10% earners if you look at the european market or small / local business than you are looking at people doing the job of multiple departments and getting blamed if something does not work or for their salary if everything works.
And the salary is most of the time lower than anyone from the HR or Marketing department whose job if you are unlucky you also have to do because the tools they use are too complicated for them.
And if take the freelancer / remote work market into consideration everyone wants to pass all the work to the lowest bidder and some of them get lucky with skilled workers whose salary may be in the median considering their location after substracting the share of the middleman.
100% - my friends who have only ever written code think it's a "hard" job in the objective sense. That among all possible jobs, it is on the difficult side of the spectrum.
I've been an EMT, a line cook, a dishwasher, a waiter, sold insurance, and worked on political campaigns. The easiest of all those is 10x harder than the hardest day of writing code.
It's frustrating at times, sure. There's office politics, sure. We probably have to deal with a disproportionate percentage of weaponized autism, sure.
But it is a cushy job and the "money per unit of effort" metric is off the charts compared to basically every other job I can think of, and definitely every other job I've ever had.
I don't have much experience in jobs like those, but a family member who jumped between whole different professions for years does. He always got bored of them because, at least according to him, all of them had one failing: you learn everything you need in a couple of months or so, then it's pretty much just getting better at doing those things repeatedly.
Eventually he tried out programming and found there's no real end to the amount of things to learn. It was the only job he found that he wouldn't get bored on. He only eventually left because of bad bosses.
I think that might be the factor that makes it hard vs easy compared to others - that for a lot of people, continual learning (which they thought they'd left behind when they finished school) is why it might be harder than the other jobs ones you listed. Though I know I'd find those ones harder for other different reasons.
Yeah, I definitely agree with you. Any time you see someone saying how hard it is to write code as a job, you can tell they've never had a "real" job. I grew up working on a farm every day - I would take programming every day of the week. Even on the days when I'm frustrated or dealing with difficult people, it's better than hard physical labor which wears down your body, is fairly gross (lots of poop!), and doesn't even pay 1/2 of what programming does.
> Software is the most cush job I have had. More money for less work. Better perks. Less stress overall. Constantly learning, yes. Often frustrating, yes. But having financial resources beyond what the other jobs could provide is a thing. Other jobs I could leave at work, sure, but others I couldn't. I would never go back to being a public high school teacher; that shit was the suck. So was selling stocks. Software is a dream in comparison.
The problem is: there exists a very specific group of people who do software development as a job who are really passionate and idealistic about software (that's why they actually got interested in software development and decided to do this professionally). For these people, the whole "politics" about software devlopment, bullshit project management processes, not being allowed to make use of their full potential and skills, and office politics is (thus) hell on earth.
I thus very plausibly do believe that exactly for people who are incredibly passionate about software development, other jobs (that are outside their passion) can actually (paradoxically!) be more convenient.
I will preface this by saying that, I decided to stop pursuing a job as a software developer because my 2 years of work experience mean nothing in the job market.
Now that I ended up finding a job as a waiter (of all things) I finally enjoy learning new things again. Before, I would get chronically stressed researching the job market, gathering keywords from job openings, consuming Udemy courses at 2x speed, using AI to plan the project and scaffold it. I was writing projects to save my life, because my finances are just that bad.
Surrendering and giving up the pursuit of work made all this mental load go away, and ironically made me progress in a personal skill level faster than anything else. I can now learn deeply. I can tinker with code to my heart's content. I can see all the warnings. I can research why this and that happen, without feeling like I have to "sigma grindset" every second.
Perhaps when the storm is gone with the whole "AI is gonna take our jobs" and the market demanding every keyword match, and I feel more confident in myself I'll try to get professional again. Or not. All I know is that I love programming.
In all seriousness, being able to pinpoint what is causing the possible stress / load and making choices to get rid of that is pretty amazing, props!
Though as for the job market, I’m sure the AI hype will blow over but I don’t think it’ll remain silent for long, there’ll be another nonsensical trend within reach.
Tech needs to keep innovating to keep investors happy and keep investing. That’s why it’s going this AI bubble route. Cause they don’t have any groundbreaking innovations at the moment but want to keep the investors they got when the web was newer and was worthy of the real hype.
> Tech needs to keep innovating to keep investors happy and keep investing.
It's nice to think that this is just a "tech" problem but unfortunately this is a wider problem in the rich world - it just so happens that "tech" has been the answer for finding huge economic growth for the past few decades. The whole economy is addicted to tech growth at this point (including your 401k if you have one, those of your your friends and neighbors).
This also depends heavily on the field, some sciences need particle accelerators and mass spectrometers, meanwhile we can get by on a $200 pc and free wifi. This means you can bypass a lot of traditional university/lab structures.
I went through this exact thing. I became so depressed and stressed out during my last real software development job, after making it to a pretty respectable senior software engineer. I quit as a life saving decision, and now it seems that those 5+ years I put in just don’t matter, as I had been getting to the final hiring stages and then getting passed up constantly. In the other hand, I have been able to get into graphics programming, painting, 3d modeling, etc, because I don't have to come home and force myself to learn the new frontend/backend framework, I have a lot less stress and I have no desire to get back into the hamster wheel of the tech world. I love creating and building, it gives me a reason to live, I now know that I was preventing myself from this very important life satisfaction, which led me to my huge career impasse/quitting my job. I think some of us are just not built for the hyper optimization and materialism of the modern corporate tech world. I err personally more toward the artistic side, and that quality is not appreciated by the vast majority of recruiters and hiring managers. Like you, I am hopeful for the future, but I also no longer hold the delusion that I can find life satisfaction through the job alone, as I so naively pursued before. It’s so much harder to measure success when its not based on those simplistic metrics like company status or income, but maybe that’s because it never should have been the concern. :)
I am a firm believer that the brain has finite resources. It is fundamentally no different than a muscle, in that, the muscle has resources at its disposal, and using those resources causes them to deplete faster than they can recover. This means, that at best, you can optimize how you use your brain, similar to how you can optimize how you use your muscles. You can train, to get "more" out of your brain, similar to muscles. But at the end of the day, there is only so much your brain can do. I have found, through fairly good time keeping, that I can do ~6 hours of deep work in a 9 hour period. Maybe 7 in a 12 hour period. This is the amount that puts me at the edge of burnout, and requires no other commitments in my life. 4-5hours in a 7.5 hour day is sustainable. Others may be able to do more, or less than this, but many people are fooling themselves if they think they are doing good work that is also deep for more than this, for more than say 4 weeks at a time.
That said, if you can find ways to use very different parts of your brain... well, then you can squeeze out more performance. In the same way that in the gym, if you find exercises that isolate different muscle groups, you can squeeze more sets in throughout your workout.
I have seen this with people who can produce a lot of output, they tend to not do the same thing all day, but find ways to work on unrelated projects. So, I'm not terribly surprised that you have an urge to code now that your brain is focused on non code related things for a large part of your day.
>I have seen this with people who can produce a lot of output, they tend to not do the same thing all day, but find ways to work on unrelated projects. So, I'm not terribly surprised that you have an urge to code now that your brain is focused on non code related things for a large part of your day.
Funnily enough, I do still code for the largest part of my day (10am-10pm, with lunch/dinner breaks + 1 hour of gaming/Reddit), simply because I'm starting my hotel job in 2 weeks, making me technically still unemployed.
Sure. I used to enjoy playing the Sims until I had that gut realisation that I was trying to get them to grind out better lives, when I should just spend that time doing it for myself.
I also bought Shenzhen I/O, because the idea of being able to program in a game seems fun. But after reading more, I didn't end up playing it because it would involve too much study of how the in-game computers work, and I'd get much more long-term satisfaction from studying real assembly languages etc.
>Do many people hobby code with that entrepreneur mindset thing? Or sit down to play guitar thinking they want to make a hit and feeling bad if they just noodle some cover songs?
I absolutely do. Money and power is a great motivator. I don't feel bad about any of it. I took my shot and continue to do so.
>What a miserable existence that must be. How do you get that way? Should we blame LinkedIn or what is it?
It was not. I made some good side money. I always joke that I program to feed my computer habit. The benefit of it is you actually code like you are making a product, and there is usually a big skill difference between someone coding for fun and someone coding to make an actual sellable product; it's the 80/20 rule. That last 80% is what separates the good from the great. Like Jobs said, "Real artists ship."
You've made a whole lot of assumptions in that reply, all from 10 sentences. Maybe ask some questions next time instead of making assumptions that fit your preconceived notions. Your intuition is a bit off.
I think I was about as charitable as your post deserved, and I stated my assumptions clearly. You can either address them (and the bigger point) or choose not to.
> I can teach someone who knows how things work how to glue libraries together when/if we do need it, but I can't teach someone who glues libraries together how to make their own things; it's simply not worth the time or effort because it's effectively like starting from scratch and I may as well start with a complete junior in that case.
I just want to point out that this goes beyond an argument explaining how hobby projects can be useful and enters the territory of personal attack. I presume you mean that whatever they made is substandard in some way ("[gluing] libraries together" is nonsense criticism; everything in software is someone's abstraction) but I don't see why you would think that.
For any given singular project "gluing libraries together" is not a particularly interesting critique, but as a default way of doing things it is very relevant to the resulting skill levels of people as well as their respect for quality. I have enough experience with former coworkers to understand which attitude results in which and it's with that backdrop in mind I've written the post. I stated my assumptions pretty clearly and why I've made them as well.
I absolutely think gluing libraries together is a substandard default way of working that leads to poor results, by the way. "[...] everything in software is someone's abstraction" is a cop-out that ignores the massive gap that exists between finding the lowest level you can execute (in many cases an OS call that cannot be split up into a smaller part, or calls into the lowest API you can find like OpenGL, Vulkan, etc., where we have to play by a driver's rules) and executing a function in a library that calls a library that calls a library that calls the OS or the like.
Taking on the cost of countless layers of function calls, potentially manager code, etc., just because "everything in software is someone's abstraction" is, to use your phrasing, a "nonsense" excuse for poor work and not taking ownership of the code that will execute.
I have a former coworker that elected to use a tokenizer/parser library that clocked in at about 6k lines of Rust code, where I personally decided to simply write one in about 600 lines (in Odin, which probably is considered more verbose). The 600 line one was faster, used less memory and naturally was easier to understand (easy enough to understand for someone who literally had never written a tokenizer/parser before to use and extend). It's defensible to use a library for a tokenizer/parser, of course, because "everything in software is someone's abstraction", but do you see the problem here where we get worse software and no one ever learns how to make better things if everyone just decides to `cargo install` readymade solutions?
I'm not saying that my colleague could at that moment have written the Odin solution in this case, but he would certainly be more likely to if he implemented things from scratch as a way of practicing, or decided to otherwise take ownership of the code that runs in work projects.
> I stated my assumptions pretty clearly and why I've made them as well.
The first yes, the second no. If you had a reason for the assumption, I think it would not be an assumption.
> I have a former coworker ...
One might assume you are thinking more about your former co-worker than you are about Clubber. They could make that assumption because you describe in detail an actual instance of what you complain about in the absence of any other such description in Clubber's comment.
Should they assume that? Even if they have reasons? Even if they're right? What does it add to the discussion?
I think you could have made a good point about their assessment missing the mark because I agree that the skills you write about are improved by "finding the lowest level you can execute" more than "coding to make an actual sellable product". Still, they might consider the latter to be no different from the former (the former is certainly a more precise description, regardless). Your story about the co-worker is a good one on that topic. It's unfortunate that the assumptions make your comments easier to dismiss.
The big difference for me is that what's actually fun (hard technical problems like e.g. writing an OS kernel, a db engine, a path tracer, an LLM from scratch...) is mentally challenging, and might progress your career, but it's not actually in any way sellable.
To make something sellable, you usually have to make it not-so-technical and not-so-complex. Simply because of the time constraints of hobby work and solo work. Your effort would go mostly to the market analysis and your product would need more polish meaning that for a personal project, it would usually be trivial (You can sell a shopping list iOS app, but you can't easily sell a 5 year hobby project making an OS). The sellable OS would be a 500 man-year product. What yo do by coding a kernel for 5 years is possibly that you can improve the product that is yourself.
So unless you actually enjoy the goal of marketing/selling/running a business, then the Shopping list iOS app won't be a good hobby.
>The big difference for me is that what's actually fun (hard technical problems like e.g. writing an OS kernel, a db engine, a path tracer, an LLM from scratch...) is mentally challenging, and might progress your career, but it's not actually in any way sellable.
I'm not saying it's worthless by any means. I assume this would be the baseline. The benefit of making an actual sellable product is you learn how to finish, which is often a lesson not learned from hobbyists. It's fun to work on new tech, but if someone never learns how to make a product that can ship, their value in an organization is probably more limited than someone who can.
>Your effort would go mostly to the market analysis and your product would need more polish meaning that for a personal project,
It's the polish that's valuable, I couldn't care less about the business side of it, leave that to business people.
Let's use your example of working on the Linux Kernel. If Linus just made a kernel and said, "this is great!" we never would have had the GNU/Linux revolution. It was packaged and installers were created and distributions were made and it was eventually able to be installed pretty easily by anyone. That's making a viable product, that is finishing.
>To make something sellable, you usually have to make it not-so-technical and not-so-complex.
Sort of, you have to make a not-so-complex wrapper so other people can use it. The complexity is still there, but you have to abstract it so devs without that knowledge can use it. I feel that if no one else can use it, where's the value?
“The definition of genius is taking the complex and making it simple.”
Another simplistic example is I'm working on making a custom domain specific model. Getting it to infer properly is great (getting there), but the value to the company is to make it fast, wrap it in a usable API, get it to log useful errors, and integrate it into our software. The first is the fun part, the second is finishing to make it useful. That's value.
Coding is a small but very fun part of my business. I code for fun because I can afford to, but most people need to put bread on the table, so they must remain competitive.
This ignores the fact that people are motivated by different things. If you're someone who thrives on the intrinsic 'do this for the love and joy of it' motivation then you should absolutely just write code for the fun of it. But not everyone is like that. Some people need an extrinsic motivator to drive them to do things - that's usually money, or praise, or a punishment for failing. There is nothing wrong with either approach. Neither is better.
While it's not wrong to be extrinsically motivated (it's not morally wrong, or a value judgment), it's definitely worse and more fickle (it will produce worse results in most cases). Intrinsic motivation is much more likely to lead to long-term growth even in the face of adversity and in general be more resistant to changing circumstances.
Important to note that it's not a dichotomy as long as you're not an "extremist" of either side. Build for yourself and a big market. Take pride in competing at a high level. If you view "hustling" as an 'all work, no play' experience, you're engaged in absolutist thinking.
Seems reasonable that you would struggle with the opportunity cost of your time when you're writing software for fun since you could also be working towards a greater goal of launching something that might make money.
Software is relatively unique because of the multiplying effects of software (without banking on a moonshot) unlike, say, carpentry or strumming a guitar. So the opportunity cost can be even higher.
You should always be cognizant of opportunity costs because they're always in play. And I can see that getting away from people, especially if you haven't already achieved your financial life goals.
I feel similar when I try to play a game in my 30s. It feels like a huge waste of time compared to something that would advance me towards my aspirations. But I think that's just part of being an adult. Just be aware of the trade you're making.
I still don't get it. What I want to do is make software as a hobby that can never be sold. If I start writing some boring SaaS software instead then I'm losing my opportunity to do what I like?
I think it must basically be a funamental question of goals/aspirations to begin with. I never had an aspiration to be e.g. wealthy, retire early, or make very senior positions within my company. Is that the difference?
Some of us do. The hobby may consist of simulating the professional experience, but to a limited extent and on our own terms. For instance in my own case, I play an instrument -- the double bass -- and I perform sporadically. When I practice at home, I'm aware of the qualifications and competency of a professional bassist, I measure myself against those standards, and try to keep improving.
This doesn't detract from the pleasure of playing, at all. If anything, it gives me some structure and motivation. And I still don't mind noodling for a while when I need a distraction that doesn't involve a screen.
But I only count the money that I make, because I have to report it. ;-)
I do both of those, it's a constant battle in my own head. I'm always reminding myself that it's ok to make music just for my own enjoyment, and that don't need a potential monetary angle for some hobby.
I'm not justifying this mindset, which preceded LinkedIn. I don't like it.
> But if I didn't listen to the devil from time to time, I wouldn't stay up to date with the latest technologies, and as a result I wouldn't be able to pay my bills.
It appears to imply that new technologies do not count as fun, which may be the case for the author, but not generally. And there are indeed fewer open vacancies requiring older (decades old) technologies exclusively, with vacancies often including currently-hyped technologies in addition to established ones, which opens more options and potentially leads to a higher salary if one employs those newer or hyped ones, but I guess that it is quite possible to pay the bills while using mostly the older ones, too.
I've thought that recently there are things I'm willing to build, things I'm willing to sell, and things I'm willing to support. My desire for each is not in equal measure. There are vastly more things I will build for myself then I can sell, and there are a lot of things I like selling but I hate supporting. Only when I feel the trifecta do I release it to the public. The rest I tell myself I can just enjoy the process of building and throwing it away if I want, it doesn't matter.
182 comments
[ 6.0 ms ] story [ 133 ms ] thread> This application will be able to read and write all public repository data.
My point is that if you start with the fun and let it grow from there, and you're willing to go through the discomfort of sharing, it doesn't have to be either or.
I wish to share, but not to helicopter parent. I've long felt this case ill served, from 1995 Perl CPAN's "you own the package name" (vs author-packagename-version triples), to 2025 github's impoverished support for communities of forks. No "past me wrote this; present me frees it to jam; future me isn't involved - play well together, and maybe someday I'll listen in or drop by". The emphasis has been on human ownership/control of code, and of limited human collaboration, rather than on code getting out there, building friendships and communities, having fun and flourishing with the humans.
Heck, most of the "real" free software world (the one building entire operating systems, desktop environments, programming languages, games... other than Linus with Linux) operate in that manner.
I am always perplexed when people ask me about my GitHub account for my opensource contributions: I point them at whatever the latest incarnation of ohloh (OpenHub) is where they can find thousands of my commits over hundreds of projects.
Any platforms emphasizing rendezvous? Like... Let me know whenever someone on my <fun people list> commits a new project, or is looking for help. Any meet-and-hacks later today, anywhere on the planet, which welcome virtuals? Happy to do 20 minutes of pair programming now - you know my profile - is anyone around? Text me whenever a flash-mob hackathon gets going. Notify me whenever code, any language, seeks help with <expertise domain>. Using my profile-3, find me a couple of candidate tickets for later. ... Sort of AI-facilitated social networking for humans and code.
>One of the many things we do at Y Combinator is teach hackers about the inevitability of schleps. No, you can't start a startup by just writing code. I remember going through this realization myself. There was a point in 1995 when I was still trying to convince myself I could start a company by just writing code. But I soon learned from experience that schleps are not merely inevitable, but pretty much what business consists of. A company is defined by the schleps it will undertake.
>The most striking example I know of schlep blindness is Stripe, or rather Stripe's idea. For over a decade, every hacker who'd ever had to process payments online knew how painful the experience was.
https://www.paulgraham.com/schlep.html
Tech just doesnt have many opportunities left.
Tech is a problem that needs solving but it isn't the biggest problem to be solved, having a network and knowing people is more than half the job.
Those connections didn't materialize out of thin air, you know. Your CEO/random board member had to meet people, understand what they do, keep those connections alive, etc.
Why can't you do the same? Start now and in five years you'll be a lot more connected than you are at this moment. This is also an entirely solvable problem.
"No one likes schleps" should be "no one likes to schlep."
I probably don't need to explain much about coding at work. It's not just about "writing code". It's about software engineering. It's a responsibility that requires professionalism, discipline, and care. The real focus isn't the code itself. The focus is first and foremost on the business problems. Good code, good algorithms, and solid engineering practices are simply means to an end in solving those problems effectively.
But in my free time, coding is something else entirely. It's a form of art and expressing myself. It all started with IBM PC Logo and GW-BASIC, where writing code to draw patterns on the screen was my way of creating art. While some kids painted with brushes and watercolours, I painted with code and CGA colours.
Coding in my leisure time is a way for me to create, explore, and express my silly ideas without the constraints of business requirements or deadlines. It's where I get to experiment, play, and bring ideas, no matter how trivial or pointless, to life purely for the joy of it. Occasionally, these small experiments evolve into something I'm comfortable sharing online. That's when I write up a README.md, add a LICENSE.md, commit the code to my repo, and push it to GitHub or Codeberg to share with others hoping fellow like-minded individuals might find joy or utility in these experiments.
Fortunately, I've been able to release a few projects that have gathered small communities of users. For example, my last such project was https://susam.net/myrgb.html which, as far as I can tell, has got about 50 to 60 daily users. It's a small number but it's not nothing. While coding for leisure has always been enjoyable, the presence of these small communities has also been quite motivating.
I think it is possible to do both with some luck. While coding for work happens almost everyday by necessity, I think coding for leisure can also happen along with it, provided other circumstances of life don't get in the way. If circumstances allow, it is certainly possible. It doesn't have to happen everyday. I know everyone has got responsibilities in their lives. I've got too. But it can happen once in a while, when a spark of inspiration strikes. For me, it usually happens on some weekends when I get an itch to explore an idea, something I feel compelled to implement and see through.
At a high level, for those of us who code outside of work, we're constantly faced with the choice of either working on something that we find interesting vs. something that would further our careers. It's awesome when they align, but it can be painful when they don't.
I sometimes feel guilty when I choose to work on passion projects... but if I instead choose work on professional development, I feel like my creative soul starts to wither a bit.
Doing necessary work, even when you don't like is for me the definition of "work". You should also learn to manage it, if you work too much, you should take a break.
You don't need to get rich as "billionaire", but if you are good at your work it is reasonable that you will get "millionaire", because you gave society tens of times more value that what you got.
That is not something to be ashamed of. If you got the money gambling(taking it from someone else) you can feel ashamed, but not if you made money generating wealth with effort and work.
I was so against the idea, actually, that I avoided majoring in CS because I didn't want to ruin my favorite hobby by doing it professionally.
It wasn't until a few years after I graduated with my philosophy degree and couldn't find a career that I decided to try writing code for a living.
It's been great for me for almost 20 years now, and thankfully I still love to code for fun even though I do it all day professionally, but I have not felt the pull to try to form my own startup and try to get rich.
My favorite part of coding is having a problem and then figuring out how to solve it with the tools I have. I love working as a programmer because that is what I do all day, and someone pays me really good money to do it.
And I don't have to worry about all the other stuff like business models or funding or getting customers or talking to people, I just get a problem and do my favorite thing to solve it.
And I have more time to do other things because I am not hustling or trying to get rich.
They have you sign NDAs before you start working. The ideas are all really really stupid.
I do have my ideas, but I’m also humble enough to just accept I’ll probably never make any real money. I self taught my way straight to 6 figures ( back in 2016 when that still meant something). That’s enough really…
One, we've been friends for a minimum of 5 years and I sincerely like you as a person.
Two, you pay me.
At least twice I've had situations where I basically need someone at a bar or something and within a week they're sending me a bunch of specs to program out something that will require a small team to do properly. Then when you do hack out a small prototype it's not good enough.
At this point in my life, I'd rather work on my own solo projects if anything. I'll release the code MIT and if someone smarter than me wants to make money off it they can
Be cool if you pulled it off.
I also didn't want to be used by some predator, to make them rich. I found a [less-than-perfect, but OK] company to work for, that had values I liked, and stayed there, for a long time. I got to hang with the really cool kids. I mean the ones that were so cool, no one knew who they were, because they didn't care about being cool. They just liked doing what they were doing, and they were the best at it.
I was the dumbest kid in the room, and I'm smarter than the average bear. I also got to play with some very cool toys.
But I was a manager, for most of that time, and I didn't want to give up coding. I didn't have a "shower clause" in my employment contract, so I spent a great deal of my extracurricular time, doing open-source stuff. I had an organization that could use my skills, so I worked with them.
Eventually, the cool ride was over (after almost 27 years), and I found myself ready to roll up my sleeves, and help make someone else rich.
But no one wanted me, so I was forced to retire, and I've never been happier.
I was just talking about this, yesterday, to a friend of mine, who sold his company, and is getting set to become a Man of Leisure. He's like me. He needs something to do, and I suspect that he'll do something cool.
I mentioned how upset I was, when I figured out that no one wanted me, but, after a year or so of following my own muse, I realized that I had been working at a state of chronic, low-grade misery, for over 30 years. I probably work harder now, than I ever did, drawing a salary, and I absolutely love it. This is what I've been working on, for the last month or so[0]. Still have a ways to go, but it's coming along great, and I've been learning a lot.
Here's a post that I wrote, some time ago, about how I like to approach things[1].
[0] https://github.com/RiftValleySoftware/ambiamara/tree/master/...
[1] https://littlegreenviper.com/miscellany/thats-not-what-ships...
It would have been nice, to have the extra decade of salary, but c’est la vie…
Living frugally, deferring (or avoiding) purchases, saving a substantial percentage, etc., was important for me.
Also, the world around us, changes.
In my entire career, I never made more than what some kids make, coming right out of school, these days.
The same for my father. He never made more than about $50K, his entire life, yet had a half-acre house in Potomac, two cars, and a stay-at-home wife.
It prevents things like moonlighting, or doing charity work.
I worked for a company that employed a lot of top-notch photographers, and there's no way that they would have agreed to anything like that.
what's a shower clause?
EDIT:
"That’s the clause that says your employer owns every idea that you come up with in the shower."
https://news.ycombinator.com/item?id=24585399
It's been 2 years, and I can proudly say that i'm finally making more money than I did delivering packages on a bicycle in SF, which isn't much.
Getting rich was never in the cards for me, but not having to answer to a tyrannical boss every day is definitely a positive. Coming from a blue-collar background, that's pretty much the norm, and that sentiment has stuck with me.
You don't have to do the kind of startup that is worshipped here on HN.
Not sure you can call it a knockoff if it came out a year earlier!
It's not fun. The activity is not an enjoyable act of entertainment. It's stressful, time consuming and miserable.
The result is what matters. You did something. Learned something. For you, not because it was in some work planning. It provides catharsis.
That sort of catharsis does not exist in some work related environment. It never will, unless stars align magically, which they almost never do.
I am highly skeptic of this "code is fun" perspective. Always was.
That's why "all your base belong to us" kind of contracts in which stuff made outside work COULD become property of the hiring company makes otherwise happy developers into depressive under-productive nightmares. Let them code the toy thing unharmed in their spare time, for fucks sake.
Let it be the real thing. Stop this nonsense fairytale.
It is for your own good. It prevents companies from hiring con men, it prevents young folk from being drawn to a career they will despise, it prevents massive loss of investment.
I wanted to code for catharsis. To learn. To feel I made something. Wanted, past tense. These "code for fun" people were serious contributors to my burnout.
I don't think that at all. I think he just has a different perspective on it than you do. Whilst your perspective is valid, some people actually do enjoy the work of coding, especially if they can do so in an environment where they can immediately check intermediate results and use those to shape their coding trajectory as they work, creating a tight OODA loop. (Hi, Lisp!)
> That's why "all your base belong to us" kind of contracts in which stuff made outside work COULD become property of the hiring company makes otherwise happy developers into depressive under-productive nightmares. Let them code the toy thing unharmed in their spare time, for fucks sake.
> Let it be the real thing. Stop this nonsense fairytale.
On this we can agree. I think that for programming to be fun it has to be something you want to see come into fruition, i.e., not any random thing someone else wants to see, done to their schedule by their rules. Good tech companies -- game studios in the 90s, Google in the early days, even Microsoft in the early days -- knew how to make the golden goose as comfortable as possible while slipping out the back with the eggs.
But in the late 90s, Jim McCarthy's "Beware of a guy in a room" became iron gospel among management types, who interpreted it as meaning that developers must be subjected to a panopticon in which what they are doing at all times is tracked and analyzed by the chain of command going up to the C level. Hence Scrum, SAFe, and all that malarkey, and we've forgotten how to "let 'em cook" as the kids say now.
I was fine doing some hours of planned teamwork. As long as I had some time to work on things I want. Spare non paid time.
For those things I want to program on that spare time, I don't want anyone snooping around to collect anything. I realize I don't want anyone encouraging, questioning, giving advice, talking about it.
The problem is much deeper. As I mentioned, this "code for fun" people had a prominent role in my burning out. They act as catharsis blockers as much as scrum people.
It makes no sense to try anything anymore. There could be a con man happy supporter just around the corner waiting to "collect the egg for free". I will rather let them starve.
Maybe this is exactly what the profession needs. A mass strike of some sort. Not for higher pay, but for better work conditions. It probably won't happen in my time.
Maybe that's what programming is to you.
Maybe you do because of the fun. Then you don't need me. Leave me alone.
In any case, I'm happy to grant you your wish.
Coding is a tool to solve data problems, I've been doing it for close to two decades now and I still find it fulfilling and fun. Many years ago I used to think, I love my job that I would do my job for free ... I was wrong! Others will paid for doing things you find fun, make sure you know your worth.
I find computer systems beautiful. A system of parts interacting in a complex dance to process data. Each part effortlessly modifyable and reusable, executable by the generic machine people already own.
I love the puzzle of putting data together, of shaping it in main memory, and the joy of finding that previous shaping makes the current problem easier. The joy of finding a hidden algebra or transitivity.
All of these things go beyond the "tool" view of software and touches the "art" view. A painter doesn't find the painting useful, they find it beautiful.
I would be writing software, even if I want paid. I would however be working on vastly different software, and I think that's the OP's point.
Maybe to you. For some of us, it's also a form of self-expression, a hobby or a lifestyle.
In my experience coding for money and coding for fun is a very different experience. I know my worth, but I am also free to do whatever I want out of my working hours.
At a certain stage, you realize that in order to be able to do only that job, you must make someone pay you for it. You must do it in a way (or in a volume) which makes others happy. The fact that it makes you happy is not enough anymore.
I don't think there is an angel and a devil. It is still the same thing. If you like the result of your work, there is a high chance that others will like it. You don't need to change what you do by a 100%. Changing it by 5% - 10% is often enough.
If you happen to work for a company that's big enough to pay reasonably. And even that is still a very temporary accident of times.
There was a time with plenty (comparatively to today) of tailors, living very reasonably, because there was a demand, and the means.
Today, you're lucky if you manage to find one that's in your city, and even more if he/she's not too expensive (that is, compared to ready-made stuff).
It has been and it still is at this time. Just saying that it won't last.
The existential threat, and perpetual adaptation to technology musicians (classical as well as contemporary) have met since the invention of sound recording and its developments, is coming for software developers too.
Didn't it also went with an important reduction in the number of people who could make a living out of that?
Maybe there is a specific time period you are referring to where this was common but as I understand it, pre-industrially there were very few artisans selling products for money. Clothes were made largely by women and girls for their families.
You could say it was brief, relative to humanity history, indeed, as a transition period between cottage/home textile manufacturing as well as sewing, and high (and accelerating) automation managed by fewer people and lots of low-paid workers (as it is today).
And such is the trajectory for software development, a brief golden age, between the moment where computers barely existed, and the moment where automation/acceleration takes over.
It won't eliminate software development, but it won't require as many people as it does today. Some "local" artisan shops, highly skilled, and more expensive, may still exist.
But the capital currently feeling high tech salaries will inevitably seek new/other growth opportunities, as it has always done with other growth drivers.
Or rather, you wouldn't need to pay people to do things they already enjoy doing. So, the things you need to pay people to do must contain some things that people don't want to do for free.
When the working day ends I switch from my work laptop to my personal laptop and start doing fun stuff: creative coding; curious-itch-scratch coding; etc. I'll also spend time doing the other fun stuff like writing poems, inventing languages, drawing maps, watching reaction videos - there's all that family and friend stuff too which can (often) be fun.
It's a choice: "live-to-work", or "work-to-live". I choose living. Recently my employers had a promotion round (the first in a few years) and I told my manager not to put my name forward for consideration. I'm comfortable at my current level and don't need the worries and stresses that come with increased work responsibilities - that would just get in the way of the fun stuff!
Life is rather what you make of it than the society perception of it.
One reason is that coding is so much more scalable than all of those. There are loads of stories of people who made some small thing that was useful, and were able to make a tidy profit on it (or sometimes a fairly large one).
I enjoy making homemade wines. Occasionally someone will try something I've made and ask if I'm thinking about selling it professionally. No way -- it's a fun hobby, but definitely not something I want to do in enough scale to be self-supporting.
I also enjoy languages, and developed an algorithm for helping me find material to read that's at the right level -- only a handful of words that I don't know. It's been incredibly helpful for me, and I'm sure it could be incredibly helpful to millions of people out there as well; so I quit my job and am trying to figure out how to make that happen:
https://www.laleolanguage.com
Look at any popular open source project and tell me not a single contributor was having fun while writing it.
I can give you examples of very high quality open source projects where I know for a fact that the person/team behind them were just having fun.
Even among unpopular open source projects, I expect most of them are published as a way to demonstrate ability to employers rather than "that would be fun". The latter projects do exist, but it is surprising if they make up most open source projects.
It's also a good filter for topics. Naturally, the topics of interest of others seem more valuable.
I am doing a similar thing on my blog. Generally, each topic must pass the test of: is this useful to at least some? And being commited to write means I can clarify and organize my thoughts.
So nothing to worry about, keep on experimenting and sharing.
Why do you need to listen to the devil to stay up to date with the latest technologies? You don't need to work on something monetizable to stay up on the latest technologies. You can work on something for fun and incorporate some of the latest technologies to learn about them at the same time.
If I played guitar professionally then I’d probably find it hard to not think about new pieces in the context of a gig-worthy repertoire.
I'm describing it in too vague terms to be appropriate, and most people might be thinking it in that way, but I genuinely think there's a part of it in a lot of the "I did this paid service as a weekend project" mentality.
Doing business is demanding, you've got compliance and documentation and code needs to be intelligible to other people and finances and marketing and planning and customer support and all that domain knowledge that allows you to catch more than one or two paying customers because your solution works in most of a sector of society and so on.
With this in mind you'll have an easy time seeing that your for fun, recreational project is not a business and that you can't think of it as one until users are starting to force you to by being so many or offering money for additional services.
Some people want to break out of the cycle, and you can't really blame them for it when the economy is hurting working people (ofcourse excluding that writing software is relative to other jobs a cushion job)
Software is the most cush job I have had. More money for less work. Better perks. Less stress overall. Constantly learning, yes. Often frustrating, yes. But having financial resources beyond what the other jobs could provide is a thing. Other jobs I could leave at work, sure, but others I couldn't. I would never go back to being a public high school teacher; that shit was the suck. So was selling stocks. Software is a dream in comparison.
And the salary is most of the time lower than anyone from the HR or Marketing department whose job if you are unlucky you also have to do because the tools they use are too complicated for them.
And if take the freelancer / remote work market into consideration everyone wants to pass all the work to the lowest bidder and some of them get lucky with skilled workers whose salary may be in the median considering their location after substracting the share of the middleman.
I've been an EMT, a line cook, a dishwasher, a waiter, sold insurance, and worked on political campaigns. The easiest of all those is 10x harder than the hardest day of writing code.
It's frustrating at times, sure. There's office politics, sure. We probably have to deal with a disproportionate percentage of weaponized autism, sure.
But it is a cushy job and the "money per unit of effort" metric is off the charts compared to basically every other job I can think of, and definitely every other job I've ever had.
Eventually he tried out programming and found there's no real end to the amount of things to learn. It was the only job he found that he wouldn't get bored on. He only eventually left because of bad bosses.
I think that might be the factor that makes it hard vs easy compared to others - that for a lot of people, continual learning (which they thought they'd left behind when they finished school) is why it might be harder than the other jobs ones you listed. Though I know I'd find those ones harder for other different reasons.
The problem is: there exists a very specific group of people who do software development as a job who are really passionate and idealistic about software (that's why they actually got interested in software development and decided to do this professionally). For these people, the whole "politics" about software devlopment, bullshit project management processes, not being allowed to make use of their full potential and skills, and office politics is (thus) hell on earth.
I thus very plausibly do believe that exactly for people who are incredibly passionate about software development, other jobs (that are outside their passion) can actually (paradoxically!) be more convenient.
Now that I ended up finding a job as a waiter (of all things) I finally enjoy learning new things again. Before, I would get chronically stressed researching the job market, gathering keywords from job openings, consuming Udemy courses at 2x speed, using AI to plan the project and scaffold it. I was writing projects to save my life, because my finances are just that bad.
Surrendering and giving up the pursuit of work made all this mental load go away, and ironically made me progress in a personal skill level faster than anything else. I can now learn deeply. I can tinker with code to my heart's content. I can see all the warnings. I can research why this and that happen, without feeling like I have to "sigma grindset" every second.
Perhaps when the storm is gone with the whole "AI is gonna take our jobs" and the market demanding every keyword match, and I feel more confident in myself I'll try to get professional again. Or not. All I know is that I love programming.
Though as for the job market, I’m sure the AI hype will blow over but I don’t think it’ll remain silent for long, there’ll be another nonsensical trend within reach.
Tech needs to keep innovating to keep investors happy and keep investing. That’s why it’s going this AI bubble route. Cause they don’t have any groundbreaking innovations at the moment but want to keep the investors they got when the web was newer and was worthy of the real hype.
It's nice to think that this is just a "tech" problem but unfortunately this is a wider problem in the rich world - it just so happens that "tech" has been the answer for finding huge economic growth for the past few decades. The whole economy is addicted to tech growth at this point (including your 401k if you have one, those of your your friends and neighbors).
The point is that they did their research sort of "for fun".
That said, if you can find ways to use very different parts of your brain... well, then you can squeeze out more performance. In the same way that in the gym, if you find exercises that isolate different muscle groups, you can squeeze more sets in throughout your workout.
I have seen this with people who can produce a lot of output, they tend to not do the same thing all day, but find ways to work on unrelated projects. So, I'm not terribly surprised that you have an urge to code now that your brain is focused on non code related things for a large part of your day.
Funnily enough, I do still code for the largest part of my day (10am-10pm, with lunch/dinner breaks + 1 hour of gaming/Reddit), simply because I'm starting my hotel job in 2 weeks, making me technically still unemployed.
I also bought Shenzhen I/O, because the idea of being able to program in a game seems fun. But after reading more, I didn't end up playing it because it would involve too much study of how the in-game computers work, and I'd get much more long-term satisfaction from studying real assembly languages etc.
The older I get, the less I care about career progression and the more I allow myself to just use code to explore thoughts or ideas.
I absolutely do. Money and power is a great motivator. I don't feel bad about any of it. I took my shot and continue to do so.
>What a miserable existence that must be. How do you get that way? Should we blame LinkedIn or what is it?
It was not. I made some good side money. I always joke that I program to feed my computer habit. The benefit of it is you actually code like you are making a product, and there is usually a big skill difference between someone coding for fun and someone coding to make an actual sellable product; it's the 80/20 rule. That last 80% is what separates the good from the great. Like Jobs said, "Real artists ship."
I just want to point out that this goes beyond an argument explaining how hobby projects can be useful and enters the territory of personal attack. I presume you mean that whatever they made is substandard in some way ("[gluing] libraries together" is nonsense criticism; everything in software is someone's abstraction) but I don't see why you would think that.
I absolutely think gluing libraries together is a substandard default way of working that leads to poor results, by the way. "[...] everything in software is someone's abstraction" is a cop-out that ignores the massive gap that exists between finding the lowest level you can execute (in many cases an OS call that cannot be split up into a smaller part, or calls into the lowest API you can find like OpenGL, Vulkan, etc., where we have to play by a driver's rules) and executing a function in a library that calls a library that calls a library that calls the OS or the like.
Taking on the cost of countless layers of function calls, potentially manager code, etc., just because "everything in software is someone's abstraction" is, to use your phrasing, a "nonsense" excuse for poor work and not taking ownership of the code that will execute.
I have a former coworker that elected to use a tokenizer/parser library that clocked in at about 6k lines of Rust code, where I personally decided to simply write one in about 600 lines (in Odin, which probably is considered more verbose). The 600 line one was faster, used less memory and naturally was easier to understand (easy enough to understand for someone who literally had never written a tokenizer/parser before to use and extend). It's defensible to use a library for a tokenizer/parser, of course, because "everything in software is someone's abstraction", but do you see the problem here where we get worse software and no one ever learns how to make better things if everyone just decides to `cargo install` readymade solutions?
I'm not saying that my colleague could at that moment have written the Odin solution in this case, but he would certainly be more likely to if he implemented things from scratch as a way of practicing, or decided to otherwise take ownership of the code that runs in work projects.
The first yes, the second no. If you had a reason for the assumption, I think it would not be an assumption.
> I have a former coworker ...
One might assume you are thinking more about your former co-worker than you are about Clubber. They could make that assumption because you describe in detail an actual instance of what you complain about in the absence of any other such description in Clubber's comment.
Should they assume that? Even if they have reasons? Even if they're right? What does it add to the discussion?
I think you could have made a good point about their assessment missing the mark because I agree that the skills you write about are improved by "finding the lowest level you can execute" more than "coding to make an actual sellable product". Still, they might consider the latter to be no different from the former (the former is certainly a more precise description, regardless). Your story about the co-worker is a good one on that topic. It's unfortunate that the assumptions make your comments easier to dismiss.
To make something sellable, you usually have to make it not-so-technical and not-so-complex. Simply because of the time constraints of hobby work and solo work. Your effort would go mostly to the market analysis and your product would need more polish meaning that for a personal project, it would usually be trivial (You can sell a shopping list iOS app, but you can't easily sell a 5 year hobby project making an OS). The sellable OS would be a 500 man-year product. What yo do by coding a kernel for 5 years is possibly that you can improve the product that is yourself.
So unless you actually enjoy the goal of marketing/selling/running a business, then the Shopping list iOS app won't be a good hobby.
I'm not saying it's worthless by any means. I assume this would be the baseline. The benefit of making an actual sellable product is you learn how to finish, which is often a lesson not learned from hobbyists. It's fun to work on new tech, but if someone never learns how to make a product that can ship, their value in an organization is probably more limited than someone who can.
>Your effort would go mostly to the market analysis and your product would need more polish meaning that for a personal project,
It's the polish that's valuable, I couldn't care less about the business side of it, leave that to business people.
Let's use your example of working on the Linux Kernel. If Linus just made a kernel and said, "this is great!" we never would have had the GNU/Linux revolution. It was packaged and installers were created and distributions were made and it was eventually able to be installed pretty easily by anyone. That's making a viable product, that is finishing.
>To make something sellable, you usually have to make it not-so-technical and not-so-complex.
Sort of, you have to make a not-so-complex wrapper so other people can use it. The complexity is still there, but you have to abstract it so devs without that knowledge can use it. I feel that if no one else can use it, where's the value?
“The definition of genius is taking the complex and making it simple.”
Another simplistic example is I'm working on making a custom domain specific model. Getting it to infer properly is great (getting there), but the value to the company is to make it fast, wrap it in a usable API, get it to log useful errors, and integrate it into our software. The first is the fun part, the second is finishing to make it useful. That's value.
This ignores the fact that people are motivated by different things. If you're someone who thrives on the intrinsic 'do this for the love and joy of it' motivation then you should absolutely just write code for the fun of it. But not everyone is like that. Some people need an extrinsic motivator to drive them to do things - that's usually money, or praise, or a punishment for failing. There is nothing wrong with either approach. Neither is better.
Software is relatively unique because of the multiplying effects of software (without banking on a moonshot) unlike, say, carpentry or strumming a guitar. So the opportunity cost can be even higher.
You should always be cognizant of opportunity costs because they're always in play. And I can see that getting away from people, especially if you haven't already achieved your financial life goals.
I feel similar when I try to play a game in my 30s. It feels like a huge waste of time compared to something that would advance me towards my aspirations. But I think that's just part of being an adult. Just be aware of the trade you're making.
I think you want to embody both awareness and acceptance. And probably make a deliberate choice in the matter instead of just drifting.
I think it must basically be a funamental question of goals/aspirations to begin with. I never had an aspiration to be e.g. wealthy, retire early, or make very senior positions within my company. Is that the difference?
This doesn't detract from the pleasure of playing, at all. If anything, it gives me some structure and motivation. And I still don't mind noodling for a while when I need a distraction that doesn't involve a screen.
But I only count the money that I make, because I have to report it. ;-)
I'm not justifying this mindset, which preceded LinkedIn. I don't like it.
It appears to imply that new technologies do not count as fun, which may be the case for the author, but not generally. And there are indeed fewer open vacancies requiring older (decades old) technologies exclusively, with vacancies often including currently-hyped technologies in addition to established ones, which opens more options and potentially leads to a higher salary if one employs those newer or hyped ones, but I guess that it is quite possible to pay the bills while using mostly the older ones, too.