Hacker News new | past | comments | ask | show | jobs | submit login
Same Stop: Life after 26 years as a programmer for Apple (engineersneedart.com)
842 points by chmaynard on May 22, 2023 | hide | past | favorite | 424 comments



In 2 days time I'll mark my 27th year as a professional programmer (and just over 40 years since I started programming). I've worked in small companies, big companies, and mega-corporations. I've been a programmer, manager, team lead and CTO. And in doing so I discovered that I don't like managing people, I don't like meetings, and I don't like paperwork. I like long periods of focus.

So I'm a software dev/architect again, working in esoteric and interesting spaces, and will continue to do so until I "retire" (meaning that I switch to full time on my open source projects).


I used to love the long periods of focus in my 20s, but ever since more life started happening, I can't do those anymore. It turns out my stress tolerance is incredibly low and when the life outside my work is not completely in order (like it rarely is after the 20s), being able to get into the flow state gets very difficult.

I wish I was one of those people who could just forget the problems at home, etc. when they sit in front of the computer and start coding, but I can't, and as a result my ability to focused work has gone down a lot, and nowadays I do more "people work" simply because that's easier to do when my head is not in it 100%.


On flow: back when I started my blog (2004) I soon realized that nothing had ever turned on the "flow switch" as predictably as preparing and publishing posts: for 4-6 hours/day, 5-6 days/week, I was in heaven.

Reading the comments on vjk800's comment led me to focus on my state of mind today (I'll be 75 on June 8) as I work on my blog in its nineteenth year.

Though I spend perhaps 2-3 hours/day 3-5 days/week on it now (I post 3x daily, 7 days/week, down from 8x daily 7 days/week when I started), my flow state is as automatic as it was at the beginning.

I feel fortunate to have found something so reliably rewarding that has persisted throughout the ups and downs of everyday life.


Love this. After 19 years I imagine your blog gets some traffic. Would you mind sharing how it's worked out? I think its pretty rare outside of newspapers to see someone publishing content for this long.


Love this too! Super interested in this story, I'm seeking inspiration for this kind of activity and you seem to be hitting the "sweet spot".


Indeed, somehow or other I found a perfect combination/distillation/outlet for:

I really like to write about things that catch my interest

Being an enthusiast

Being extremely interested in people/things that are surprising/clever/beautiful/original/funny (not all at once necessarily)


My traffic history: started in August 2004, up to 15,000 pageviews/10,000 visits/day at the 2013 peak, when blogs were at their zenith.

I'd get 10 or 20 comments/post, often.

Then a slow decline until January 2015 when I became clinically depressed and barely functional such that it took everything I had to post one sentence/day just to show proof of life.

I recovered completely in October 2016 and resumed multiple posts daily as is the case today.

Traffic when I started back in in late 2016 on a regular multiple posts/day basis was around 100 pageviews/day.

Current traffic is about 600 pageviews/day, with 5-10 comments/week.

Still, a couple times a year some popular blog/website picks up something I've posted and links to my post which results in a sudden spike to 3,000-8,000 pageviews that day, with a regression to the norm over the next week or two.

One thing I find interesting is that things I post today I would've posted back in 2004, and vice versa.

It's amusing to discover a couple times/year that something I'm about to feature or just featured appeared 10-15 years ago.

Occasionally a reader from back in the day will point this out, to my delight.

As best I can tell, the only popular one-person blogs that still update regularly and go back as far as I do are https://www.swiss-miss.com/ [March 2005] and https://kottke.org/ [1998].

I take pride in publishing daily including weekends and holidays, unlike pretty much every other blog/website.

Always something new at boj if you can just make it through the night till the next morning....

As to making money from the site: when I started I thought perhaps I could do that, so the guy who set up my blog (I have 0 technical skills or knowledge of coding etc.) made it so I had Google AdSense on my homepage along with an Amazon Associate banner/link.

At the blog's peak I was generating about $300/month from each of those two sources, with a couple anomalous checks from Amazon in late 2014 for $2,000-$3,000.

Just when that happened is when I got depressed, and income collapsed to the point that I removed all ads from my homepage and left AdSense up on individual posts.

Currently Google deposits around $120 into my bank account every 6-12 months, though I may have failed to update my AdSense agreement such that my Google payments are kaput.


I checked out the blog and noticed the book "Quantations".

> How does the theoretical world of quantum physics create our everyday life? "Quantations" explains this with wit and clarity, making the imaginary real.

I also took a peek into the book. I'm sorry to sound negative, but this is just full of fluff that has nothing to do with actual quantum physics. It's all pseudo-philosophical fluff and that stuff is the reason my aunt thinks she is a "medium" and communicates within some kind of "sixth dimension". Sorry to say, but this is all BS.


>I'm sorry to sound negative...

You don't sound negative to me but, rather, accurate and factual.

I am no physicist but rather a retired neurosurgical anesthesiologist (38 years until 2015).

The only physics I know I learned in 1966-1967 Physics 1a/2a/3a at UCLA, which was the easier physics sequence for non-physics majors who planned to go on to medical school or graduate study in other scientific disciplines.

I made up the word "Quantations" for my book to describe a compendium of quotations I'd been gathering since I was in college in the 1960s (indeed, I actually used yellowed cuttings from newspapers and magazines I'd gotten in the habit of keeping in file folders back then) that in large part centered around quantum physics.

I included many of my own thoughts, "pseudo-philosophical fluff" being a perfect description and one I'm going to use in the future, BTW.

Since my teenage years the mystery of quantum physics and its related tangents and intersections with so-called "reality" has been of much interest to me.

The philosophical explorations and musings of Heisenberg, Schrödinger, Bohr, and their peers and successors continue to offer glimpses of other possible ways of viewing the universe and being.

"BS" is a fair way to describe non-mathematical, non-quantitative attempts to render quantum mechanics into everyday language.

As Richard Feynman remarked in 1964 in The Messenger Lectures at MIT, "... I think I can safely say that nobody understands quantum mechanics."

I actually crossed paths with Richard Feynman in 1980 when I was an anesthesiology resident at UCLA Medical Center: he was about to undergo surgery for removal of a cancerous abdominal mass and I happened to be standing in a corridor as he was wheeled into the operating room.

He died in 1989 at age 69 of sequelae of that cancer.


This is a fantastic response. Just wondering, if they exist, what would you say are the broad overlaps between anesthesiology and QM are? I know Stuart Hameroff, another anesthesiologist, did a bunch of speculative work on the Orch OR front, so I'd assume there must be some connection of ag least some quality that makes both fields attractive to the same kind of person.


I'm SO glad you commented because it prompted me to look into what Hameroff has been up to recent years.

He and I are contemporaries: he's a year older. I've followed his career since his early publications in the 1980s when he was an assistant professor at the University of Arizona Medical School Department of Anesthesiology and just beginning his exploration of microtubules that later became the focus of his and Roger Penrose's investigations.

Hameroff's inquiries began with what is still a mystery: how does general anesthesia work?:

https://anesth.medicine.arizona.edu/news/2019/anesthesia-and....

A zillion theories have come and gone and we still don't know.

I suspect that the answer is intimately linked to how consciousness happens, still the "hard problem" as David Chalmers so perfectly described it in 1995.

I don't know of any other anesthesiologist(s) interested in the confluence of QM and anesthesia.

Someone better get on this horse 'cause Hameroff is 75 and I'm 74 and who knows how much longer we'll keep banging on this drum.

Below, a guide to exploring the work of Hameroff and Penrose.

