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.
>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.
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.
Tech just doesnt have many opportunities left.
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…
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...
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.
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.
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.
It would have been nice, to have the extra decade of salary, but c’est la vie…
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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).
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)
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.
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.
Life is rather what you make of it than the society perception of it.
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.
As for the larger things that could potentially lead to a business, those types of problems usually come from something I encounter at work. If I'm stuck using software that sucks, identify some obvious demand, etc.
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.
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.
Didn't it also went with an important reduction in the number of people who could make a living out of that?
…we may admire what he does, but we despise what he is.
https://readmorestuff.wordpress.com/2009/11/30/extracts-from...
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:
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.
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."
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.
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."
My angel wants me to do my side hustles and produce well made products. For the users and myself. But he sits behind me in the corner now with a bitter face. Neglected and left out.
The devil took over making me work for money, sell my hours for the high bidder, for current income. So I could provide for the three most precious ladies in the world: my wife and daughters.
The devil turned out to be not a powerful figure but a ruthless but pity, sweaty salesguy selling crap that I stuck in. Need to carry on with the technology mandated in the position, outdating as we speak, making me increasingly unemployable elsewhere without the 10 years hands on coding experience in 15 kinds of 2 - 7 years old technology, with leadership and mentor abilities of course as an essential trait required. Willing to be enthusiastically agile the hell out of it! For free pizza and fruit bowl!
No good path ahead.
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.
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.
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.
Here's one of my latest recordings, if anyone's interested: https://lowveld.bandcamp.com/album/etches.
Musically I think this belongs in the underground - and should stay there.
I'm very interested in the theory behind software & music. Over the years I've mostly focused on the engineering side, but maybe one day I'll document and publish more about it too.
As soon as 4 rolls around, I'm done with the money making portion of the day and the rest is just entirely fun stuff. I couldn't care less if what I'm doing isn't ever going to make money, it's just fun / interesting / satisfying curiosity.
I run - but I know I'm never going to make money running. I climb - but I know I'm never going to make money climbing. I code for fun on my side projects - same deal.
That work mindset gets turned off hard at 4pm.
Maybe that's what programming is to you.
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).
I think you want to embody both awareness and acceptance. And probably make a deliberate choice in the matter instead of just drifting.
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.
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.
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.
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
It used to be such a torture (in my own mind) to constantly trying to come up with a new hustle.
But not anymore. As I got older and after fatherhood, I have learned that balance is everything. Including valueing my time in having fun doing productive things.
If the hacking side project gives me tremendous enjoyment, then it is a win already both from happiness and the “job training” aspect.
As it so happened, I just hang out with my little cousins who are into robotics and so glad that my side projects in the past helped me connect with them, and I was able to give valuable advice. That was a big win for me.
Also, I have learned the value of providing stability for my own family. Something that the childless me never appreciated. Throwing away stability to start a startup has a steep cost these days.
I used to think less about people who check out at 5pm - how can you just leave and not give a shit that the code is a mess? - but as I grew older, I understood that they don't associate their self-worth with work. Their value system is different, and it's got benefits, like better mental health.
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. ;-)
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.
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.
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 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'm not justifying this mindset, which preceded LinkedIn. I don't like it.
You might have been reading all those stories of startups, and now you're stuck in a box shaped like all those stories. That you have to start a startup at all, or that you have to go about it in the way those stories told. You might think that's your only path. But the only limits in this world are the ones we put on ourselves.
Meditate on what you really want, at your core. Start the wheels turning of thinking of ways to get those things that aren't immediately obvious or don't seem likely. Consider a world in which you didn't have fear, doubt, anxiety, or other kinds of limitations. Which path would you choose? What are all the ways you might use to walk that path? You don't need to know the whole path to start walking on it.
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.
As someone who checks out at 5pm, I think you're looking at it from the wrong POV.
The main thing that drives me is the projects I work on in my spare time. I care that _that_ code is a mess. So, I might do a bit of work on that in the morning, but then start my actual paying job at e.g. 8am.
So how can I just leave my hobby project and not give a shit that the code is a mess? Because I get paid to do so, I have to work on whatever my boss wants me to work on because that's my job -- but as soon as 5pm hits I get to think about the stuff I really care about again.
I worked for software/hardware companies for 21 years. Some were stable income for me, but nothing amazing. A few were startups where I worked hard but they didn't go anywhere (fortunately I earned a stable, market-rate income before they failed). One turned out to be reasonably life-changing, and I'm very lucky for that. On and off over that period of time I worked on open source projects, some that didn't go anywhere, some that have been successful.
Right now I'm building something to try to sell. I'm not going to take any VC money or pursue high growth. I'm not chasing the latest whiz-bang AI whatever. I'm building a fairly boring product (that is still fun for me to build), using the tech stack that I want, to the standards of quality that I want. Right now I'm working hard on it, but the goal is that, once it's "done" and has customers (fingers crossed I manage to attract paying customers), I'll be spending no more than 10 hours a week on it (and hopefully less on average). If it "only" gets to $500k/yr in revenue or so, after some number of years running it, I'll consider that a fantastic success. If I can run the entire thing on one or two VMs, and it never grows past that infra-wise, that's a fantastic success.
You can listen to both the angel and the devil and still control your own destiny, outside of the scraps your employer will throw at you. Who knows, though, maybe this idea of mine won't work. But I'm happy I'm giving it a try.
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 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.
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.
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.
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.
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!
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?
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.
In any case, I'm happy to grant you your wish.