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)
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.
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.
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."
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.
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.
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.
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. ;-)
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.
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.
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.
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.