https://en.wikipedia.org/wiki/Stuart_Hameroff

https://hameroff.arizona.edu/research-overview/orch-or

https://en.wikipedia.org/wiki/Orchestrated_objective_reducti...

https://pubmed.ncbi.nlm.nih.gov/24070914/

https://pubmed.ncbi.nlm.nih.gov/33232193/


I feel like I’m somewhere in this comment. For me, the stress and worry about things going on in my life eventually led to full burnout. Those periods of flow were what kept me going, and when I could no longer find them, it only compounded the stress.

I ended up going on a self-funded sabbatical to focus on sorting out my personal and internal life, and the #1 change that has led to rediscovering deep focus was starting a mindfulness meditation and yoga habit each morning. These core habits led to changes in how I was relating to the worries and created space for me to sort through the underlying stressors.

YMMV, but I realized that some of the things I was worrying about were just consuming energy (despite being legit concerns), and I started actively reframing worries using some of the exercises in the book “Learned Optimism” (Martin Seligman, 2006). This book also made me realize how deeply hardwired my pessimistic defaults were, and these defaults were the source of a lot of my daily rumination and worry.

All of this to say, if you are at all similar to me, it might be worth considering the lack of ability to find flow a big red flag worth actively investigating. I don’t know if I could’ve avoided burnout, but I’m sufficiently convinced now that internal work is one of the most important (and accessible) ways of addressing this.


> All of this to say, if you are at all similar to me, it might be worth considering the lack of ability to find flow a big red flag worth actively investigating. I don’t know if I could’ve avoided burnout, but I’m sufficiently convinced now that internal work is one of the most important (and accessible) ways of addressing this.

Don't you worry, I have plenty of other red flags besides inability to concentrate to keep me worried :).

I've tried meditation before, but didn't really "get" it. The instructions always tell me to let go of my thoughts and concentrate on a mantra or my breathing, but not a single time during the two months I followed a meditation program was I able to do so properly.

Exercising is one of the few things that even remotely work for stress relief. I've also done yoga and it works, but not any better than jogging or weight lifting.


I also had some false starts with meditation and didn’t “get it” until I found good resources on mindfulness/Vipassana.

I used the “Waking Up” app (not free but has a 30 day thing that’ll get you through the introductory course), and it was as if the content was targeted at people who’ve tried and didn’t get it. Mantras are not the focus.

There are many types of meditation, but the kind getting all of the attention in studies (for good reason) is the mindfulness variety.

The reason Yoga suddenly clicked for me was that I brought the mindset from meditation into the Yoga practice. Exercise (cycling and long walks) is always beneficial, but my body awareness increased so drastically with Yoga that I feel like a different person.

That may have more to do with my history of dissociative tendencies, but I do think there’s a connection between a good meditation practice and Yoga becoming something more than just exercise. It becomes an entry to flow.


The instructions always tell me to let go of my thoughts and concentrate on a mantra

I’m confused all instructions you found said this. This is the opposite of what you’re supposed to do.

When you calm down your hamster wheel of a brain will get bored and pull out a thought naturally. There is no point in fighting this.

The point of meditation is usually to become aware of the thoughts we have, metaphorically holding them in front of us and observe them without judging. You’re supposed to think “oh it seems I have that thought, interesting” without analyzing, just being aware. This is similar to hearing someone out instead of immediately trying to solve their problem or argue with them. What you will find after going through some obvious thoughts is that some will appear that you didn’t know you had anymore, because you pushed them away into your subconscious mind.


Hmm, interesting. I'm 39 and used to have amazing flow sessions in late 20s and early 30s but not seeing them much anymore. I can't tell if it's because of stresses of life or simply because I don't have enough time (with 3 young kids) to allow myself to fall into a state of flow. I really hope it's not stresses or my brain changing because I really valued those periods of focus.


Have you tried going back to the theory of Flow, and the conditions for it to happen, and compare&contrast your current situation with earlier ones?

I suppose that the differences might be subtle. For one example, for the condition that you have a sense of doing a good job, your metric for good job might have changed: it might no longer be simply make an algorithm to do X, but include larger context, including the reason X is being done.

