435 comments

[ 22.7 ms ] story [ 861 ms ] thread
> What am I trying to say? I have a programming addiction? (Maybe.)

I think all of us do, to some degree. You have to to endure hours on end staring at a glowing screen and banging your head against a mechanical keyboard.

Not necessarily. At least for those of us from Asian cultures, it's not that unusual to sacrifice and do something you hate or at least are ambivalent towards because it's a well paying stable career.
I love programming. More each day and I’ve done it for decades.

But I think everyone who enjoys the process of squeezing their thoughts through the rigors of a machine is at least a little bit funny in the head. I love it, but it’s bonkers.

I don’t really follow you. This roughly implies everyone is addicted to their jobs…
Or more like the paycheck is an enabler for an unhealthy escape
Seems like an extremely unrealistic representation of people's motivations to work, to me.
There is a group who focusses on the paycheck. In my experience they often aren't the better ones. For many there however is also some intrinsic motivation in doing something "worthwhile" or "challenging"

For me money is a necessity, but not the goal. I could do jobs I care less about for more money (which of course makes my boss happy, that I don't change)

Most people are. Even stuff you might not like, such as pressure, can be addictive.

I know I’ve felt “withdraw” symptoms on extended holidays after intense work sprints. And I consider myself a lazy bastard.

Haha, I don't think you should try to generalize your emotions - "withdrawal" symptoms on vacation could easily just be your stressed out body finally resting, or one of many other emotions. None of what you have said tracks for me. I can shut off work in a minute and I feel glorious when I do it; it's purely a practical thing. I will stop the minute I can, which I seem to be about 30% of the way to
Not generalizing my emotions, there’s even a term for it: workaholic. It’s a thing.

You may not experience it, but your “I can stop whenever I want” kind of phrase doesn’t help you make your point.

This whole conversation is a ridiculous stretch - you just misquoted me to imply I’m a workaholic, and implied everyone else is too. Enough.
I think I might have hit a nerve. Not my intention, sorry.
Let me be crystal clear: most people fucking hate working. Bosses are the worst, the money is the sole reason to do it, and we’d all be happier working way less.

The idea people are “addicted” to working under a capitalist society is absurd; we are forced like prisoners, not free to make the choice ourselves. Or maybe you consider being unhoused and underfed “freedom”.

The “nerve” you’ve hit is that I hate people excusing our disgusting lack of free time in a post scarcity society.

Enjoy your job though, prick

Most people work way more than they need. No one needs a six figures salary for 30 years straight. People just get addicted to the nice, non-necessary things, they can get on such income though. This, and their taste for anything other than working slightly withers away (as it's not practiced, due to lack of time).
Are you fucking serious? Most people are living paycheck to paycheck

This place is a fucking ivory tower huh? You guys are clueless

I meant - most people on this forum. The whole discussion was in the context of programming jobs.
HN is a different bubble than the rest of capitalist society. I get the feeling that most people here enjoy their work and get really well paid for it, so the logic is completely flipped on its head.

But if you're calling me names, then this discussion is really over.

Enjoying programming != enjoying programming as work. Incredibly stupid claim
I’ve been programming professionally for over 25 years. I have not written a line of code for “fun” since I graduated from college.
But did you have fun while being payed to write those lines? I hope so.
It’s not fun or not fun. It’s a necessity like going to the bathroom.

It’s the easiest method I have to support my addiction to food and shelter.

Not OP, but not really. I do not hate it, but enjoyment is not something I get out of coding. It has gotten better over the years, as I have become a better programmer. Liking what you are good at is natural, after all.

Still, I failed to find a career where what I enjoy is tied to what I am getting paid for. I am pretty sure that is the case for most people around the world. Life can be good regardless (and is for me), but actually enjoying what you are doing professionally, that is a cheat code for living well.

This makes me sad.

Do you mean you coded for fun before graduating and not since, or ever?

Like you never coded a little game or a shell function to make your commandline usage easier or anything like that just for your own use, for fun?

Honestly it’s a double edged sword to like coding because then you get opinions about languages.

I could never be a mercenary in anything though. If I didn’t like coding I’d be a destitute individual.

Why would I?

I spent from 1996 (when I graduated) -2012 as a part time fitness instructor, active runner and a weightlifter.

I spent from 1996-2002 and 2006-2012 hanging out with friends and dating (I was married from 2002-2006.

From 2012-2022 I spent my time with family (got remarried in 2012).

By the end of 2022, my wife and I had gotten rid of everything that wouldn’t fit into three suitcases and decided to be “hybrid digital nomads” where we stay in our “vacation home” from October - early February and we fly around to different cities in the US for the other 7 months.

I’ve also taken back up running.

There is so much more to life than pecking on a computer during my free time.

Software development is a means to an end - nothing more.

For you, maybe. Some of us find it a lot more fascinating than that. But whatever works.

Any marriage advice? (Most of my divorced friends would say "Never marry" lol)

What is retirement, if not doing things you enjoy. Coding is unique in its ability that you can even do it as an old man.
Not unique, but it is a nice perk. Poker is a great retirement game for many, and I suspect most programmers would both enjoy it greatly and excel at it.
I can totally relate to this. I find myself forcing my attention away from programming to do other work. Programming is like an infinite game.
OOC, what do you program so much? I usually don't program after work, not because I don't want to, but because I don't have anything to build.
In my younger years my obsession with programming was complex. It was partly an escape, partly a reveling in the godlike powers bestowed upon me by the machine. I think both aspects were unhealthy, and were effective at keeping me from dealing with the more complex realities of developing and maintaining a balanced lifestyle, especially in my social life. I still enjoy writing code, but I could never imagine a return to this extreme focus unless something was out of place elsewhere.
> The respite from programming though lasted maybe about four months after retiring. I started a small project , in part to learn Python, in part to play with e-ink displays. I was back programming (back abusing git) but of course the pressure was off. It both was and wasn’t like the day job I had left behind.

This is one reasons I got disillusioned with FIRE and the concept of early retirement. Programming was my first love. There might be phases where I just get sick of technology, but most of them have proven to be temporary. It's the best, the most versatile medium of my creative energy. I don't plan to stop doing it ever. What I actually dislike is the corporatisation of programming—JIRA Tasks, PRD, Stand-up meetings, Stakeholder meetings.

I don't want early retirement. I want to work in a small team with a good product vision and a strong shipping culture. But it has proven to rare in my professional experience. For me, alternative is to keep taking breaks. Few months, once in a while, to work and experiment on my own ideas. This allows me to keep my creative spirit alive and (possibly) to make money that gives me the freedom to explore them more.

“ I want to work in a small team with a good product vision and a . strong shipping culture.”

That’s really hard to find. Especially if you still want to work regular hours

Speaking as someone planning to "retire" very soon, I don't like that word at all. I'm hardly planning to move to Florida for wife swapping and pickleball with the other oldsters. I'll be doing whatever suits my fancy, including software, albeit sans Jira and keeping GoogSoft suits happy with the proper newspeak.
100% agree. Does anyone know of a word that means "retirement" without the "not working" connotation? I'm in the same camp as someone who is aspiring to "retire early", but it will be more of a "work on whatever I want to" kind of retirement and not "move to Florida" type of retirement.
Don't use the term "retirement." Instead, you're doing a solo startup. Add that it's in stealth mode if you don't feel like talking about your current focus of attention. If I'm reading your comment correctly, it's not even a lie; it sounds like you'd be happy turning a hobby into a business if that's where fate took you.

I "retired" about a year ago after almost 25 years in the industry. My story since then is a lot like that of the author of the article. I've written more code this year for love than I bet I did in 10 years for pay. It's been exactly the retirement I wanted: one of the most productive times of my life.

Self-Employed
Maybe a really easy solution is to incorporate yourself and then just say you started a software company.

That's if you're like me, and you find this question really annoying to explain, and it gets asked constantly.

"Self-employed" sets off a lot of bullshit detectors, because...well, lots of bullshitters use that one.

Or maybe just keep saying programmer, if that's what you're doing. No need to explain in detail how the compensation works (or doesn't exist).

"I retired from corporate, doing my own thing."?

Indeed. There's plenty of wife swapping up for grabs in the Bay Area.
The lack of symmetry bugs me - if a couple swaps wives, why isn't it ever called "husband swapping", and wouldn't the (technically, and politically) correct term be "partner swapping"?

Or maybe it can all be subsumed under "swinging" or whatever the modern term is?

The point of retirement is that you’re free to do whatever you want. I still love programming but having to do it every weekday saps my creativity and muddles it with corporate bs. I have easily a 100 projects I would work on if I had the time and energy that could be freed by my day job
I'm glad I found programming. I'm not sure I would have been very successful at anything else as a career. But the day I retire will be the last line of code I write. I'm planning to have as little involvement with computers as I can after that.
that's what i thought too (i had a decent exit and planned a career change) but it only lasted about a year.
There are many interpretations and meanings of this Japanese phrase called Ikigai but in a basic sense it means "life purpose". Doing something you love, and getting better each day at it is one interpretation I really like. Many people in professions involving workmanship can attest to this.

This coming age of AI is really going to displace a lot of jobs, and make a lot of people unhappy- those who found meaning in their work. But, I feel we need to keep our joy of doing our work, and have that be the driving force, even if a computer can do something better. And this is what they say will be the "artisanal" things that will exist, and be popular to buy.

In the end, I think we just need to enjoy what we do. That's all this life is about.

> This is one reasons I got disillusioned with FIRE and the concept of early retirement.

I think it's totally reasonable to be disillusioned with the "retire early" part of FIRE, but the "financial independence"? That part is golden for everyone.

Being financially independent means you're not scared of being laid off. It means you can walk away from bad bosses or bad companies. It means you can try out a startup if your heart tells you it's the one, but the money they're offering is too far below market.

Of course, getting there through austerity isn't for everyone. I get that. But quite a lot of people think the juice is worth the squeeze.

Agree but you can get there with much less sacrifices if you leave out the "retire early" part. Then, it boils mostly down avoiding lifestyle inflation.
> a small team with a good product vision and a strong shipping culture

I suspect one issue is that this kind of thing is more common in smaller organizations that haven’t evolved a bureaucracy.

The catch is that they also aren’t paying high salaries and just finding their way…

I feel the exact same way, but from the perspective of a researcher. During my high school and undergraduate years I was inspired by stories of researchers at Bell Labs and Xerox PARC who invented so many fundamental technologies and had a profound impact on computing. I was also inspired by the great computers of the past (especially NeXT) and was excited about each and every release of Mac OS X.

Now that I’m more than a decade removed from my undergraduate years, I find myself disillusioned with the state of computing and research these days. Neither Apple nor Microsoft seem to care about pushing personal computing further anymore; it’s about maintaining and strengthening their cash cows. Google, Meta, and Amazon don’t impress me like they did a decade ago, when I used to joyfully study the research papers describing the interesting infrastructure they built. The days of places like Bell Labs and Xerox PARC where researchers generally had free reign to pursue their ideas are long gone; industrial research today is very business-focused, where researchers are required to put the interests of the company ahead of their personal research interests. Academia is no better; the competition is high (especially at research universities), the pay is low (especially at teaching universities), and there are pressures not only to publish regularly, but to raise grant money, which naturally curbs research freedom. This is the world I find myself navigating; I found myself training and striving for a career that no longer exists.

I’m still thinking about long-term plans for me to pursue the type of career that I want despite today’s environment. America’s high cost of living makes FIRE difficult for me unless I decide to “grind Leetcode” and join a FAANG to optimize my compensation, and even that strategy may be obsolete in 2023 due to layoffs and hiring freezes. Alternatively, I’m thinking about one day starting a bootstrapped business, one that is profitable enough to be able to fund my living expenses and to provide healthy wages and benefits for my staff. One day I’ll make enough money to where I can enough savings to be able to pursue my own research projects without having to worry about publish-or-perish pressures or about business matters. I’d like to also teach on the side, though due to low adjunct wages I don’t want to pursue that as my main job.

> I don't want early retirement. I want to work in a small team with a good product vision and a strong shipping culture.

s/work in a small team/lead a company

That's the ideal for me.

I've been really fortunate to have spent most of my career in places with good culture and people (and yes, usually small, but not always). Politics and other corporate bs is hard for people that care because they're just run over by those that don't (which tends to be the default).

It's really easy for companies to just look at programmers as people working on a car assembly line (no disrespect meant). I.e. you just sit at your station and put the wheels on as the next car body comes by. Skill and passion are not in sync with that reality. The number of projects where success depends on skill and passion, and this is actually understood/realized by anyone, isn't large. Starting your own company/business is hard for people that are more of the maker type and less of the business type (not to mention the other risks).

Going to work for a startup isn't necessarily a fix. Lots of startups where you are still a product line worker. That's partly because it's also risky for a startup to rely on being able to find skilled and passionate people.

EDIT: Also happy to read the author has re-kindled his love of programming. I tend to worry that my industry "PTSD" is going to make it such that I can't have fun programming again. As a kid I used to spend endless nights coding with nobody paying me. Somehow money makes it a lot less fun.

(comment deleted)
In my experience they don't get run over, but they can get outnumbered. If you're in a workplace with more than 10% of people that are dishonest or malicious you should look for an exit.

Those companies create worse software and not more reliably or quickly. You can't micromanage into good software.

Sure, to each their own. I quit two years ago and have probably spent a few weeks of that programming.

The place I left gave ICs a high degree of agency, and you run projects yourself, get the resources you need yourself. So the issue was never too much red tape or process. So now doing all that stuff just feels like work again. The programming is ok (just ok) but seriously building something involves all that project stuff. Coordination, setting timelines and milestones, design, testing and on and on.

I think it’s ok to acknowledge that there are other things in life besides programming and software projects, and to therefore move on. I love lots of things!

Sometimes the gum loses flavor. But there’s lots of flavors to try.

> I got disillusioned with FIRE

Maybe the RE part, but definitely not the FI part. In fact if I achieve the FI part I may not even have to go through the RE part and I can keep working for as long as I want at my own pace, conditions, and comfort.

> I’m not sure if that is a good thing. I am back to coding late into the night, and back at it after coffee and an English muffin the following morning (thankfully though I quit the cigarettes decades ago).

*sigh* It's 5AM and I'm out of coffee and cigarettes. At least I found a stupid bug tonight.

I think the author of this blog would have told you to go to bed 5 hours ago and look with fresh eyes in the morning. You’d probably spot the bug instantly.
tip- late night coding is good for creativity

early morning coding fresh after sleep is good for bug-hunting

You found something you enjoyed and turned it into a career. There is no reason why you wouldn't continue to enjoy it, especially with deadlines and all the other stuff that comes with work removed.
I once had a PM who told me coding was just a stepping stone to them in their career. I couldn’t understand, I thought they must not have been a “natural” like me.

Fast forward a few years, after taking on more mentorship roles, then staff responsibilities, then slipping into project oversight roles… She was so right. Coding was a great stepping stone.

Several years ago my father got promoted to some leadership role. In our conversation about it, he told me he had asked to get back closer tech, but his boss declined and said tech specialists are a dime a dozen. Technical leadership is very expensive to find though, and once you find one you don’t let them go back to the production line.

I still occasionally answer an SO question or make a few commits on personal pet projects, but lately I’m just as likely to go fishing instead or make edits to OpenStreetMap.

Programming really is a special kind of career. I can’t imagine making it the only one I ever tried though.

> Technical leadership is very expensive to find though, and once you find one you don’t let them go back to the production line.

I have a friend at our company who is a gifted programmer. He was moved into a management position. He discovered that he hated working in a leadership position. He tried to get them to move him back to an individual contributor position. They refused. He said, move me back or I quit. It took them more than a year to transition him back to an individual contributor role. That was a few years ago and he has been happily plugging along ever since. He says that even after he transitioned back, they kept coming to him to get his opinion on issues, the only way he got them to stop was to completely refuse to respond.

I feel it's completely acceptable to wish to stay in an IC position, but to refuse outright to give advise or share the experience (it's hard to tell from your short paragraph) seems... odd?

It's acceptable to want to stay in a specific role, but I am not certain I feel it's acceptable to eschew an increasing responsibility or mentoring role as you gain experience. That way lies the "genius programmer that works alone and writes code no one else wunderstands".

Saying “no” is the correct answer.

It’s the same as not solving chat request bypassing prioritization.

The company is full of incentives to ask that guy for guidance/things, if he doesn’t say no most or all of the time, he simply won’t have time for his IC role, and would remain a lead just not in name.

It’s hard that it comes to that extreme measure, but if his requests aren’t being heard, it’s either that or leaving. The company has to let him be an IC or explicitly tell him that he can’t stay there as IC, are at least negotiate some timme allocation for those requests and log them

Another simple trick if you don't like saying "no": become a freelancer.

It will never ever occur to anybody in the company that a freelance software dev could possibly be put into a management role, so they won't ask. As opposed to an employed software dev.

Bonus if you're in the EU/UK: in most countries in the EU this will even lead to tax breaks and higher before-tax hourly rates. To the point that you'll make (way) more than your "higher"-up(s).

> It will never ever occur to anybody in the company that a freelance software dev could possibly be put into a management role...

If by "freelancer" you mean "contractor", then this statement is false. I had worked at multiple places in the UK where this happened, I suppose mostly because paying these people a salary would have required an disproportionate amount of money (as opposed to a standard daily rate) - UK taxes are very high in the top bracket.

If by "freelancer" you mean a real freelancer (the guy who has multiple short gigs at the same time, and needs to be constantly on the lookout for new opportunities) then that is already half of a management position, even if you don't have anyone reporting for you.

It is true though that as a contractor one can reasonably easily avoid management duties, and enjoy not having to worry about company politics. The downside is that it is easy to end up in a place where you have to accept that comparably junior people dictate architecture and some tech decisions which you discarded 10 years ago as ineffective, stupid, fad, or all of the above (TDD being a typical example). The upside is that your time at each place is limited anyway, and there is always something to learn...

>TDD being a typical example

Shots fired! I love tests, but I mostly agree with you. The whole idea of 'write your tests first' is great if everything is precisely defined. I find it odd I haven't seen more pragmatism around unit testing in the blogosphere. It's TDD or death out there.

Where not everything is precisely defined but "you know the right outcome when you see it" is where I think snapshot test driven development really shines:

https://hitchdev.com/hitchstory/approach/snapshot-test-drive...

E.g. "define API call -> don't define API response -> write the code that spits out the correct response -> auto-rewrite the test according to the response and commit".

> Bonus if you're in the EU/UK: in most countries in the EU this will even lead to tax breaks and higher before-tax hourly rates.

Having been a contractor in the UK for 5 years, I don't think this is true. Between VAT, Company and Dividend tax, the taxman (HMRC) always gets his share.

I think it's one thing to push back on repeated requests for your input/opinion outside of your role in a way that makes you a "de facto" leader. But I think it's wholly another if you're the person with the best insight, and there is need for your knowledge to be shared. Coders are knowledge workers, not widget makers - they're paid for what they know and can do with that knowledge. This doesn't need to mean you become a manager, join committees, get added to ever-increasing cross-functional project teams.
> But I think it's wholly another if you're the person with the best insight, and there is need for your knowledge to be shared.

But what if you whole day is doing just that? and you just want to spend some time writing some code? Companies are always in need of people to write the code, so there will always be other jobs, obviously it won't pay as much, but self fulfillment is important.

I'm with you, the trade is about theory building, removing ambiguity from requirements, and the update of these, code is just a tool. Still it fells nice building something, it feels nice to see something you build working in prod / to customers. Once base needs are met, it's fine for people to not want more responsibility than necessary.

> I feel it's completely acceptable to wish to stay in an IC position, but to refuse outright to give advise or share the experience (it's hard to tell from your short paragraph) seems... odd?

I think it depends on how much time they expected him to take out of his days. My girlfriend resigned from a job after becoming a go-to person for everything and everyone. It caused her to not have time for her own work, effectively being way underpaid, and being stressed all the time.

Yes, this happens. If one behaves like a pleasant, helpful individual (as one should!), it's a risk. There are only so many hours in the day!

My advice for any such person is to find a way to redirect questions to other capable people (when you're overloaded), or to reframe answers to be more educational. I'm not perfect at it but I'm trying.

Some helpful tips:

- If you're going to give someone instruction, ask them to share their screen while you walk them through the steps. They are far more likely to remember it this way.

- Avoid short answers. Be annoyingly informative when appropriate. Yes, I'm happy to tell you about XYZ but not without giving you way more than you bargained for!

Consider these scenarios. In each scenario, which option would you pick?

A: Look at my notes and figure it out for myself OR get an answer from Annie in 5 seconds

B: Look at my notes and figure it out for myself OR be accosted by Annie for a 30-minute video call where I'm asked to screen share my way through the steps

I think B is more likely to produce self-reliant teammates.

> , but to refuse outright to give advise or share the experience

I think there's mentoring and leadership. These are different. I sure can mentor and help people to better think/program but don't ask me to push a team to meet a deadline they don't want to meet because they warned the marketing department 2 months before that they wouldn't do it. Been there, done that. Once in that position, you're pushing people, you become the bad guy and you have to explain that it's "for the good of the company, because they have to see the big picture, etc", IOW "screw you, I'm the boss". For that you need to be crazy enough to think that what you want is more important than what other humans-like-you are. OK, leadership is not always that and most often, you have to gather enough trust from your team so that from time to time, you can be a pusher. But if you don't have trust and you are always pushed to push, well, welcome to hell, and say goodbye to your health.

It's very different than "let's work together to find the best possible way to solve a problem, taking all the necessary time to produce something reliable".

It can be explained by social anxiety issues, as these people typically prefer to sit in a corner coding and be left alone. Probably a self-reinforcing condition that's difficult to get out of. Just one example I can think of.
This is how toxic middle management is born. Management is not seen as a skill of its own but as a title that obviously everyone should strive for.

Also, "acceptable"? By whom? Why should I care what they think? I want to be engineering software. If they don't like that, they can either deal with it or let me go. Good thing there's plenty of developer jobs as well as corporate bozos to take the coveted management positions.

(comment deleted)
or you're probably not that good programmer...?
Or they are better at both then you, but value different things.

Who can tell?

> "Several years ago my father got promoted to some leadership role. In our conversation about it, he told me he had asked to get back closer tech, but his boss declined and said tech specialists are a dime a dozen. Technical leadership is very expensive to find though, and once you find one you don’t let them go back to the production line."

Ah, the foundational myth of middle management.

We are special and unique, that is why we were chosen not them.
I'm guessing the same story was told 600 years ago in Spain:

"My father, an Inquisitor himself, told me of the time when the Grand Inquisitor promoted him. Ordinary priests are a dime a dozen, the great man said, but it takes special skill to be an Inquisitor. And that's why you never let them go back to the pulpit when you do find a good one."

I’m not sure I follow the analogy here, are you implying technical leadership is committing heinous crimes against humanity?
Or cleansing Christendom of its heresy? Or showing in the wrong sketch, quite contrary to expectations.
(comment deleted)
(comment deleted)
No one expects the Spanish Inquisition
It’s a joke on the original anecdote’s timeless formula of double-filtered appeal to patriarchal authority (the father relaying the wisdom of the boss to the son).
Isn't there a matriarchal equivalency anyway? I always see this sort of comparison made. Any sort of -archy society seems like it'll go to shit.
Middle managers are a dime a dozen. However a good technical lead - who can contribute to the engineering team's discussions _and_ lead the team are very very hard to find.
Really?

IMO there's an awful lot, they just ask for mid 200,000s.

I've met plenty of engineering leaders being paid double that who are not "good at their job."

It's a hard job to do well; it requires you care about technical details but also deal almost exclusively with people. It's a rare person who naturally fits into the "extrovert engineer" role and corporations are shitty about training those who don't fit yet to practice the right behaviors.

Plus, if engineering is "design with constraints" then you are given the extra restraint of headcount and finances.

Where are these people located and how can I take their jobs.

$400,000k for dev + fun at parties, sign me up

Don't even have to take their jobs. Here's one example[1] from the OP's former employer:

> The base pay range for this role is between $196,000 and $299,000, and your base pay will depend on your skills, qualifications, experience, and location. ... employees are eligible for discretionary restricted stock unit awards, and can purchase stock at a discount if voluntarily participating in the Employee Stock Purchase Plan.

[1]: https://careers.apple.com/en-us/details/200442275/aiml-engin...

The most important part of your comment is the distinction between 'management' and 'lead'. Leadership is critically important and very hard to find. Ideally you find a leader who doesn't mind managing, though you're getting into unicorn territory.
Hot take: I think good middle managers are more rare than good technical leads.

"But my manager sucks!" Yes, probably. Part of the reason managers have a bad reputation is that there are so few good ones, and so many bad or mediocre ones, that most people deal with bad ones their entire career. And, since a good manager looks a lot like leadership material if you squint, the great ones often get Peter Principled into being mediocre bosses.

But when you do find a good manager, you realize they have a very specific skill set that is incredibly rare and difficult to master. They multiply the effectiveness of everyone on their team, including those good technical leads, but also the juniors and seniors.

Rule of thumb is the worse an engineer is the sooner they try to make a dash into management or other non-coding role. Doing the job you're not cut for is incredibly stressful and humiliating.

It is important though to not compensate for the humiliation with smugness to those who are good at their job.

It happens before entering the workforce too. I can't tell you how many of my classmates left the EE department for the business school riiiight around the time when circuit parameters went from being scalars to vectors
A cost of bad technical leadership is making it look like all talent is the same.
wouldn't leadership value leadership? us vs them mentality? There are software eng at my company who are much much more valuable than some of the leadership
> in the same way we expect that a retired doctor probably stops performing surgeries and begins to spend more time on the golf course.

My father is a retired doctor. I’ve never known him to play golf, but he works 60 hours a week in the emergency room of the clinic on the local Indian reservation. He claims only working 60 hours a week is retirement for a doctor.

May he enjoy his retirement. Send him some thanks, from the rest of us.
I really enjoyed reading other posts from your blogs as well - https://www.engineersneedart.com/blog/interview/interview.ht...

I have bookmarked many tech blogs, but find it hard to get the time to read or catch up with them. There are so many interesting stories out there. I hope to collect as many cool stories throughout my life and career.

For me, at least, programming is simply the most profitable articulation of an underlying personality trait that involves productivity, play, mischief, sardonicism and critique all together. This is what people mean when they point out that "hacking" isn't about software. The tantalizing just-out-of-reach articulation of a compelling concept. Satiating.
How is sardonicism involved in programming? It is a trait many in tech have, I'm not sure if you're saying that it's positively involved in doing programming....
It's a very effective coping mechanism for dealing with constant problems would be my guess. Here's what GPT 4 has to say on the matter, I think it's pretty hilarious:

"Programmers have such a sunny job, full of rainbows and unicorns, that they've taken to leaving little love notes in the form of sardonic comments within their code. It's their way of whispering sweet nothings to the universe about the sheer joy of tracking down that one pesky, elusive bug at 3 AM, or the pure elation they feel when the system crashes for the hundredth time for no apparent reason. They do it with such grace, wearing a smile that's as bright as their computer screens in a dark room. Indeed, who wouldn't want a slice of that pie?"

I think there are lots of opportunities to be sardonic in programs! Either literally in comments or figuratively in programmatic structures you use, or at a higher level of project design. Any time the system is in a bad state, appearing like it's heading towards a crash, but you've prepared a clause to catch and diffuse the situation it feels a little sardonic to me.
It may describe a baseline cynicism about the problem or situation. It's a healthy skepticism, a low-priority thread on the mental backburner.

Sometime later, something triggers it or an idea related to it. You can instantly jump back to it. You think "Hmm, I wonder if I can try X on it..."

Where X is a technique, method, or process you may have done before, but in a different context.

>The tantalizing just-out-of-reach articulation of a compelling concept.

What out of reach concepts do you have? I've found that, with time, I could code almost anything (barring ultraspecialized programs like FEA analysis etc.). The only thing between me and the finished program is hundreds or thousands of hours of work. I don't see magic in that.

Aim for small things. Creating a small nice pleasant to use intuitive API is like a puzzle. Make a super nice component entity system that 12 year old could use with pleasure. Or a hierarchical finite state machine that an average developer would reach for because of its sheer simplicity instead of creating their own tangled mess out of classes, variables, ifs and loops. Those goals often feel like just out of reach.
Oh - I was trying to gesture at that feeling you get right before you start implementing a solution. The one where you think you see it perfectly and all you need to do is write it down and it will work. It's the feeling you get right before you accidentally stay up until 2am.
I can totally relate. I started programming at around 18, writing games and utilities for DOS and other OSs at the time. I am 56 now and still actively writing code for my own SaaS.

I expect that when I eventually retire, I will end up writing code for Arduino devices and other things because it is what I truly love to do, and I never want to stop learning something new.

This was great to read. This is always how I imagined my career would go, but I don’t hear about it enough. I enjoy my job, and also look forward to having more free time to contribute to various OSS and hobby projects i’ve done over the years.
>Are there younger engineers, new to the career, for whom programming is not merely a job but something they can imagine doing in their spare time?

I'm sure there are, but I don't know any. I have the passion (obsession as my mother called it). I've been fascinated with computers since before 3rd grade when my public elementary school installed a computer lab with TRS-80s. They soon invited me to help teach the "adult" computer class (as a 3rd grader) they offered in the evening to the local community. It was then discovering the world of BBS, then running my own, then coding it to my taste. In college came the internet and the rest is history. I have the theory that it was the timeframe when microcomputers just started to come and grow their legs is what birthed such passion in so many people. I'm not sure how much of it still exists to the current youth generations, but it sure existed in mine.

PS: I do miss those cigarettes.

I am self-taught with computers in the sense that I read every computer book I could find before my first computer at the age of 10, a Commodore VIC-20; everything else came from that. Elementary-school classes on Logo, AP Computer Science in high school, and one one-credit Java class in college are the extent of my formal education in computer science. I've never worked as and have never wanted to be a professional programmer.

I worked through Columbia doing user support for the university's Unix systems group. I got a job on Wall Street like many classmates, but for which the hiring person (an equity analyst covering software companies) was specifically looking for a CS major; I was able to demonstrate that I had the equivalent background thereof.

I have been successful with computers because I enjoy working with them. I enjoy computers because it's a hobby, albeit one that has affected my entire working life. I suspect that I would not enjoy computers as much were it actually my job. Since it isn't, I have the freedom of being able to (for example) write Elisp[1] to improve VM, the Emacs-based email client I've used for almost three decades. While I may contribute my code back to the VM project someday, meanwhile I report to no one and have no deadlines other than my own. That's freedom.

[1] I well remember the epiphany the day in Logo class I realized what recursion is. I still feel like giggling when I find an Elisp task for which recursion is an effective solution.

I started coding because I loved games. Thing was there was no unreal or other frameworks to help out. I was no Carmack writing my own 3d engine. I'm just not good enough in math for all that.

But once I retire I will go back at writing games.

How do we know this whole story isn't AI generated?
Because Glypha was a badass shareware game back in the day. Can’t nobody do that
As for myself, I already know I won’t be programming in retirement. Not because I don’t love programming. I do! But because life is a journey and I know the next phase is teaching and mentoring. I don’t know what it will look like exactly, but I know I won’t be in the driver’s seat.
I've been thinking along these lines, do you have a path in mind for how to get into teaching? What kind of teaching?
A fantastic read, that gives me hope for the next 20 years.

Also congrats for releasing a game in C/SDL in the days of _insert engine here_. A game that appears to have sold some copies.

Once you become good at talking to the computer (coding), it's a very hard habit to lose I feel. I too have never stopped tinkering outside the office clock. I have plenty of little projects that tickle my fancy, but above all keep me interested.

Computers are fascinating and always at the ready for a play: Player 1, $~: _

> But there is something becoming more familiar to me as I go back to the wild west of C programming (where very little happens behind the scenes I might point out - no garbage collection here!).

I share this sentiment. I pursued computer science because of the romanticized notation of tracking every bit and byte and talking directly to the hardware. I know I'm not alone given the popularity of old-school fantasy consoles and consumer microcontrollers, like Arduino.

It saddens me to say but if I were starting over today I might not enter the field professionally. Most modern development is gluing components together and wrangling packages. It's so far removed from the machine and the distance is only growing.

imo a self contained component are the same as bit and byte.

To me, the draw of programming being that it is both a logical puzzle and a constructive endeavor, brings me a lot of joy to be able to see my stuff work. Whether that's manipulating memory bytes or using a package someone else wrote to do something I want, there's little difference in terms of satisfaction.

The most unfulfilling days for me are when my dependencies seem to fall over.

I have a project that only builds in one version of Visual Studio on my machine. I know it's bad, I know I should get to the bottom of it before it becomes a real problem, but it's soul crushing work.

Interestingly as frustrating as this sometimes is I tend to become obsessed with not letting the computer win. So it feels much less like work than some kind of mythical quest with a very shallow plot.
> The most unfulfilling days for me are when my dependencies seem to fall over.

I tend to pick only stuff that is packaged in a distribution, if at all possible. They usually do a decent job at gatekeeping the countless libraries created by people that have no idea on how to make a library.

> I pursued computer science because of the romanticized notation of tracking every bit and byte and talking directly to the hardware.

Isn’t computer science mostly math? Figure people in computer science would be more at home with the abstract stuff like Haskell where you can’t even see the underlying hardware and your programs are expressed as a bunch of (declarative) functions where sequential execution of instructions is a very small part of your programs.

Um, no. At most schools, the only place you might touch something as esoteric as Haskell is in a programming languages class.
At my university haskell was required from the start and used in several courses.
it used to, outside of the us. now everywhere is java 101.
> Most modern development is gluing components together and wrangling packages. It's so far removed from the machine and the distance is only growing.

That’s actually what I love most about things today. Hard components I might want to use probably already have a ready to made library I can start with. Time from inception to prototype to production is so short that it really removes a lot of the tedium. I wish it could be even shorter but a lot of the time I’m writing code is because there isn’t something that meets my specific requirements. I wish AI could fill that gap but it feels like we’re an extremely long way away from that. In other words, the part I enjoy most is the high level problem solving or even coming up with what new requirements might be to solve a problem. The mechanical aspect of realizing the vision can be fun but it can also be quite frustrating / repetitively tedious.

Same for me as well. I don't want to talk to hardware because the ideas I have in my head are so removed from that problem space. I want to build tools to help normal people do stuff or create automation. I fully understand and appreciate that to make all of that work, the low level stuff also needs to be fast and functional, but I'm not the person to make that optimization.

I really enjoy being a web developer despite most of us being the new butt of the so many programmer-centric jokes.

But does the cut-and-paste model of coding scale to 30+ years of developing code? I don't know of any problem domain that's so deep and compelling that I could stay engrossed in solving high-level tasks for that long. Either I have to change domains (as I have maybe 4 times in my 37 years), or vary my routine by occasionally diving into the nitty gritty of low-level code and O/S services.

Being a _user_ of code doesn't appeal to me at all. I work at a big pharma and know lots of biologists and especially chemists who are proficient programmers. They use code (more than craft it), but they're impassioned by the science itself. Coding is merely a tool to them, the means to a more compelling end.

I don't share their perspective, nor do I want to compete in that space, so I get my jollies by learning the info extraction process and diving into the cool, underserved, often complicated parts, like image quantification and pattern enhancement/recognition in raw and dirty data. That often requires some math and some low level bit twiddling, in code and in signals. I can't imagine cutting and pasting my way through that world, nor would I ever want to.

The world I want is where I can build an entire computer by myself from HW synthesis to SW by just telling an AI high level description of how I want the software to be written. Having to domain shift my entire focus is horribly annoying.

When I say cut and paste I mean “import cutting edge compressor” or “import cutting edge probabilistic filter” as building blocks of building a new piece of software.

> I can't imagine cutting and pasting my way through that world, nor would I ever want to.

Personally, I don't do that but I do work with a few people who don't really see a problem with that workflow. I agree with you that it is ultimately flawed since you aren't really learning anything except how to put things together. But we both know what happens when you reach the limit of this workflow, as evidenced by no/low-code tools.

I much prefer to write my own business logic and interface with tools that let me express requirements succinctly and cover the most common pitfalls. If/when those tools are no longer good enough, I have an opportunity to write something tailor made to the problem space that meets the current performance or design needs.

Right now my favorite stack is Laravel, Vue, and Tailwind. Other than Vue, I have very few JS dependencies and I like it that way!

It's not even new. I've been doing this professionally for 15 years, and the "web development isn't real development" was a common attitude at least since I started. If anything, it was worse.
To be clear, I want to be able to program hardware too. I’m talking about end to end system design. Building databases and operating systems that work drastically different from today. It’s really hard (and insanely expensive) for one person to realize a vision of a wide ranging new way of doing things.

NPM is fine but too many people add what should be 20 straightforward copy-pasted lines as an external dependency (lodash being an extreme example).

> It saddens me to say but if I were starting over today I might not enter the field professionally. Most modern development is gluing components together and wrangling packages. It's so far removed from the machine and the distance is only growing.

I don't know what's sadder: That this kind of programming is becoming a lost art, or that nobody seems to care. I got my first job out of college partially because in the interview when I was asked to implement some algorithm XYZ in "any language I choose" I went with X86 assembly and nailed it. Well-performing code was highly valued at that company. Knowing how to ensure your code fit into the cache and your memory accesses stayed on one page were considered critical programming skills.

Now, outside of a few rare embedded or game engine jobs, nobody seems to give a shit about any of this. It's just "glue these APIs and libraries together and ship the resulting crap as soon as it barely runs." Nobody cares about the size of the resulting executable. Nobody cares about or even knows their code's runtime heap footprint. Nobody cares or even measures how many cache misses they're encountering. I feel like an old grandpa even typing this stuff out.

The worst part is that end users are the ones that end up losing. It's their system resources that are ultimately being wasted.

I have known programmers who don't know how a float is represented in memory. I just can't comprehend how they can gloss over basics like that.
And why is that necessary knowledge?

Don't get me wrong, once you go down to embedded you sometimes do need to know and sometimes it just improves your understanding (and it's kinda cool anyway), but if you do high-level work, perhaps web work, all you need to know is the abstract interface of floats as a data type. What operations you can do, what is guaranteed about the result of those operations (loss of precision etc). In other words, why would a Haskell programmer need to know the IEEE FP standard?

Maybe not everyone needs to know, but for example it's important to know about it in ML. You can have overflow, underflow, non-deterministic addition when parallelised, or just need to speed up your network.
Right. You can know these abstract properties though without knowing how a float is actually represented in memory.
because you would know not to represent money as a float in any sort of serious system

or any other value where you have repeated calculations that would introduce errors

You have to understand that float are negative powers of 2 and that conversion from decimal is not as straightforward as for integer: conversion from decimal often leads to loss of precision contrary to what happens for integers.
You don't need to know anything about how they're represented to know they can't represent all decimal values.
Because not caring how FP values are stored and what the implications are (or even not realising that you favorite programming language uses FP by default) is a particularly fast way to become the "minus 10 times programmer".

Storing monetary values as FP is one thing, but I've seen phone numbers and other numeric identifiers (long time ago before PCI-DSS even credit card numbers) stored as FP values, with predictable results.

As long as you know the implications, you don't need to know how the values are stored.

You may say it's easier to know how they are stored, then you can derive the implications anytime you need them. Maybe that works for you, but most people who I know that got this wrong do actually know how FP values are stored, they are just drawing the wrong conclusions. So better focus on the implications, cause it's those that matter.

I already expressed this in the GP comment, and it's a little shocking to see all the replies that didn't actually pick up on that.

Knowing how the values are stored provides you the "why" behind the practical implications. Another example: Half of the range of all values that "float" can store lie between -1.0 and 1.0. Knowing how those values are encoded in memory tells you why.
> Because not caring how FP values are stored and what the implications are (or even not realising that you favorite programming language uses FP by default) is a particularly fast way to become the "minus 10 times programmer".

I don't think that's true at all. You're merely looking at a symptom of someone who is intrinsically a negative performer. But that's rather like assuming that someone with a cough has tuberculosis.

Debugging. If you don't know how your code is translated into CPU ops, you won't be able to recognize the clues that malfunctions almost always provide when code misbehaves. Translators, compilers, libraries, and new code routinely have bugs. Depending on a google search to pin down the source of your troubles often fails, and of course is of no help at all diagnosing your own bugs.

It also depends on your philosophy. I want to master my machine not be its servant.

Guilty. I'm pretty good at my job, but I never learned CS fundamentals and don't work in a context where this matters (I currently work in front-end JS/TS).

I don't think it's worthless knowledge to me, but I think you're a bit blinded by your own context. I have seen many comments on HN bemoaning "Developers who don't even know X", and X is always something different.

I don't think there's a smoking gun for bad developers and it's weird to me when programmers think there is one, tbh. Everyone has gaps in their knowledge, and with something so arcane as programming, it's very easy to have no idea that you're missing some important or "fundamental" piece of knowledge

Here's one take: good developers learn fast, bad developers learn slow. Software is one of the fastest moving fields, so it takes a quick mind to keep up. Clearly, everyone needs some basic knowledge to program, and equally clearly, there will be gaps in every developer's knowledge. When needed, we fill the gaps as quickly as possible. If someone can learn 10x as fast, maybe they only need 1/10th the knowledge base.
That's a good metric, but by smoking gun I was referring to individual concepts.
I generally agree, in other languages it suffices to just tell juniors "don't use floating point if you can avoid it". And integer types are less messy to reason with (just need to learn the 32-bit and 64-bit ranges).

But in your specific case (of JS/TS), _all_ the normal numeric variables are in IEEE 754 floating point...

There's a bit of a renaissance here in Rust, or perhaps this is just my bias. Many people are drawn to the lack of a garbage collector and efficiency of the runtime code. Lots of packages optimize algorithms that are unlikely to be strictly necessary for the task at hand.

I think it will remain niche to care deeply about these things but they aren't forgotten. In my late 30s and finding this type of thing more and more fascinating despite working for companies building criminally inefficient software using Ruby and Python and dozens of microservices.

> That this kind of programming is becoming a lost art, or that nobody seems to care.

I think there are real costs if the level of incompetence adds up over a stack/system. But as a general rule, I don't think this is a sad phenomenon at all. Well, actually, it's fair to feel sad about it, but it should be understood as a form of growth for our society. (Growth is often painful.)

Writing low-level code should be viewed like blacksmithing or any other technology. At one time, it was the cutting edge that enabled new tools to exist. But over time, it's become well understood and abstracted and it's possible for us to build factories that automatically output many of the steel products we need. And now we can mass-produce steel components for more advanced machines that would have been impossible if they had to be forged by hand.

Absolutely correct.

Not to mention most of my time as a "Developer" is spent managing busted CI/CD pipelines, container crap, whatever cloud-yaml things, fighting broken dependencies/build issues, cargo-culting test suites.

I program way more on weekends/nights on toy/tutorial stuff than I do at work, ironically.

My entry to the field was a bit odd. I’ve been a hobbyist since I was a kid, but I never wanted to enter the files professionally, at least not the way I did. I knew I wouldn’t like it.

But my immediate post high school plans fell through I spent a year working crappy jobs until I eventually figured “you know I bet I could get a job as a software developer if I tried”. It surely would do a lot better for paying the bills.

Nowadays I mostly tell people: I didn’t get into programming for the money, but that’s sure as hell why I entered the industry.

Of course, it looks like my little stint is over, but I don’t know what to do now. On paper it’s the only thing I’m qualified for that’s not unskilled labor.

Why is your stint over now?
(comment deleted)
I stopped caring about industry trends and hype years ago. I was able to get away with it by coasting on what I did know for years, but otherwise I’ve been very narrow (not really true, but in the context of the job market it is). Funny enough this was somewhat on purpose as I was planning to leave anyway, but I thought I had a couple more years than I did.

On top of that, the jobs I still see seem want want increasingly obscure specializations I don’t have. I haven’t had a job for over half a year, and there doesn’t seem to be any sign of that changing. The recruiters dried up a while back and I’ve only had sparse interviews, which have been some of the most antagonistic I’ve ever had.

It’s not any particular “type” of company either. Both the tech profit center companies and the tech cost center companies don’t want me.

'System' languages like c / c++ / rust are a natural fit for hobby programming because you're writing something to run on your machine, to scratch your particular itch. All the better if that language is able to run on a little microcontroller and move an actuator or what have you.

I say that to contrast with 'application' languages like java, nodejs, or whatever. I'm not saying hobbiest stuff doesn't get written in those but you're a lot less likely to see an OSS spring or react app on someone's github than you're likely to see some cool little command line program that does one small thing.

I've noticed the same transition away from wrenching your own low-level code to making high-level calls to routines written by others. Maybe that's partly because my employer (a big pharma) tends to attract either IT types or bench scientists, but few who are pure computist CS types inclined to get their fingernails dirty with bit twiddling. After 17 years working in biomedical R&D, each time a low-level CS topic happens to arise, I'm surprised again by how much it resonates with me and attracts my rapt attention. Alas, because pharmas seldom hire CS grads, there seem to be few with whom I can share my glee.

Or maybe today's CS grads speak a different language too.

> I am not sure though if this is still the case for software engineers. Are there younger engineers, new to the career, for whom programming is not merely a job but something they can imagine doing in their spare time? I think I met a few as I was winding down my career. I do feel though that back around 1988 or so when I started getting serious into programming that all fellow programmers I met were also doing it with a kind of passion. How is it you can love a machine?

As someone who went into software development because it was my passion and my hobby, its always disappointing how often that isn't the case for so many people in this industry. It's draining actually; The lack of enthusiasm and genuine interest is replaced by a clock-in and clock-out mentality. Bootcamps have just become farms for people who need a job, but not those who really want this job.

I want to work with more people who LOVE software and find the development of machines and the code that runs on them as fascinating as I do. Unfortunately, its less and less these days.

While I certainly clock in and clock out for my day job which is mostly writing crud apps, I still am passionate about programming. I'm just also more passionate about things like family.
Passion for working is different then coding or hacking on stuff or w/e you call it.

Personally, I like learning how things work and doing things at my own pace. Expecting passion for integrating SaaS apis and working with legacy code is not the tech that got me interested, I want to clock out of that ASAP.

My passion was sucked away by leetcode interviews, BS management processes, writing more JIRA tickets than code and ineffective management mistakenly thinking PIPs will somehow produce better output and improve team morale.

The reality is that this industry operates with a factory worker mentality. It is no surprise to me that young people don't care about programming. It just isn't valued.

I had this attitude in college. I wasn’t a CS major, but I really enjoyed programming. I was floored by how many CS majors seemed to not enjoy the discipline.

My interest in computers and programming hasn’t waned. But with every passing year, I have become more invested in my relationships, obligations, health, and other hobbies. So programming is a much smaller slice of the pie these days.

I still think of myself as an interested and enthusiastic programmer, but I will admit that my interest and enthusiasm pales in comparison to my hobbyist coworkers.

That's well said... I feel this way even about pure fun pursuits like video games. Yeah, I still like video games, but I also like time with my daughter and wife or getting outside and playing sports or a bunch of other things I didn't use to do that kind of crowd out a well I've gone to many, many times anyway.
I think video games (like movies, books, etc) are a different kind: they are about consuming, while programming (electronics, carpentry, etc) is about creating.

Some games, like Sim City or Factorio, sort of blur the line though.

The phenomenon is mostly the same though: something I’ve enjoyed for a long time doesn’t have the same prominence in my life anymore because of other things I’ve taken an interest in.
Games are somewhere in between, you are engaged in the doing of the game and that itself can be creative and involve problem solving. Certainly moreso than TV, but less so than a craft of some kind.
The CS degree became the most popular at my school in a short period of time. I was told as recently as 25 years ago, hardly anyone was in the program so it's reasonable to assume that CS itself didn't change but the demand did.

My take on students in the program is that a CS engineering degree is viewed the way a business degree might have been for a different industry like finance. It's a ticket into a high paying, tech job. From there, many want to climb the corporate ladder and move into management. There are people who like the topic but also quite a few who treat it as a corporate credential. I think this second group is a very recent development that only started happening in the last decade or so.

It's been nearly a quarter century since I began university as a CS major. I had been hobby coding for a couple years and the courses were not interesting at all to me compared to actually building things. So, I decided to get a gig writing code. It was sort of a part-time job ahead of when people normally would get an internship (which back then anyway, was not common in first 1-2 years). This job was excruciating. I realized I had no interest in writing code for other people/companies/etc. but my hobby was really building things that I thought were interesting. Anyways, I switched majors and continue to code as a hobby/entrepreneur and have continued to enjoy it. I really don't think I'd like it as a hobby if I went into the profession.
At least where I work, it's hard to have passion given the fundamental issues with the codebase that there's never any time or money to address. It's like being on a ship pockmarked with holes and water coming in, that by all rights should be sinking, but is kept going by the endless pockets of our customers paying us to man the various pumps and keep the engines from flooding. And of course throw on new features that create yet more holes that there's no time or money to fix. However there's never any money to patch said holes, despite the buckets that get dumped on manning the pumps on a daily basis. The ship does something important, so you can take some pride in fulfilling the mission in spite of circumstances, but that tiny sliver of satisfaction is all there is.

If you're passionate about the mission/coding you will just produce a lot of impotent anger, because there's no way an IC is going to restructure the program given the layers of bureaucracy in the way. Maybe if you went management and then spent a decade or two climbing the corporate ladder, and even then you'll run into brand new managerial constraints. So if you're going to stick around, you learn to detach. It's one of the many reasons I plan to have a new job by Christmas :)

I have a similar experience. Working as a programmer is what killed my joy of programming. When I’m done working, I don’t want to look at a computer anymore. Or rather I can’t because I’m exhausted of all the firefighting and bullshit I have to go through for a paycheck.

My most enjoyable moments are the times when I’m in between jobs which I try and stretch for as long as I can (months) and which make me start new side projects just for the fun and enjoyment of it. But once I’m back to the grindstone, I start questioning my life again and wish I was doing anything else than programming.

I think turning a hobby into a career is a good way to ruin that hobby, so I can understand clock punchers and sometimes wish I could just “turn it off” and become one. It would save me a lot of frustration, anger, and unhappiness.

> replaced by a clock-in and clock-out mentality

I started as a software engineer who was "passionate about software" and could see my life revolving around it. The change in my mindset towards this, that gradually happened few years ago, i.e. the "clock-in and clock-out mentality" is one of the best changes in my life!

It always shocks me to see such sentiments from people. I mean how difficult is it for people to comprehend that that are too many kinds of people out there and hence too many kinds of software engineers out there!

Clock-in, clock-out doesn't mean these software engineers don't like the work they do, or do not write software that is good, or that they do not take pride in, or they do not feel responsible for it. Anyway that doesn't mean every other free hour, or any free hour in their lives, away from that day job (which is software engineering) have to be about software or code, or hell even an hour have to be about software.

Your job, your profession doesn't have to be your passion! Not everybody needs to be an artist, or a software artist (if I can say so)! There is a work that needs to be done and there are people who can do this and they do this and it can be just that, nothing more.

Did you every think about yourself, how you got into software engineering? Did you really always want this trade - truly? Was this genetic in some way? Or some kind of divine intervention? I mean I know I am getting facetious here with this analogy but just look at it before pointing a finger to a whole new generation of people who are maybe just different.

I kinda disliked it, at the beginning of my career, when I saw my engineering peers moving into finance, MBAs and what not, but slowly I have started to appreciate it as I am getting this idea sunk into me deeper - work is work, nothing else. There is whole lot of rest of the life out there. Go where you want, how you want to, immerse yourself into something only as much you want, there doesn't have to be a scale of "passion" you have to conform to.

It is so tiring and frustrating to keep encountering this mindset so often. Luckily my generation is genuinely starting to stop giving a fuck about this and the newer generation is more vigorous in rejecting of "your work has to be your passion" regressive mindset.

I understand this point of view. Unfortunately, for those who entered computing out of a passion for it, it’s difficult to work for employers or managers where computing isn’t a passion. This leads to all sorts of practices that suck the joy out of programming (e.g., Leetcode, meetings, KPIs, PIPs, certain design decisions, etc.), reducing it to a corporate “monkey dance.” Maybe I have rose-colored glasses, or maybe I’m simply expecting too much from employment, but it seems to me that back in the 80s and 90s there was a lot more passion in the field compared to today. The pressure and the constraints are enough to make me want to change occupations at times away from computing and treat it as solely a hobby or as a side venture, except I can’t think of any other occupation that pays enough to live in America’s expensive cities that doesn’t require returning to graduate school and getting into five or six more figures of debt for a professional degree.
Leetcode is actually one of the things that makes me feel energized about programming... it's just the pure problem-solving part without logging, legacy software constraints, tedious debates about code styling, and the other lame parts of the job.
Definitely worth checking out ICPC problems if you like Leetcode. IPSC is another good one.
I think you're getting vloser to the root issue.

You can work with passionate people. You can work for a large corporate, for a huge paycheck and stock options. Pick one.

I work for a small company, and I make a great living, but it's a fraction of a fang salary, and there is no stock to option.

On the upside I'm responsible for my code base, I work on whatever I like, (which largely overlaps with customer needs since I like getting paid.) I rarely have a zoom meeting [1], I have in-person catch-up with colleagues once a month, usually at a restaurant over a meal.

The rest of the time we gave informal chat, we push the boundaries of the possible, we experiment, try out big ideas,and generally it's still enough fun to get me out I bed in the morning.

[1] I have a few corporate customers. They exist to remind me why I don't work for a corporate. We have a weekly zoom catchup meeting. Their two lead programmers go from meeting to meeting. Its hilarious and I mock them ceaselessly for it.

But they get paid a lot more than I do, and frankly they're welcome to it.

And clearly I'm not living in San Francisco ;)

(comment deleted)
Small companies are where the fun software work is for sure. That has been my secret sauce for a while.

It is the corporate environments and the entanglement of Business BS that ruins software work for me.

I hear you and share the sentiment (for the most part). I don't understand what's with leetcode. Granted it's not the best for way to judge the capabilities of a programmer, but then what is? A design round can be gamed as much as an algorithmic round can be. At least with leetcode, people become aware of different ways of thinking. By different ways, I don't mean different algorithms. I mean, given a base set of capabilities (algos), how to use them effectively to solve a much more diverse set of problems. This kind of pattern almost always exists in my day to day job. The constraints are limited, and I need to figure out an effective way forward.
It’s not Leetcode in of itself that I hate; in fact, I enjoy programming challenges such as Project Euler and Advent of Code, and I occasionally read my Knuth volumes for fun. It’s the interview process that sucks the fun out of it, where you have to compete against those who just seem to eat, sleep, and drink Leetcode. It reminds me of my high school days when I stressed out over grades and SAT scores. I understand that for highly-desirable companies there needs to be some mechanism for culling the mass number of applications they receive, but when just about every company seemingly asks difficult Leetcode questions even if the job doesn’t require sophisticated algorithms, it’s very demoralizing. I’m getting tired of monkey dancing and I’m researching alternative ways of making a living.
Unfortunately that's true. I think he companies can ask interesting questions that are not in leetcode, but it's basically a game where the companies make up new questions and they get added to leetcode. I don't think any company wants to spend their employees fighting a battle that's not worth it.
Plus an interest in developing one's career eventually means focusing on things other than growing slightly better at writing code (such as mentoring, designs, apportioning work, working with many stakeholders, and so on).
Your Wwrk should be a passion in your life, not the only passion.

People often assume that "work should be your passion" means that it should be the singular one.

It's my passion, but I still don't being work home, even if I work on related (if distantly) hobbies in my free time (and at work too sometimes)

"Work is work" is a perfectly fair conclusion. It works pretty well (so to speak) and you can live comfortably like that. Many people do.

On the other hand, there's something that eats at me all the time: the fact that a huge portion of my life is spent on work. If I had to choose between zoning out for 8 hours a day vs working towards something I care about for 10+ hours a day, I can't help but feel like the latter just sounds better. Maybe not easy to attain, but definitely better.

The parent commenter wrote:

> Clock-in, clock-out doesn't mean these software engineers don't like the work they do, or do not write software that is good, or that they do not take pride in, or they do not feel responsible for it.

I don't think "zoning out for 8 hours a day" is a fair representation of that.

Programming in your free time isn't "work", though. The people I've worked with who aren't programming in their free time have all been worse than the ones who did, which really isn't a big surprise.

It's not hard for me to understand why someone would want to only develop software during work hours, but that doesn't mean I have to force myself to like working with them as much as I like working with people who do engage with programming outside of work.

> I mean how difficult is it for people to comprehend that that are too many kinds of people out there and hence too many kinds of software engineers out there!

How difficult is it to accept that if you're not doing much to become better at your craft you'll also likely not be deemed as good as your peers who are? I don't know why people who admit to not caring as much as others about growing their skills and expressing enthusiasm about programming are so offended that some people would rather work with people who are doing those things.

All things being equal I'd rather work with someone who can tell me about their weekend project on Monday.

P.S.: If someone said "I don't like working with people who program in their spare time" that's also fine. We don't all have to like working with each other and pretending there is some kind of fairness equalizer that makes everyone as good as everyone else helps no one. If work is truly just work, just do your work and accept that some people don't like your attitude.

My younger self was loathe to programming. It was just a job for me, clock in clock out as you say. I was always in this zone of product managers and managers are superior as they were always in some meetings and it gave me the impression that important work gets done in meetings. I hated being a lowly engineer right from the start.

Only when I got into those meeting rooms, did I have a rude awakening. I realized the value of shipping software. I rolled up my sleeves and started getting back into building software, reluctantly initially but then I fell in love with the craft eventually.

Today if I find anyone who is getting disillusioned as I was, I try to educate them and help them find the joy in shipping software. Am not sure if it has really helped anyone, but I think it's the right thing to do.

I think there's a number of hours a week I want to spend writing code, but while it's more than 10 it's less than 40.

Above and beyond that, I love software, but I don't love Zoom calls, on-call shifts, unnecessarily annoying processes that I'm not allowed to automate, Slack messages, KPIs, objectives that combine vagueness about what we're doing with strict rules about what we're not allowed to touch, horrific dynamically typed JS code where half the arguments to a function are obscure mashed-together objects, over-specified tickets that leave no room for creativity, trying to jam my code into a service where it doesn't fit because leadership wants to encourage code reuse but doesn't understand DRY, or anything else that makes up the actual profession of software engineering.

That's all not programming. I absolutely hate the corporate working style.

The programming part in itself is always interesting to me, because regardless of who sets the constraints (me in a hobby project or the leadership in a company), they are what make the problem challenging and exciting.

I work for 40 hours a week but I'm pretty sure only 2 are writing code.

That's the problem. I'd happily write code for more hours

I think in this career it’s possible to optimize for 3 levers - WLB, money, and fun work. If you truly want to code a lot, a startup is the place, but you will earn less money and work more hours. Big tech offers big money and good WLB but often at the sacrifice of interesting work.
In my experience, most of my coworkers have been passionate about some aspects of software development at least.

People aren't always passionate about the projects we work on at work, but most are passionate about things like software craftmanship, quality, or maybe just technology itself, or the problem solving aspect, or some are perpetually in love with how software allows you to create almost anything out of nothing.

This is largely the result of one thing; Money.

The past few years have seen salaries climb to what could even be claimed as crazy levels, when compared to what other professionals make, esp non CS engineers. Compounded even more by the portrayal of the software dev lifestyle. Working from home, or being in an office with lots of free perks.

This naturally led to lots of people wanting in.

I like you, originally got into programming as a career as it was what I loved doing, it was a given I would go that route. This was at a time where engineers made far less than they do today.

Maybe salaries are crazy in Silicon Valley, but in Europe I really don't see this. I got a decent starting salary 25 years ago but having remained in a technical role I've never got more than minimal pay rises. I now earn way less than my contemporaries from University who went into other fields. And if I look around for job vacancies, they're never offering big money, certainly never close to 6 figures. Yet the perception in the wider public seems to be that CS professionals have loads of money even here.
I mean... I don't know, I've done this as a full-time job for 10 years already. I still like it but I have other stuff going on I'm interested in and it's hard to sustain the same level of enthusiasm after that much time. Even in a career like acting or pro sports a lot of people eventually are just working for a paycheck and not really sustained by a passion for their work.
I'm one of those folks who loved writing code before I realized people would pay you to write code. As a result it has been my recreation for a long time.

A surprising number of acquaintances of mine have failed at retirement[1]. That has never been my problem :-). That said, I still do consulting because it lets me play with equipment that I might not otherwise decide to buy (like million $ RF labs :-)) However I've structured it to take a back seat to my own projects and the opportunities as they present to go camping or on other adventures.

I also know a bunch of people who never wanted to see a computer again after they didn't need to work, one of whom actually went back and got a degree in creative writing because they really wanted to be a writer all along.

It is also super helpful to have a spouse or partner you like to hang out with. One friend of mine opened an office so that he could be out of the house sometimes when things got too hectic.

All good problems to have.

[1] To fail at retirement is to have the resources to pay all the bills and do fun things without "working" but getting bored from the lack of interesting challenges and so going back into the workforce anyway.

I have loved programming (literally) my entire life. Some of the books I learned to read on was TS-2068 BASIC program listings in kindergarten.

Luckily for me, before I got too far down the road into choosing a major, it became clear to me that I would never love getting paid to program. Writing code as a career was not going to appeal to me. Being able to keep it as a hobby, where I can choose how much time I put into it, has kept me happy.

I will always wonder about "the road not taken", but I do think others are coming to that realization.

There are a few old-adage counterpoints here, such as: don't make your passion/hobby your job, have hobbies outside of your work, etc. But you also touch on something that has surfaced as the money in tech has grown and become much more loud in the last few decades.

> Bootcamps have just become farms for people who need a job, but not those who really want this job.

This isn't exclusive to bootcamps - they just happen to be the most expedient way to act on particular desire. The real problem is how LOUD money has become in 'tech' in the last several decades. When I started undergrad ~10 years ago, at a small school not known for anything Math or CS, there were still a lot of students who entered the CS program because they heard, from their family the internet or the world at large, that it was "a good job". (This also stems from college being seen as 'job prospect' improvement as opposed to something for learning, but that discussion lies elsewhere.)

I got lucky that I liked it. Most of them would drop out of the program / transfer to a different area of focus within a year or so. There were probably somewhere around 50-60 people in my low level CS courses. My graduating CS cohort was 9.

Despite liking it, I still find little desire to tinker on things outside of work. A large part of it is that it _is_ my job. I don't want to work, then go home and 'work' for 'fun'.

The other part of it is, as mentioned by others here, the parts of software a lot of us enjoy the most aren't usually what we get to focus on, in one way or another.

> I want to work with more people who LOVE software and find the development of machines and the code that runs on them as fascinating as I do. Unfortunately, its less and less these days.

I get the impression most of this is going to be exclusive to small projects, teams, and in particular startups. Bigger operations are going to prefer prioritizing the more 'stable' or boring sides of software.

Just a small note… Making my programming hobby into a job has resulted in a wonderful and rewarding career for me. I’ve now been coding professionally for around 25 years. I go through waves, but you’ll often find me coding in my spare time before work, after work, or on the weekends. I do much of the stuff this author mentions too, such as designing and 3D printing parts for repairs around the house.

Anyway, to each their own, but I purposely made my hobby my career and I believe I’ve benefited greatly from that.

And if that has worked out for you, that's great! It's not wise to make generalizations about this kind of thing.

To be clear, I think using what I said in the first bit against the author or comment I replied to is kind of side-stepping the real issue. The first of my comment essentially translates to: turning a hobby into a profession is a high risk, high reward scenario. It can work out fantastic (as in your case) or you can come to hate something you used to enjoy.

Programming-adjacent things, I can enjoy. I like puzzles, I like factory building games, I could see myself building robots or getting into 3D printing random bits. But I don't think that I would ever sit down and write a software library outside of work without a strong personal incentive. I'd just rather spend my time on other things I enjoy equally as much.

> Despite liking it, I still find little desire to tinker on things outside of work. A large part of it is that it _is_ my job. I don't want to work, then go home and 'work' for 'fun'.

I am the same way, but when I take 5-week long vacations I usually start to tinker with stuff on week 3. So it takes me about 2 weeks to detox from job grinding

Funny to realise the best thing my job could do for employee training is to just give me more vacation. Not like they give me any official training though. They let people occasionally go to conferences but I don't really like those, so I don't

I think, as you move on to higher and higher paying positions, you slowly start being surrounded by people that optimize for money, instead of skill.
I'm really, genuinely happy for you that the thing you're passionate about is something you're good at and is extremely lucrative, but if I tried to make a living doing what I'm passionate about I'd live in a cardboard box. The reality is that software eating the world (and admittedly a number of other things, but this is a big one) have made it much, much harder to make a living doing just about anything else. I got a job in software development because I was good enough at it and I needed to pay the loans from pursuing my passion. I continue doing software development because it's a way to eventually maybe escape capitalism without swallowing a bullet.
What I tell people who get into software because they need a job is always that the industry also needs people with quality assurance and management skills. Not because I want to offload people who are just looking for a quick buck onto those fields, but because I sometimes find that people with the right skills just take the long way around to transition into those roles. (I've even seen this happen once with a UX designer, but I think artistic people mostly know to try for those roles.) People don't really consider the fact that it is a successful industry, but there are more roles in the industry than just developer. When the company I'm part of was a small startup, it was hard to find good people who were interested in taking on entry-level QA/scrum master positions.
I like to program as a hobby, but I still maintain a clock-in-clock-out mentality. If I didn't, my work would own my life. and why would I give that to my employer for free?

You can't expect to work with people who LOVE their work. That's just not how the world is set up. People gotta eat, so they take the least bad path to that. I can entirely understand why someone would pragmatically choose this career regardless of their lack of enthusiasm for it.

> How is it you can love a machine?

How can a child fall into programming when the computer yells at you, with cryptic messages, uncomprehensible for a child, moreso since I was French-speaking only. “ERROR!” It even accuses you: “YOU are about to reformat this DISK. Do you want to proceed?” (7-year-old me looking up “proceed” in the dictionary, missing “reformat”. Ah, fdisk, so many nights crying that I had lost my computer).

But, speaking from experience: At least it’s your fault. You can do something about it.

Now compare to the sand pit at school: You play marbles with a girl, if she loses she goes crying to the teacher. It’s not your fault, you followed the rules, teacher tells you off, ah, gotta learn the rules of life. “Girls have cooties” is the most funny self-reflection on my childhood. There was no way as a child to learn navigating that complex rules of social precedence, implicit expectations, social cues, untold obvious rules. Even today: I’m bad at office politics, so I’m a CEO and make a million a year.

At least, with computers, when it doesn’t work: It’s my fault. I can do something about it. Same with business. It’s my fault. A provider defects? Still my fault. Economic crisis? Still more my fault than playing by the rules in the sandpit and being told off.

But people? I need five times my IQ.

What's there to love nowadays when it comes to software? I'm genuinely asking. What's there to love in making a company worth $2 trillion into becoming, what? A $3 trillion company? What's there to love in helping with making a tech dystopia more and more a reality each and every day? The dream of the '90s - early 2000s is well and truly dead, even in Portland.
Some believe that they’re working against that, however misguided it may be.
Not all programming has to be for some megacorp. Clever solutions to (say) Advent of Code problems bring a smile to my face but they don't bring any sort of dystopia closer.
I think of it as:

When people didn't know what to do in the 90's, they went into e.g. advertising or banking. They just wanted a job, advertising was big, seems fun, let's do that. Now those kinds of people "get into tech because you can earn a lot". So you get people who focus more on what they can extract rather than the craft. They arrive, do a job, pretend to be value adders because it's good for bonuses, go home to do what they really want to do.

I guess that's ok, it takes all kinds and it's a big world. But the passionate, the people who love to create and love to refine and want to contribute and make a mark, those are my people. I think they're more likely to be there when you're in the first part of a company's life, before the extractors arrive. Right now I work with many of the builders and it's just wonderful.

I also think that as companies change, get more sluggish and require more paperwork, passion goes out the window and the organisational imperative drives the experience.

In my experience, people staying in the field as developpers for 5~10 years have a genuine interest in the trade.

It might be different if they have some other personal/skill issue, but I've seen anyone doing a decent job for a few years get a path to either management, PM or something more "businessy", and in effect many PMs around me started as programmers. That's where I see the natural filtration of those who actualy saw it as a career and not just as a starting job (pay is usually not that different, or better when you go to a businessy path).

Now, that doesn't mean they (we) don't have a clock-in/clock-out mentality. E.g. I want to have multiple hobbies, and programming is only one of them. I deeply respect people who breath programming day-in day-out, but don't see it as an ideal or something to long for everyone. That's where I'm a bit sad it actively disappoints or drains your energy. I hope you'll find a happy place with people you enjoy working with !

As a young software engineer.. I had an insane amount of passion right until I got into the workforce. As a kid hacking around was great and I thought that's what the job would be like. As soon as I entered the workforce it was pretty apparent that it's not about creativity, curiosity and being passionate and knowledgeable. It's about being agile and delivering quickly, quantity over quality, being good at talking, socializing and networking. And all the older people in the jobs I've worked with were definitely not passionate, they struggled along trying to do what they could to somewhat do the required tasks of the job. I'm still passionate about it but now mostly on weekends when I can use the two days to work on my own side projects. But i think an important point is also, we younger people have a pretty bleak outlook and seemingly uncertain future ahead. With covid lately and other challenges like AI and whatnot there may just be no time to be passionate because it is time spent worrying.
> With covid lately and other challenges like AI and whatnot there may just be no time to be passionate because it is time spent worrying.

It was always like that, it's basically the human condition. You may choose not to worry and live your life how you'd want it to be lived. You might get crushed in the process, though. If you don't, you'll die of old age anyway, but the overall ride may be more comfortable.

I think one would have to be mad to love many ordinary software jobs out there. Being a cog in the machine, with average salary, and a job to maintain boring legacy apps, now that really doesn't sound fun to me. It might be a decent job, but not something to love.
(comment deleted)
I agree. I understand there’s a diverse set of people in the world, with various degrees of interest and passion in their work. But I only much prefer to work with people who are intensely attracted to their work. It’s contagious. Passion breeds passion, and too much “balance” leads to people being ambivalent about work.
> I want to work with more people who LOVE software and find the development of machines and the code that runs on them as fascinating as I do. Unfortunately, its less and less these days.

While I like software I'm beginning to see it as a rather bad career. While you make more money early in the career, you stop doing so rather fast and other jobs catch up quite quickly and surpass you.

I guess there's always the exception company, etc. but as a non-US career, it can get taxing to see de-growth.

https://whoisnnamdi.com/never-enough-developers/ was a neat read along the same lines.

Wow, that's depressing. So that seems to suggest that assuming I am smart (which I'd like to think I am), I should have already ditched software engineering and gone into a different field altogether.

It's got some interesting points. I'd love to hear more about their assertion of how someone who is a fast learner benefits from a more stable field. It sort of makes sense as they wrote it but I'd like to read more about it.

Here I thought I was always going to do software in some capacity as long as I was working professionally, but maybe I really shouldn't. No idea what that would be though. Just going into management isn't it, at least not for me.

It is depressing and I think I'm starting to see it around me. Many (bad and good) devs I know are ditching software development per se and moving into related areas (management, startups, compliance, etc) where experience and business know how matters more.

Because... while there is such a thing as software development experience, it's not that relevant for the majority of projects. Somebody sharp with less experience will more or less compete head-on.

I genuinely enjoy writing code at work (the same way I enjoy doing crossword puzzles), but I literally never do it in my spare time. I already spend a greater number of waking hours in front of my computer than I do with my family (or playing music or mountain biking or…), so even though writing code at home isn’t on my list of priorities it doesn’t mean I lack of enthusiasm, it just means that itch is already being scratched.
When a hobby becomes a job, it's now work. Do you really wanna do more work in your extremely limited leisure time?

Think esports pros, playing games used to be a break, but after working 8+ hours a day. It's no longer that relaxing fun activity.

You’re looking at it wrong. Some people really love flying planes. Some pilots clock off and go straight home to not think about their jobs until they’re back. If you want to work with people like that, look at the programming equivalent of your local airshow, not SFO.
The lack of enthusiasm and genuine interest is replaced by a clock-in and clock-out mentality.

In my experience people who treat programming as a job rather than a passion often build better apps (note that this is different to saying they write better code..). They don't try all the latest shiny things, they treat things like tests and docs as a boring necessessity rather than something they can ignore, they go for simple solutions they can think about less over complex abstractions that require lots of time. They're also happy to stick with something a bit dull like maintaining an old app so long as their pay keeps coming.

Passionate and enthusiastic devs are definitely more fun to work with, but if I'm going to be on a team with 6 or 7 others for a couple of years I would rather not come in to work to be faced with someone's 'clever' idea that they opened a PR for at 2am every day.

As much as I am a programming enthusiast, since I started working I really think 40-50 hours of staring at a screen is enough (if not way too much).

Especially if you're overweight, spending more time sitting behind a desk is just a poor life choice.

I used to be _into it_. Self taught, burning the midnight oil, loved the challenges, loved the highs.

But canceled projects, inept managers and deadend startups led by brain dead CEOs knocked it all out of me. I’m heading into my 40s and I’m officially a clock puncher. Could not care less who knows it.

I wish I could work somewhere that would just get the fuck out of my way and let me build, fix and make, but tech is full of people riding on the coat tails of engineers now, pretending we’re all on equal footing. We’re not. We don’t need the middle managers and HRs and dozen VPs. We just need some good designers and some good engineers and we can blow peoples’ minds.

But makers making things makes people who can’t make anything uncomfortable.

> The lack of enthusiasm and genuine interest is replaced by a clock-in and clock-out mentality.

There's nothing incompatible about those two things.

I get frustrated by how much "math" is a dirty word in engineering circles.

There have been plenty of times where I have felt that utilizing formal methods would benefit some problematic patch of code, but when I suggest something like TLA+ or Isabelle, every engineer in the room will wince at me and act like I asked them to solve the wave equation. It'll usually be dismissed in some form of "we don't want to force every engineer to learn all that math".

It's frustrating to me because, I mean, we're engineers. Any high school kid can learn to program for free on YouTube these days. If we're not utilizing theory, then what exactly are we doing to earn our ridiculous salaries?

I hope I get to retire with enough energy to have hobbies.

Many family members didn't make it to an age that they could enjoy retirement. The certainly didn't have the financial sense to make much of it.

so this guy never had to deal with leetcode BS