BTW, keeping in mind that techbro ageism is a thing, especially in YC-type circles (that's how YC started), I suppose that HN comments by over-30 people can be fodder for confirmation bias by 20yos.



>BTW, keeping in mind that techbro ageism is a thing, especially in YC-type circles (that's how YC started)

Can you elaborate on 'that's how YC started'?


As PG was getting into angel investing, he started by soliciting ~20yos to be founders, and wrote about his reasoning for that.


I don't think it's time, it's priorities; your work is, naturally, a lower priority (both in terms of your focus and your actual time) than your kids, spouse (if any) and yourself. Whereas in the Before Times, it was just you and your keyboard.


Having family as priority compared to work is more than fine, it makes you (potentially, not necessarily) a good human being, a good parent or husband. This world needs that 10'000x more than another code ninja optimizing some corporation by nanofraction of a percentile.

The opposite is extremely valid too (to not leave any room for misunderstanding - folks prioritizing work over their kids are shitbags, no exception, and every single one I've met in their later years deeply regret that... apart from outright sociopaths and similar careless crowd).

Focus on career if thats your calling and spent whole live in it if you want, but then please don't have kids. Every kid with missing/bad father figure I've ever met later in their lives was a mess in one of myriad ways, endlessly compensating for this and never actually coming over it, permanently. If you know what to look for, you can start seeing it around you quite easily. It breaks my heart a little every time I see it. These folks often repeat same mistakes of their parents too.


Also 39, also three young kids. It’s hard.

One thing I’ve noticed, though, is that my difficultly in getting into a flow state is more often than not because of a subconscious hang-up about the approach that I haven’t articulated yet.

I’ve learned to recognize and lean into this, and actively look for what’s bothering me about a design. Usually while doing other things.

I suspect it’s actually saved effort overall.


I can relate to this.

Sometimes I have to detangle a bunch of loosely related spaghetti code in my head for long enough to fully grok it and relate it to the business context. And then bring it all back together as one cohesive unit of work. In the end the code is easier to understand and maintain than if I layered on more spaghetti code and called it a day. I've done that too and months later not understood my own code.


Late 30's no kids, no stresses beyond the threat layoffs and still being single.

I recently tried playing some video games adjacent to ones I've loved before, and I found it really hard to get into them. The games are Red Dead Redemption and SimCity 4, so the graphics and gameplay mechanics are ok. It's just been hard to really get into them.


The same for me. I still sometimes find games that I can really get into, but it's much harder than it was 10-20 years ago. I think part of that is because I've played so many games that many new games just feel like the same old again and again. The other reason is, of course, that the general inability to concentrate hard on stuff makes it so much more difficult to immerse myself into the game world.

Some exceptions in the past few years have been Zelda: breath of the wild and GTA V (yes, I know both of them are a bit older, but I only played them relatively recently).


Same here. There is one game though that for some reason I've replayed over and over through the years.

I played the original way back of course. Probably once. Settlers 2.

I had to look it up but apparently the "Settlers 2: 10th anniversary edition" came out in 2006. I don't even remember the original graphics and I'm so used to the 10th anniversary edition look. But once every year or two I delete my profile and play the campaign again over a week or two. It's the only game I've come back to again and again so often. Even with kids in the mix.


Try Cities Skylines. The newer SimCity games really botched it and Cities Skylines came along and ate their lunch. It's a fantastic game with a vibrant modding scene


I find that my taste for games and tv reflects what is missing in my life. If your life is relatively peaceful, maybe you would enjoy more action-oriented games like FPS?


big into the star wars and hogwarts games recently, both open world rpg’s of a sort


No kids here, but similar in that I remember sessions of long focus, and being able to do them repeatedly, for multiple days in a row. I typically can't do that as much now. Perhaps more to the point, I can't do them on demand. I do still have periods of 'focused flow', and they're great, but they just 'happen'. But... I never could just turn them on/off in the past either - they just happened far more frequently.

I predict you'll have more, just not as frequently as you used to. :)

FWIW, many of the things I used to have to spend long periods of focus on are now simple/common libraries that just didn't exist 30 years ago. Or, if they existed, there wasn't any convenient way of discovering them. So I find my productivity is still comparatively high, even with fewer number of flow states.


I think it's your kids. They should be your priority for now. You really can get back to tech stuff later. Phases of life and all that.


Fwiw, I've never had good flow states. :p

When I code, there's always so much stuff I don't know that I have to look up or so many big design/refactoring questions that I'm discovering in real time and have to grapple with. It's as flowy as your car getting stuck in the mud every 2 miles and having to get out and push. It's as productive as having a bipartisan Congressional hearing on the best posture to use every time you have to push it out of the mud. Incrementalism and time management are my friends cuz it's exhausting to do that for too long without breaks!

Nevertheless, programming remains my favorite professional and hobbyist activity.


I also think that having a messy personal life that you CARE ABOUT is really important for fostering good people management skills. I’ve never had a good boss whose primary identity was work.


Really interesting point, looking back it holds true for me as well. My last two bosses were single dudes with no partner, family or even dog and their management style was impersonal and difficult. It was like working for an AI trained on the most popular management books.


I don't have problems at home, yet I am also drawn to people management for similar reasons: when dealing with people rather than code, your brain doesn't have to be 100%; people aren't as exacting as the compiler. I find it a fine compromise when you don't want to give your best to a job.


I am not sure what I want more anymore. I love these periods of flow, but I am so good at integrating other people's work, making them agree on the best while being happy and feeling productive. Also flow makes time fly and I feel I would just die very soon, heh. Anyone feeling this too? But I crave this feeling very much anyway.


This is my exact feeling :D

I love coding and problem solving, but during my career I noticed that I'm _really_ good at getting technical people to communicate with each other and integrating their work.

I try to do both, but I still don't know which I like more. I tried the full manager / chart drawing architect -route and I hated it. Just coding was a bit boring too in the long run, because I want to make an impact on the org-level and I'm incapable of shutting up if I see any inefficiencies that could be improved by communication.


> I'm incapable of shutting up if I see any inefficiencies that could be improved by communication

This is one of my biggest struggles. I see so much flawed work and I can't help but voice my opinion, but I can't possibly dedicate time to try to fix it all, so I'm often afraid of just coming across as a complainer.


My "problem" is that if/when I open my mouth, people give me more responsibilities.

"Don't like how it's done? Now you're responsible for it." Granted I usually got a raise to go with it, but it was just admin work and not-coding - which I didn't like.


Just can't help but share: (I Have People Skills!)[https://www.youtube.com/watch?v=fcIMIyQnOso]


Trying new (work) positions is underrated imo.

You could try being a manager for a while and see how it goes - you can always go back to what you know.

Ofc you have to find a company where it allows for such options.


I don't want to feel like I live longer by enjoying each moment less.


My personal opinion:

After looking at my current manager and previous managers in my previous jobs I decided to never become a manager.

Being a manager means that I'll have to fill my day with nothing but meetings I cannot skip, keep talking on and on and on, deal with delivery headaches, respond to requests even while on PTO, do a lot of context switching between Slack, email, calendar, documentation, and other things. I used to like that level of being "busy" but now it seems that having my focus time is the best thing ever.


I made the mistake of entering management WAY too early in my career.

I wish I had not. it relegated my time to many tasks other than tech implementation.

FN having to train CFOs on financially managing cloud environs, managing people, pestering people for status reports, c-level presentations on this that and the other thing, etc...

My biggest mistake in my career was thinking I was "climbing the ladder" when accepting a position as a manager, director etc...


I'm not sure there's a better way to climb the ladder though.


The point being it's the wrong ladder. I'll stick to the enjoying life more ladder


i did it too early.


Were you not climbing ? Was your pay not rising?


gulp


Same path, but for the last 10 years i've been a CTO. Right now i'd kill for fewer meetings and more focus time. Starting to take its toll.


Make the changes you'd love to see. The CTO role is vague and broad and is defined differently in most companies anyway. You can delegate things to an engineering manager or director. Or if the company is large enough to a VP.

find a cross-section of what is valuable for the company and what you like doing


I don't think the Eng Dir will enjoy doing the CTO's job for the CTO. In 6 months Eng Dir would be in a meeting with the CEO asking the CEO to fix the glitch.


Hire an engineering manager and delegate.


Suggest wrong direction. Make teams more autonomous and develop the art of the backlog. Too much management is what's wrong with organizations these days.


I took the same path and came to the same realization, yet my current architect role is still nothing but meetings. Ugh.


"Architect" in most places is basically "code politician".


Me, on the other hand, long to be an architect so that I can influence some technical decisions.

Grass is always greener.


You hope you can influence some technical decisions, but it's not just a title of architect that gives you authority, you need convincing and communication skills as well.


I think that's the best I can do if I want to stay in the engineering track.


Dont be the architect be the guy who tells the architect what to do. Because they are too busy in meetings.


Code is easy, people are hard.


I am on my 26th year as a programmer. I love the fact that I can imagine and also make it happen.

However, I see a constant push from people around me to focus on creating a pipeline of ideas and let others implement them. Unfortunately, I do not see the same level of enthusiasm I have in implementing some of those ideas - could be due to lack of recognition since it is not their original idea.

Once I retire, I will just go back to where it all started. Come up with an idea followed by implementation. The sheer pleasure of seeing your idea working in a reasonable timeframe is exhilarating!


You have twice my professional age, and I have come to the same realisation.

I want to earn enough money from my business ideas to spend the rest of my time on hacking on niche languages, distributed/anonymous networks, etc. and as I grow older, to use computer and programming just to maintain a modern off-the-grid life (so working on my smart grid, automating my cabin-in-the-woods life)

Computers and the Internet have gone from being a lifestyle, to just a tool.


Developers, or good ones at least, are puzzle solving junkies.


Any advice for aspiriing programmers? I work full-time and go to school part-time so finding time / motiviation to practice and learn is incredibly difficult most days.


Any interest in workers coops given that realization? I too realized I don’t want to manage/own workers nor be managed but there is a third way


Do you feel that managing helped you in some ways with your later IC work or was it a waste of time?


It helped me empathize with my manager more. And that's always a good thing.


What I've seen in the past two years, a lot of people who have seemingly no fit to a life of a programmer have joined software industry. In my experience the best devs were the people who self-taught programming for pure joy of building a software, making a glimpse of imaging to something real through writing code. The others who were on this job because the compensation was hefty - they were likely to opt out to a manager. I am not saying that hobby-devs are better people or co-worker. Every people has their role in a team. Nevertheless these people who habitually code are the ones who remain as devs after all.


There is middle ground though. I love to code and am doing this job for that reason, but there’s a lot of other things I want to do while I’m alive, too.

When I’m done coding all day I want to do other things like exercise, climb mountains, learn instruments, etc. My motivation to do other things isn’t due to a lack of curiosity, but curiosity channeled into other activities.


And that's understandable. What John was saying and many of us here echo is that, for us, we'd like to want do the other things, but programming (outside of the commercial grind) is sweeter than all those things. To be consumed by (personal) work, working late into the night only to wake up and continue, uninterrupted and enjoying the bliss of focus, well, it can't be beaten. There's nothing like it.

> Programming is beginning again to be to the exclusion of all else in my life. (The table saw sits slowly rusting. The bike hangs on the wall in the garage.)

This in particular hits home. Programming, to the exclusion of all else in life.

> What am I trying to say? I have a programming addiction? (Maybe.)

There are times that I feel pulled in every direction by life, family, work, being alive, and it keeps me from this software ambrosia, even though I know that spending my life in front of a CRT/LCD/TFT/whatever they are these days is in a way wasted. I've spent 23 years doing it and I'm 33 now, and it feels like life has flown by in the glow of a terminal prompt.


That's interesting to me. Personally, I feel like you can apply the same mindset to a lot of other activities, which makes them satisfying in the same "way" that programming is.

Putting things in neat little boxes, solving little puzzles... it's kind of hard to describe, but at least personally there are other things that give me the same sense of satisfaction.


I would suggest reading a book called Zen and the art of motorcycle maintenance. It might help to align your feelings of addiction with your feelings of “spread” :)

Engineering is a wonderful tool but also a form of art. It’s ok to indulge your passion with some balance to the rest of life without calling it addiction.


I used to love code in school. Never ended up coding for work: Went from finance to analysis, biz dev and management. Work was work.

The happiest I’ve been is in the past few months, in a new role. There are several reasons, but one of them is definitely that i have ann excuse to get back to code.

I find myself waking up early, and having work to finish, on a Saturday - that I enjoy. It’s feeding my ability to work on other personal projects, that make me happier and I learn new things.

> To be consumed by (personal) work, working late into the night only to wake up and continue, uninterrupted and enjoying the bliss of focus, well, it can't be beaten.


I think I’m conditioned to have reduced respect for managers because in my experience they are former devs who were “promoted” out of touching the code. As a result, when they offer technical advice, it’s bad technical advice, or at best merely “unhelpful”, usually because it’s obvious (e.g. “did you try {first thing I tried}?”

I pose that such people shouldn’t be devs or managers, but “manager” is a role that tends to be forgiving of under-qualification… because ultimately the good devs don’t need to be “managed.”


Those kinds of managers may not be coders but assuming they are actually good at managing (and know their limitations), they play an important role.

It’s important to respect that other people are bringing different things to the table. Everyone’s got different strengths and weaknesses.


> It’s important to respect that other people are bringing different things to the table. Everyone’s got different strengths and weaknesses.

It is also important to respect that there are a lot of people that may bring something to the table, but not necessarily a whole lot. Sure, they'll have strengths and weaknesses and they are whole human beings with lives and people that love them, but this doesn't mean they are good at their job. And it also doesn't mean that they're good in a management or dev setting.


> Those kinds of managers may not be coders but assuming they are actually good at managing (and know their limitations), they play an important role.

What role is that?


Translating good decisions from these genius coders into management-speak (aka justifying good technical decisions with sound business acumen) and managing political capital in order to be able to push through non-negotiable technical efforts or, on the flipside, gain favor in exchange for not being able to do all the things we want to do.


Adding on to ambicapter:

Get the high-performing devs their good ratings and promotions. Get the low-performing devs moving better or off the team. Bring in more good devs.


Scenario 1: Bad Manager

- manager tells engineer to do something but doesn’t fully understand the context

- the engineer doesn’t fully understand it either but thinks they do, jumps to the conclusion that what’s needed is something complex, and thinks “no problem I’m 1337 and I got this”

- engineer spends the next three months crafting the Mona Lisa of code

- feature gets shipped and users… just don’t care about it since it didn’t actually solve their issues

- three months wasted from the perspective of the business, opportunities missed

- next time the engineer wants to do something technically great, the higher ups smack the plan down and tell them to get in line

- engineer quits in frustration

- company weakens

Scenario 2: better manager

- manager aligns with leadership to understand the end goals

- then works with product and engineers to figure out the best way to achieve that goal. Turns out some of it is minor product changes but most of it maybe is just clearer messaging, education, etc

- then ensures the engineers tasked to implement it are fully aligned on what they’re building and know who to go to for reference, so that there is no ambiguity from what the higher ups want vs what the engineers think they’re supposed to do

- this simpler idea is implemented in a week and released

- users love it

- the team gets more resources from higher up because of a track record of doing useful things

- engineer feels greatly productive and vital to the team

- this is 10x better than scenario 1 outcome and it’s mostly thanks to a good manager doing their job


The best engineers I know all started coding for fun too. Not to build "real-life" usable software, but to solve algorithmic puzzles.


My fun is building real-life usable software and seeing people getting value out of them, so I guess YMMV. I'm very lucky that I really like doing this, as it makes work as fun as my hobby, and my personal portfolio has a bunch of finished (if generally small) products in it.


I enjoy this too, but predicting who is going to like what exactly is still a mystery to me. Programs I built that I think are the most beautiful and useful thing around get ignored or just tolerated and some silly bash script or Word macro I wrote in five minutes as a one-off for someone has been passed around multiple times and is still in use 20 years later.

Where I get my fun is that I live to increase my understanding of something. This code should be doing "this", but it's doing "that" instead. Is there something I'm missing in my basic understanding of this particular topic? When I follow it through and get that "Ahh, I get it!" moment, it's like a drug for me. All is suddenly right with the world again. It's why I gravitate to lower level languages and languages that give me more control.

The rest is building scaffolding and applying standard recipes and carefully laying things out as I go. I still enjoy it, but I don't get the happiness that I get from getting one of those "aha!" moments. Or being told my stupid Word macro saved someone hours of work in some random meeting somewhere, I guess.


Yeah, I definitely get that a lot, I build things I think are amazing, and then nobody uses them ever. Oh well.


I'm getting my kicks from finding out why things don't work and making them work.


I think the important thing is that people enjoy it. They may enjoy other things too, maybe more, and have other responsibilities and that's fine. One of my kids is obsessed with cars, she's a proper petrol head, but she's going into software engineering. I told her that's fine as long as you genuinely enjoy programming, cars can be a great hobby. Life doesn't have to be about one thing.

Anyway in IT there are loads of different jobs other than programming. There's QA, application support, databases, project management, team leads, all sorts and it's pretty easy to switch tracks once you're on the inside.


In my experience as a non programmer, the best devs are hobbyists. Having taught myself Python so I could empathise with my team I can confirm that the passion and enthusiasm for programming as a hobby can be strong indicator of a high performing engineer.


I worked closely with the author (John Calhoun, @JKCalhoun) at Apple in my first job out of college. On my first day, I remember being introduced to him. I looked on his bookshelf and saw a printed and bound copy of the Glider source code. I asked him if it was the same Glider I remembered playing as a little kid in the early 90s on our friends' Mac. And it was. It was a real "holy crap" moment for me, not only did I get to meet the author of one of the very first computer games I ever played, but I got to work with him!

We'd hang out in each other's offices (the "open floor plan" trend hadn't quite taken hold, we actually had private/semi-private offices back then) and talk about old computers and stuff. I was starting to get into hardware hacking as a hobby. He gave me a Tektronix oscilloscope and an Apple IIe (both still work, they're sitting on my shelves and I'm looking at them right now!) which was amazingly generous of him. He wanted to give me a big box full of helium-neon lasers and optics and power supplies, but had to decline due to my lack of space. Hope you're doing well, John!


Thanks for the write-up! I met one senior engineer like this and it was a fantastic experience.


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.


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


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.


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.


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...


Can’t see your link, it just asks me to sign into AppleConnect


Aww jeez, and I cant edit the comment. Here's a working link: https://jobs.apple.com/en-us/details/200442275/aiml-engineer...


Key word is "good" here.


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.


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?


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.


Or cleansing Christendom of its heresy? Or showing in the wrong sketch, quite contrary to expectations.


No one expects the Spanish Inquisition


Nobody expects the technical inquisition!


I suppose that takes us back to "Beware of the Believers"

https://www.youtube.com/watch?v=eaGgpGLxLQw


> 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.


> , 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".


> 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.


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.


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


or you're probably not that good programmer...?


Or they are better at both then you, but value different things.

Who can tell?


I find it surprising (in a good way) the author could be a programmer for 26 years at Apple.

A lot of corporate places I've worked at are always pushing you to progress in to leadership positions; if you aren't moving upwards then you are "managed out" which I always find really sad, the idea that simply being good at your job is now no longer enough. Good on Apple if they don't follow this type of thinking.


An experienced programmer may not be able to write a lot of code faster than an intermediate programmer, but will know to NOT write code or waste time on things they know (from experience) are not required, or desirable... and focus on those things that really matter. This is worth so much for a company. Developers in the middle of their careers are dangerous: they can achieve a lot, but they can easily veer off on a tangent and spend months on some interesting challenge instead of on what the business needs.

If every developer moved "up" to management after a few years, only mediocre programmers would be actually writing code (which is partly true). I've become chief engineer recently, but I had already been leading other developers for a while... but I keep writing lots of code, despite frequent interruptions to assist others... I can see how others often go in undesired directions if not guided back to focus on what is important. I am very glad my company has recognized that I can do that but knows me well enough to understand my strong point is coding, not managing. I am sure Apple and many other companies are also aware that a very experienced developer still writing code with others is worth a lot more than in some miserable (for them) management position.


One of my mantras that I picked up as I moved into a more senior level is “the fastest and easiest to maintain code is the code you don’t have to write at all”. Knowing when and what to write is as much a skill as writing the code in the first place.

Also, Apple, presumably being a very siloed organization, probably benefits more from tribal knowledge of the elders more than your typical organization.


There's also the pragmatic flip side to this coin. 'Bad' code that does something is infinitely faster than the perfect implementation that was never written.


Execs can waste years by investing in the wrong projects, tech leads can waste quarters of time by picking the wrong architecture/ecosystem, junior engineers can waste days by picking the wrong approach to a ticket. And benefit goes the same way.


> I can see how others often go in undesired directions if not guided back to focus on what is important.

This is the role of the senior engineer in a nutshell: herding the cats, but from the technical side.


Programmer at Microsoft (still) for 27 years here. The pressure to "grow your career" (usually by moving into management) was and is ever-present. I've never been managed out, but have had numerous conversations with managers over the years along the lines of "look, I just love to write code and work with other people who love to write code too." I consider success to be defined by me in the feelings I derive from the work I do, the simplicity of the code I write, and the knowledge that its valuable in solving problems that my employer wants to see solved. Yet, the culture seems to still be fixated on measuring success by steady progression of increasing levels or changing titles. Whatever... it's for each of us, corporate ladder climbers included, to define what success means for ourselves and how to go about achieving it, I suppose.


I’ve also been somewhat scarred by having a previous boss who was on the older side. He only became a manager because of an ego thing where he “didn’t want to report to someone half his age”. He ended up being a terrible manager and basically ended up driving me to leave for another team. I don’t want to become that guy.

That experience was very eye opening to me. As a result, despite being offered lead positions several times, I’ve always declined. I know where my talents and interests are, and they most certainly aren’t in “people problems” or managing someone else’s career. Thankfully my employer still has a very robust career track for people like me.


In (one) theory, pressuring everyone to always move up results in everyone eventually stuck in a role they are not good at.


Peter principle.


Yes, "everyone is eventually promoted to their highest level of incompetence" is how I've heard it and there's a definitely some truth in there I think...


What does "managed out" mean?


It is the practice of very subtly persuading employees to seek employment elsewhere when their "growth" has stagnated.

https://www.ft.com/content/356ea48c-e6cf-11e6-967b-c88452263...

You will see it mentioned in context of poorly performing staff, but it can also be used when you have someone who is perfectly capable at their role but has no desire to climb the ladder. In many corporate environments that is viewed very negatively.


Thanks for explaining. That's awful.

I wonder how common this is in tech companies where IC is a valid career path and terminal levels exist?


I was forced to manage someone out years ago. It was awful. My bosses didn't like this one guy, and honestly, he wasn't the best employee, but just they told me to stop giving work to him. Nothing. No work at all. He would come to me and ask what he was supposed to be working on. I had to just say that I'd get him something soon. I had to tell others not to give him any work or go to him for anything. He sat there at his desk for months, doing absolutely nothing. Finally, he asked about his upcoming review, and I had to tell him that he was getting PIP'ed because he hadn't accomplished anything. He finally got the message and resigned.

That whole situation made me feel like shit. It still does. I never wanted to be a part of management after that.


The key phrase is they didn't like him. A lot of times it's personal rather than work related.

Folks, this is the purpose of performance reviews. It doesn't have much to do with your work or ability to do work. It's a bunch of paperwork to justify how management feels about everybody on a personal, not professional level.


Exactly ^^^ Here's how it went down in my case; it's so bad. ... The dude played in a rock band in his free time. He had a show up in LA (we're in San Diego) on a "school night". The next day, Wednesday morning, he showed up to an 8am meeting looking like shit. He said that he got zero sleep the previous night. He played the show up in LA, packed up his gear (he was a drummer), then drove back to San Diego, got home around 6am, unpacked and drove straight to the office.

No big deal, the meeting was boring, as usual, until a director from another group jokingly commented to our director, my boss, something like, "Gosh, your staff looks like hell. You must be working them to death." It was just a light-hearted, lame joke; got a chuckle in the room. After the meeting, I was pulled into my boss' office where he told me he was sooo embarrassed by the other director's comment. He was really mad. My boss was new to being a director and he felt as the other director was throwing shade on him, implying he doesn't know how to manage a staff, therefore he doesn't deserve to be a director. And everyone in the meeting was laughing, so they all must've agreed. So my boss told me to get rid of the rock-band guy. I rebutted, saying the fact that rock-band guy stayed up all night, and drove straight to work, showed that he was dedicated, and that he (my boss) was such a great director, cultivating a culture of hard work and dedication. My boss wasn't buying, and told me exactly how to manage him out: stop giving him work.

So yeah, it had absolutely nothing to do with his work. It was all because some dude got butt-hurt by a lame comment in a meeting.


I think the takeaways here are that: A lighthearted joke from a director is often power-talk that implies more, and that looking like shit in the office is a big no-no (some phrases that come to mind are "perception is reality" and "the nail that sticks up gets hammered down").


> A lighthearted joke from a director is often power-talk that implies more

> looking like shit in the office is a big no-no

Both of these can be true, for better or worse, but the director is probably also over-reacting. It doesn't seem appropriate to fire somebody over that. Such a director probably has an unhealthy focus on image.


That really sucks you were put in that position.


Damn, he should have stayed and at least gotten a severance package.


It is alive and well at FAANG.


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.


>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.


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.


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.


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?"


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.


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.


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.


> 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.


> 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.


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.


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?


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.


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.


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.


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.


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


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...


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.


> 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.


> 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!


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.


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'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.


> 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.


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.


'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.


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.


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.


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?


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.


I've been working with Apple since 1986. I very much have enjoyed their ecosystem, and probably like them, for many of the same reasons that a lot of geeks hate them.

It's worked out OK, for me.

My first exposure to Apple personnel, were the MacHack conferences, of the late 1980s. Back then, Apple was still pretty "scruffy." Some of the T-shirts that showed up at MacHack are now silk-shirts at Apple.

Over the years, because of the companies that I've worked at, we have had pretty close relationships with Apple, and I have enjoyed interacting with many of their staff. I actually had a fairly decent window into their culture.

A few years ago, I finally left my last company (after almost 27 years), and started looking for work. During that time, I was contacted by Apple, and did a couple of interviews. They were probably the only company that I would have relocated for, in my fifties.

It didn't work out. As it turned out, and, quite surprisingly, I didn't mind that it fell through. The interviews made me aware that the culture was nothing like what I expected, and, I suspect, taking the job would have probably been a very bad move for me. I'm sure that the money would have been great, but I don't think I would have found the environment to my liking.

I'm one of those folks that isn't particularly interested in bucketloads of money. I really enjoy writing software as a craft. I'm quite aware that many folks, hereabouts, despise people like me, and that's sad. I feel as if a bit of the "soul" of software has been leached out.

But, at the same time, some very cool stuff has been accomplished (often, motivated by all that money), and I look forward to the future.


Sounds like you have had an fascinating career. I dunno, but maybe the world need two types of engineers; ones motivated by good code and ones motivated by money.

I wonder though if you can develop a superb product and company with just money alone. In a way you probably need evangelists rather than just hired guns.

In my experience as a product manager, the evangelists are much more creative than the hired guns. You can throw lots of money toward the development of a product but that doesn’t mean you’ll get innovative solutions from your team.

You need a mix of believers as well as hired guns.


I’ve always been a fan of heterogeneous teams. They are a challenge to manage, but deliver great results.


>They were probably the only company that I would have relocated for, in my fifties.

I'm always curious about people's willingness to uproot their lives, and move away from family and friends for a job. Especially at older ages where one has 'made it' and money is no longer the top priority.

There's only one organization that's on that list for me, and that's JPL, especially if I got a chance to work on their sat / rover stuff.


My wife’s nephew interned there, for a year or so.

Smart kid –like, really smart. I think he got his Ph.D from CalTech, or maybe it was his undergrad. He’s a math professor at Penn State, these days.

Not sure what teams he worked with.


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.


>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?

Yes, absolutely!


I have no idea if I am considered "young" (32), but I taught a few classes over the last few semesters to students who were unambiguously young, and I can definitely say that young people coding for fun are definitely out there.

A few students of mine would show me little games they were working on, or websites they were building. Sure, they might be doing this a bit for resume-fuel, but it was abundantly obvious to me that they were doing these things largely because they thought it was cool.

And you know what? It is cool! I tried my best to encourage them to keep at it.


The "it's for the resume" is a convenient excuse when people ask you why are you spending hundreds of hours on something that seems pointless but is fun to code.


Anecdotally true: when my non-technically-inclined parents ask me why I'm working on my personal projects, I vaguely mumble something about "it'll be good for my resume" and try to change the topic.

I definitely do not think these will benefit my resume in any way.


Yeah exactly when "normal" people ask me why I contribute to open source now I tend to mumble something like that, career professional development blabla. When I was at university I would say something like "learning/practice programming", though back then most of my classmates spent their time playing LOL/DOTA/etc, so if I wanted to program for fun no one would care really.


I've reached a age where I have to answer "define young". Early thirties is weird. All the people I respect and learn from are still older than me, but not old old.


I'm older than you and I actually considered that the author was talking about me! I thought "yeah, I'm an addict, we're still out there".

It didn't occur to me that I was old until your comment. Thanks!


Hey, 30s is the new 20s, and so on.

I'm in the same boat and I definitely still feel young. I mean, I'm fundamentally unchanged from when I was 16, and still like the same stuff like video games, computers, and so on. I have also always looked kinda young, which probably allowed me to propagate my youth until very recently. The biggest change I've noticed is not anything internal to me but how other people act around me; they talk to me like I'm an adult (which can be either good or bad depending on the situation), and the cashiers at the stores have stopped asking for an ID when I buy liquor (before 30 they still did!). Also, people don't give unsolicited advice as much as they used to; I suppose they think I know what I'm doing or don't care. This is definitely bad, because my modus operandi for life has always been to try weird stuff my own way and count on other people to stop me if I'm doing something completely stupid.


The "define young"-range seems to be a sliding window centered around your current age.

Perhaps at some point there will be very few older than you and perhaps then the sliding window will be offset accordingly, but at least for me (almost, almost 40) I'm still well within the "define young" range from my own point of view.


To even ask is ridiculous.


As a current undergraduate, programming for fun is ubiquitous in my peers. Surprises me also that the author has to ask.


In a bit of fairness, I know a lot of very competent engineers who do not code for fun at all. Programming is purely a job for them, and then they go home and hack on nothing.

There's honestly nothing wrong with that. It's perfectly valid to do something purely for the pay (so long as what you're doing is ethical, obviously). I suspect there are plenty of young people who see the bloated salaries that software engineers get and decide to learn programming for purely economic reasons.

This probably contrasts somewhat to the 80's and 90's, where it was substantially more difficult to "get into" computers, and as a result there was a strong selection bias towards really passionate people.


I struggle a lot with my hobbies because I do almost no coding or learning about code in my free time, at least not directly. I think I could be a great(ish) programmer if I did programming as a hobby, but there's just so many other interesting and worthwhile things to do. I get a lot of FOMO from people who code as a hobby, and I think it doesn't help that they don't seem to get FOMO about my hobbies. But I know I will always feel something is missing if I don't spend time marveling at the natural world and creating art, so I guess I'm stuck.


As someone who studied programming in the 90's, I can tell you that I was surprised about how many students were not passionated like myself. And this was already before the wave of scientist coming from other fields (physics, chemistry, biology) to computing in early 2000s.


In the 80s and 90s CS was often seen as a fallback if you couldn't do well in EE.


At uni, different styles do cluster.

There are the circles in which the nerds cluster who are really in the tunnel about whatever subject it is, here it's programming or CS in general. They do it for fun, they come home and sit at the computer all evening and half the night. Occasionally they do the homework assignments, and if those are interesting, they nerd out about them endlessly. And they are really good at it. They don't really go to parties and are a tad (or a lot) anti-social. But they don't care. Typical minor subjects are math or physics. It's beautiful.

Then there are the circles of the in-it-for-the-moneys. They do homework assignments because they have to, they go to classes because they have to, they read business news, go to parties, feel important and have dollar signs in their eyes every time they think about graduating and finally making big bucks. If lucky then they get help by some of the nerds (see above). But they actually detest the nerds, just as the nerds detest them.

There are more circles and I don't want to deep-dive here, but I actually this also reflects at the workplace 10-20 years later. It's easy to see from which of those two groups the high-performing ICs (some of them a bit socially awkward) come, and from which their managers, and why there is tension between those.


I interview a lot of students for co-op roles. Almost none seem to program outside of assignments -- or even show an interest in programming outside of assignments. We use that as a weeding-out criteria. Some terms we don't hire any students because we need programmers, not warm bodies looking for money in a hot field.


I'm honestly surprised. That was not my impression at university. Most people seemed to struggle with coding.


Older people are always scared of being made irrelevant by later generations.

It’s important not to internalize the fear response of having to shoot down everything that makes you feel threatened.


I'm 26 (so, born around the time author started at Apple) and took up programming as an on-and-off hobby in my early twenties. I've never worked in IT in any capacity and don't consider myself skilled or talented. But I love the thrill of figuring things out, of building (usually useless) things, of solving problems. I suspect there could be many like me, who perhaps never get into (or even try to get into) the industry, yet are enthusiastic about the field itself.


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.


Hacking should be recognized as an arts and crafts category.

It is a bit more abstract than making music or painting or messing with materials (wood, stone, metal etc), but it pushes the same pleasure buttons. Its the simple joy of building and sharing stuff.

In a professional context programming mutates and becomes what organized society and economies want it to be. Another cog in the machine.

Coding for money is no more or less happy than cooking, making music or applying any other intrinsically pleasurable dexterity for money.

What is intrinsically fun and something you would do "for free" becomes draining, stressful and devoid of purpose. The "purpose" in organized work is dictated by large scale patterns of supply, demand, monetisation games and organizational structures.

In a sense what we are missing are meta-tinkerers who would (for free and for fun) hack society and its economy to be a more meaningful place, one that does not make us to need to "retire from".


Oh, wow! This is the creator of Glypha (https://boredzo.org/glypha/). I spent countless hours playing that game in the mid-ish 90's. Like so many games back then, you could tweak things with ResEdit. Nobody would believe my high score because they knew i could modify it.


Oh, I recognize that name too; he hasn't exactly put his name front and center in the blog post. I remember playing Glider. That was also him.

https://en.wikipedia.org/wiki/Glider_(video_game)


Thank you for your 26 years of service. Career programmers like you who still love programming at the end of it are a treasure. Programming is wonderful. It is an art in itself. Even though Slack and Leetcode and all the rest ruin it, there is nothing else which sparks joy and a sense of wonder like it does for some of us. I wish in our industry we had more wider appreciation and events where we could share stories like you and felicitate you.


Wait what did Slack do?


Assuming they also included Leetcode, I think they're venting about the general "tech culture" which surrounds most programming jobs now


Mandated black hole for attention.


Cause distraction.


In the olden days it was IRC. Already then it was about controlling yourself. Whether you would get distracted or not. If you want to get into the zone, it's up to you how to do that. If you have an IRC or Slack window on the side to let you get distracted is your call.


Were you using IRC as your corporate messaging solution, because that's what slack is? İf people send you a message they expect a timely if not instant response. Their work depends on you.


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.


> 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.


After many years I'm still pasionate about programming, still do it in my spare time and enjoy my work.

But, it really does need to be in a language and platform I enjoy. I also notice that if you have a job with a more niche language all your collegues will be passionate about the work too.

This is why I personally do not care much about language comparisons. It might be that the language of my choice is only marginally better and in some case worse as a more mainstream language. But there are cultures around languages and you need to fit with that culture to get the most joy out of your work.


Niche languages filter for nerds, and nerds are more fun to work with? (if you are good at what you do, else you will incur the nerds’ wrath).


That can very well be ;)

I think those that choose to go into programming purely because it can earn well (I have nothing against this by the way) will choose to invest in one of the more popular languages because there are more job opportunities in it. Also there would be any, let's say, Common Lisp bootcamps so it is more likely that the people that know it have picked it up because of some passion.

When focusing on nice languages it is very easy to get hired for positions that need it because there is less competition. Though, contrary to what I would have expected usually it pays a little bit less. The highest paying jobs I had so far were in Java.


I agree. Strongest and most passionate devs I've seen by far in my career so far were almost all Scala developers.


I would recommend everyone who retires from programming to get into the maker world. 3D printed, embedded programming - it’s great fun and just feels different from the day to day programming grind.


don't do it as a profession, embedded programming grind is worse than conventional cloud/web programming grind


I do embedded and it's fantastic. I could never do the cloud/web grind.


Can't concur. As an embedded dev turned to web, the grind of the web dev was way stressier than the tasks as an embedded dev.


Would you say the same thing considering oncall responsibilities in conventional cloud/web programming?


I work in an IoT company and we have embedded and cloud devs, embedded is a huge pain in the ass because we can't OTA update our devices willy nilly (regulations and client's demands) and supporting older hardware creates a rats nest of backwards compatibility problems

In the cloud I can press deploy to update the servers, fixing a software problem in an embedded of a fleet with thousands of individual devices is a huge undertaking and can take months. Fixing a hardware problems usually means workarounds in software.

Heck a lot of that complexity leaks into the cloud code to fix bad design decisions made years before. Lots of "if deviceHardwareRevision <= X && deviceSoftwareVersion <= Y do Z" in the cloud code

We don't have huge amounts of traffic in our cloud so it is usually pretty reliable even though we don't even enforce a lot of best practices and patching a problem is relatively easy


This is by John Calhoun, whose most well-known creation may be the game _Glider_, originally written in his pre-Apple period he mentions in OP.

http://macscene.net/home/features/news-archives/item/intervi...


> 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.


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.


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.


> 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.


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


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.


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.


...and now you turned the fun part back into comparing different third party services and choosing between them instead of the direct problem solving.


...and now you turned the fun part back into comparing different third party services and choosing between one.


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.


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


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)


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


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.


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.


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.


> 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.


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.


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 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 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.


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.


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 !


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.


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.


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.


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.


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.


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.


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.


Some believe that they’re working against that, however misguided it may be.


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.


> 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


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.


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.


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.


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 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.


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.


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.


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.


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 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.


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.


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.


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.


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.


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.


> 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.


> 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’ve been programming professionally for over 25 years. I have not written a line of code for “fun” since I graduated from college.


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)


But did you have fun while being payed to write those lines? I hope so.


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.


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.


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


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)


Seems like an extremely unrealistic representation of people's motivations to work, to me.


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


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?


Probably a community college class.


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.


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.


One of the biggest changes for me, after decades of programming, is I've learned to be more of a stickler for best practices -- at least on projects I lead or ones I do solo. I'm more cognizant of the fleeting nature of time, that big one-way arrow-O-doom. So I don't "suffer foolish things" as much as I was willing to when younger.

I prioritize better. Or try to.

And I'm more efficient during sessions at keyboard / in terminal/shell. Effectiveness is king.

I do things in a different order, too. More likely to order my sequence of tasks/milestones so I achieve the most de-risking upfront. Test my assumptions. Flush out those "dark spots" on my mental map of the problem or solution space.

Age sucks. Experience rocks.


I just realized that I've worked in the software biz for 30 years now, on top of 10 as a student/hobbyist. Halfway thru my career, I quickly pivoted from I love programming and want to do this forever to I'm getting sick of this; my engergies are better spent as an architect/manager.

But at 50, I'm feeling burned out about doing anything for 40+ hours per week anymore. I'm embarking on an adventure with cancer right now, and if I survive it then I'll do my best to find a way to wind down so that I work half-time or zero.

I'd rather be somewhere warm and bleak, nailing houses together for Habitat for Humanity.


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.


> 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.


> 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.


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.


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."?


"Independently wealthy"?


Living my best life


Self-Employed


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?


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.


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.


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.


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.


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.


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 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


> 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.


> 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 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.


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 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.


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, $~: _


> How is it you can love a machine?

That's not it for me. For me is I can create things. I always wanted to create machines, but even simple machines required enormous amounts of time in a machine shop, and once I left college I no longer had any machine tools available.

But with programming, I could create all kinds of machines, limited only by my imagination, at no cost.


Find a goal to put your talents to use. Retirement is a social fiction to encourage lack of engagement. Your democracy needs you.


>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 kept also-busy with woodworking projects

Why do programmers tend to enjoy woodworking? They have interesting parallels.


I don't know why, but after being a professional programmer for around 20 years, I have replaced all my hobby programming with woodworking. I love it. There's something about having a tangible object you can touch when you're done that makes it satisfying for me.


This is pretty cool, in my book. I was first paid for programming 57 years ago, and have continued to program. I even was programming while I was CSO (but didn't tell anyone). To this day, I feel vaguely uncomfortable if I haven't programmed for a while. Flow is a bit less due to other responsibilities, but I do enjoy even a little programming.

A while back, I tallied all the languages that I had programmed in and it was like 36 (if I can count the machine languages produced by compilers I worked on). There are a few more, like Snobol and Prolog, that were part of coursework. These days, almost all of what I do is in Common Lisp.

Your System 6 looks quite cool.

And no, I don't plan to actually retire--I'll always be programming.


> 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


I started programming as a hobby around 1983, on my Commodore 64, in 6th grade. All through high school, I never even considered programming as a career. I didn't think anyone could actually get paid for programming. We were all just hobbyists back then. No one talked about money.


Glypha! I used to play that as a kid, I'm excited to check it out again.


This guy seems interesting .. I go to subscribe via RSS - no feed? :(


He's a hackernews member, too. You can be pretty sure if he posts something it will show up here, for instance some time ago https://www.engineersneedart.com/systemsix/systemsix.html



Not a very useful comment, but this guy talks almost like me. We must be twin somewhere. I got the same programming addiction, got the same look at it... Strange and comforting...


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.


25 years of professional programming, but not at Apple. Far away from being able to retire (4 kids, latest fresh from last year) :(


Yeah, same here. In a sense I'm looking forward to retirement. And in a sense I dread it, since once that day has come it would mean that I'm old and the last third of my life has firmly started already a few years ago and nothing will turn this back.


60+, caretaker for several family members, programmer for 35 years. Still love it, tho I am self-employed. Energy level is exceptionally low due to severe sleep issues. Can still pull all-nighters with no problem. But if I have to mow the back 10… I cry age and exhaustion.


I don't think I'll ever stop coding, even after I retire. I originally learned programming in order to bring the random ideas, worlds, etc in my head to life. Even though I've now been doing it professionally for over a decade, the ideas never seem to run out.


I have a friend who's been a programmer at Apple for 30+ years now. He's still very enthusiastic, though I'm sure he could retire several times over by now.

Great programmers are the ones who have side projects they're doing for the fun of it.


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.


I can't imagine not programming after I retire. My day job as a dev seriously infringes on my real programming tasks, and when I retire I will rejoice that I can finally get to spend more time on actually meaningful work.


Interesting that the OP reverted to C after playing with JS and Python. Maybe having to do everything manually at the lowest level maximises focus, assuming you have the time and patience.


It's less magic, I think; I'm working in React right now and it's its own paradigm, separate yet from just JS or C or whatever.


I like that it seems like he optimized the game for the Steam Deck.


Glypha looks like a lot of fun. A low-fi clone of Killer Queen - or is Killer Queen a hi-fi clone of Glypha? Either way, very nice!


Glypha was a clone of sorts of the old arcade game Joust


Glider was the Flappy Bird of its day!


I got into programming because I wanted to have my personal home page good sweet old days..


I think being a coder is a bit like being a musician - you never retire.


This feels oddly satisfying to read this


so this guy never had to deal with leetcode BS


He aint 35.


OH MY GOD, GLYPHA!


Hey everyone. I have just completed a release of an iOS app, being a web developer.

Let me tell you… the Apple developer ecosystem is sooooooo convoluted! Is it just me or does anyone else feel that way?

Don’t get me wrong. The company is innovative and a trailblazer. It has done so much in terms of hardware-software integration. And I am not even talking about anything before MacOS X or iOS.

I mean … Objective C. XCode. The hodgepodge of a million different things smashed together. I have seen many people say it is elegant… I have seen many ecosystems. Apple’s one is, well, kludge upon kludge.

First there was [foo bar] but then you got also foo.bar and foo.setBar. You null, NULL but also nil, you had YES and NO but also got true and false later. You could swizzle but also you could have C++ features alongside Objective C for a while, for the ultimate in language law degrees. You got #include #import but also @import because hey, @ gave you random superpowers. You had protocol but later got NS versions of everything (like NSCopying) and then ARC bolted on and auto draining pools that worked some of the time.

Swift was much nicer and tried to go back to simplicity. It even helpfully renamed all your methods. But then it had things like exclamation points that you were never supposed to use, and a weird try/catch syntax that could crash your app anyway. And when Swift came out you also got YourApp-swift.h generated magically by XCode to bridge to Objective C, because of course you did. After all, you have to rely on XCode for so many things. Assets go in a special Package format, you see. They used to live on a Resource Fork but the filesystem got changed.

Apple’s class system is also a hodgepodge. You have NS from the good old days, you have Foundation framework, but then you also have a ton of others which duplicate some of the functionality.

But that’s just the start. You’ve got nib, make that xib, make that storyboards, and they are all different. You’ve got constraints of 10 different types but they don’t work as you’d expect with all the various tools. (Man I miss Visual Basic, that was 20-25 years ago!).

The buttons are tiny and functionality like dragging an IBOutlet are hard to discover when clicking does nothing. As a teenager I was on the Apple Human Interface Developers mailing list, and their Guidelines (anyone remember those?) said “no hidden modes”. Well, that is so quaint now, for the last 20 years the new Apple has violated all their HI Guidelines. Oh, and did I mention, you only had a couple page transitions, one of which was a curled page turn, and one was sliding up from the bottom — but sliding down from the top is just not a thing! Write it yourself! If you can.

But that’s not all. Not by a long shot. You have to work with CocoaPods as a package manager along with other ones, and put up with arcane error messages with each new OS version as things break because things that used to be OK are now not. And if that error comes from any of the hundreds of random build settings — good luck, buddy. Here is a video from an expert in the trenches … who is glad to discover someone else has been cataloguing all these build settings for years:

https://www.youtube.com/watch?v=xJLBTIWE-yQ&t=57s

No wonder Apple is trying to move towards an all-Swift future.

Did I mention Apple FORGOT TO RENEW THE CERTIFICATE ON ITS OWN MAC APP STORE — not once but twice?

I imagine it is better actually inside Apple. But hey, I worked inside Bloomberg and I can tell you, that codebase is … idiosyncratic to put it mildly. I guess it is like that inside many companies, but when you build a platform for developers to use, you need to make it clean and cut down on the number of concepts that have to be used, or at least make the concepts all consistent, like BSD.

On the bright side, Apple did usher in the Mac, the iPod, iPhone, Apple TV, many innovations. It did absorb NeXT, try to bridge with Darwin, change CPU architectures a bunch of times, make Grand Central Dispatch, create secure enclaves, and more. So we can give them a pass I guess as a company. But boy does their development ecosystem feel a lot of kludges that accumulated over the years!


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




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: