> I felt like by 40 I needed to move on from engineering because if I didn’t, I’d be like the few older workers I’d dealt with in my career. I felt like they moved too slow, were stuck in their ways, and unable to change - even when faced with evidence to the contrary.

If that was your fear, then I'm sorry you had that fear, and I hope it was unfounded.

Unfortunately, there's externalities to voicing a negative stereotype in some venues, reinforcing it there.

> they moved too slow, were stuck in their ways, and unable to change

This goes beyond just engineering- people generally get more like this in all aspects of life as they get older, and I believe you can prevent it by deciding not to be that way, and taking actions to not be that way.

Personally, I feel that I was very rigid and closed minded when I was younger, and I've been learning and working on how to be less like that as I get older. I used to get angry when people believed or did things I thought were "wrong" - and I found if I take the time to understand why they think it is the right way, I am not bothered by it anymore, and am more able to work with them and be kind and understanding to them, even if I disagree still.

I think we must remember to mention "rationality" in such conversations whenever we speak of things like "rigidity".

Rigidity is a kind of irrational stubbornness, and unwillingness to consider alternatives when reason compels otherwise. Someone who is principled and has a reasoned basis for his principles isn't stubborn or rigid. He's principled. His certainty isn't irrational, because it is rooted in the best justifications he has, perhaps even very good justifications that have successfully resisted all counterarguments he has heard, perhaps justifications that necessarily follow and could not be otherwise. Certainty is not a sin if rationally justified. Indeed, there is a performative contradiction in claiming that it is with certainty.

Good point, those are totally different things, but it is often hard for someone else to tell the difference unless you explain.... explaining can also be a complex issue in office politics, because some people will see explaining as seeking and requiring their approval, and therefore subordinating yourself to them.

I'm also very wary of being stuck in my ways, but even after all that bias-compensation, I still hold the belief that the fastest/most maintainable/easiest/best for the user way to make web apps is server-side rendered with minimal JS (mostly to enhance components). I don't know if this makes me a dinosaur, but I firmly believe that the best way to make 95% of modern websites is Django+HTMX (or similar), instead of a heavy SPA with an API.

Of course, when it comes to web apps, like Google Docs or similar, SPAs all the way, but that's a tiny minority of the web.

This is an interesting example, because in this case- I think it could be seen as being stuck in old ways by a younger person that is excited about new stuff, but it sounds like you actually just have more experience and a broader perspective, and so know when something "old fashioned" can be simpler and more effective than using the latest most trendy method.

I hate having to use what is basically a simple static page but is effectively a large app that is being downloaded and executed client side- it makes it unresponsive.

This is the way a lot of people feel lately, and it's nothing to do with being a dinosaur. It's a whole movement.

I'm wary though, because lots of things start nicely but fail to manage complexity of even a moderately sized app, and everything grows over time. I feel like a lot of people are going to rediscover why we started making everything a SPA.

There have been a lot of approaches on the frontend over the years and it's been my job too many times to clean up where that approach eventually collapsed as the app grew larger or ran into limitations. I am looking for the upgrade path -- I want to start simple but not risk an entire rewrite when the complexity exceeds that pattern. To date, very few of these things work well enough together to consider it seriously. (htmx+react would work fine but you'd pay a large cost for upgrading a single component, like rewriting it and a chunk of new runtime code. And if everything eventually gets more complex, somebody starts asking "why we have two ways of doing things?? We should consolidate!" And the rewrite cycle continues...)

It's a balance between hard-won experience and becoming too wary of new things. It's hard to see new frameworks completely based on events, for example, and not cry does nobody remember that we tried it already? Having a glob of untyped context in Angular v1 was always bad, and I refused it even when it made me look like a dinosaur back then. But React was a great pattern for complex code, and I immediately switched to that. I would switch to something tomorrow if it kept those good parts, like handling complex apps, but didn't have to render everything a minimum of two times server and client. Maybe a new winner will emerge.

Experience is still good to have. It doesn't === dinosaur. Instead, it has saved me a lot of misadventures.

> lots of things start nicely but fail to manage complexity of even a moderately sized app, and everything grows over time

Is it size, do you think? To me it's more about how much interactivity you want the app to have. If I'm making an online shop, I don't think I'll need tons of interactivity, so I don't see the codebase ever outgrowing simple SSR views. If I'm making something much more dynamic, then I probably would go with an SPA from the beginning.

What kinds of things have you seen that made sense to start with Django but then had to be split up, and why did they need to?

Yeah a lot of complexity is driven by interactivity. If a component needs to become interactive that presents some new problems, especially if then other components need to update based on that as well. Lots of GUI apps get bogged down by complexity, the web frontend is not special in that regard. There are lots of patterns in desktop development as well--just look at how many different frameworks Microsoft has run through. Interactivity can get messy quickly and that was something reactive programming helps with a lot.

But if a project starts out with minimal JS and it grows complex, then it has a hard problem. If it was previously templates, there are going to be a lot of APIs that need to be made to convert from form posts and ajax. Some sort of framework is important to help provide guide rails for the team to avoid the mess, and they expect to update the page and don't play well with whatever was progressively enhancing the site before.

The other problem is that if it was just templates and a minimum of JS, then there probably isn't a frontend team in place. Most of them want to work in $fancyFramework and not on HTML templates. They don't get paid well for HTML and won't come to work for a company slinging template code. The backend devs don't want to do HTML, either. So it becomes a people problem. At some point in the complexity growth, a hard gulp is made to higher some frontend folks who are immediately unhappy. I've seen this play out several times and it results in big rewrites and stalled company growth.

So yeah, a lot of times we just start with React. Because there's not a great path from minimal JS into additional complexity. And you can hire people for it who'll be productive immediately. And at least there's no gotcha down the line when complexity grows. To do otherwise seems to always end up with rewrites that are so long that the team who finishes it isn't the same team that started it.

In Django, I love a good monolith. I try not to split them up and even ran a top 100 site for years using a Django project, as have others. It's generally a good time to break up a Django project into smaller Django projects when the team size is big enough to support dedicated people for features. Around then it starts to get frustrating to manage deploys and CI and testing and all of the peripheral stuff. But disciplined coding in a monolith can take a team a long way.

Nice, thank you for the reply. You're definitely right about the people problem, it's too bad that nobody wants to do the simple thing. Thanks for the insight about when to split up a Django monolith, we're definitely not there yet, and we're going the other way (consolidating).

My belief too, as a grey beard 25 years in. I’ve seen all sorts of shit come and go.

There’s a lot of “slack” in the industry that we get away with. Ridiculous incidental complexity, far-out frameworks, architectural astronautics etc.

But if you care about “adding value” or your business succeeding, tools like Rails/Django are way to go. (And btw, use a RDBMS ffs)

Oh yeah, the RDBMS is the other big pet peeve of mine, but luckily the tide seems to have turned towards those pretty thoroughly.

Yeah the NoSQL tide seems to have been stemmed by people actually trying to use them.

> I don't know if this makes me a dinosaur, but I firmly believe that the best way to make 95% of modern websites is Django+HTMX (or similar), instead of a heavy SPA with an API.

I agree; at some point someone said that I'm "like the anti-vaxxer of frontend development", because "I'm not listening to the experts". Hmkay.

Maybe I'm old and stuck in my ways. But telling people they're like anti-vaxxers because they disagree with them (with caveats: "SPA is nice for some things, but for many template-driven apps are better") means you're just as much "stuck in your ways".

I feel like it's not just ageism - software development itself is so big now that it's fractured to the point that there are now strongly opinionated camps that are "stuck in their ways and unable to change - even when faced with evidence to the contrary. "

For example, certain web dev crowds that love (in my very biased opinion) really slow, bloated and/or over complicated tooling to do simple things. But only because they've never ventured outside of their ecosystem to the great beyond and "that's how everyone does it".

The nice thing about the JS ecosystem is there there is no “how everyone does it”.

It’s as if you had Ruby where Rails was only 10% of the market.

Some people say it’s the problem, but I like the egalitarian aspect of it.

>> I felt like by forty I needed to move on from engineering [or] be like older workers [who] moved too slow, stuck in their ways, unable to change

This is a terrible idea. It's not age, it's attitude and approach.

I replied to OP on this here: https://news.ycombinator.com/item?id=41405231

Not mentioned in that, adding here: You can't invent viable things unless you know the stuff of which they are made. Bigger/harder/newer things are built on more/harder/newer stuff.

Deep learning is largely incompressible. Practical (applied) mastery takes 10,000 hours times the things you need to know.

Ergo, always keep learning, use "more years" to outcompete by sheer accumulation of understanding what new things are made of and how they work together.

Become that staff eng, principal eng, or engineering fellow who can, and does, do more impactful things.

But only if it's a fit: https://growthco-op.com/wp-content/uploads/ikigai-1-1024x968...

Thank you. I think it is unfounded, but it's still a visceral belief and those can be hard to overcome. I'm hoping with time I can change my feelings on it.

Because I am the bluebird of happiness, there are a couple of things you may want to be aware of here.

"I’d be like the few older workers I’d dealt with in my career. I felt like they moved too slow, were stuck in their ways, and unable to change - even when faced with evidence to the contrary."

First, keep in mind that many of your co-workers will still feel this way, even if you provide evidence to the contrary.

Second, after you have been around the dharma wheel too many times, it becomes difficult to hop onto the hype-train as quickly as you used to, which is one reason many of your co-workers will feel that way.

The tech industry has never had a career path for technical people other than directly into management or into a pseudo-management "architecture" roles that are neither technical nor management---you don't get many of the advantages of either and what you can do is mostly based on your personal relationships with managers or technical people. As a result, if you remain technical, you may find that your salary and influence stagnate.

Oh, and 40 is still pretty young. I'm 56 and it wasn't until the last 8-10 years that serious burnout set in. (Salary isn't really an important factor in job satisfaction; influence very much is.)

Personally, I've never had to write a letter like yours because I shot the suggestion of a more management-oriented position down in flames, twice. Lucky me! :-)

This is only tangentially related to the main topic of the post, but thought I might ask for your thoughts on a similar dynamic.

My thesis is that companies should not be (or just be much less) functionally org'd—that is, not divided into Engineering, Marketing, Design, Sales, etc. And that this is the root-ish of many typical problems. I don't really need to argue that's true for my question, but given that most companies are that then leads to functional managers—ie. Engineering Manager or Director of Engineering. The role of that manager sometimes involves being in the weeds of specific work, but mostly doesn't. It's usually not architecting or coding, but mentoring and maybe allocating work. The latter of which might formally be a a responsibility, but is embedded in a network of other people's needs that does some pre-determining.

What does that manager do—and I suppose how do they sleep at night if they care about their work—given they're the mentor and blocker of their IC's rise? What I mean is that if the career path for the IC is sorta mythical, how does that manager guide them? If they're honest, then they're also kinda describing their own role as a bit pointless. That would be a reason the IC shouldn't aspire to the role coming from someone who did and now remains (happily?) in it. Engineering is probably the least problematic in this regard because it tends have a bit of power and sometimes isolation within a company. But take something like design, which fights all the time with product because half of the career path/duties for product design (less so brand or visual designers) is blocked by product. So when a designer tells their manager they're having problems with their PM, there is (1) nothing power-wise for the manager to do because neither they nor their bosses are in the chain of command of product and (2) they themselves never resolved this incompatibility. The best they've done is maybe launched something in spite of it. Or maybe (to the company's benefit?) not launched things because of it.

Does the functional manager just give (knowingly or unknowingly) pseudo-career-advice out of circumstance because that's the job of maintaining civility? Is this mostly a matter of everyone all around (managers and otherwise) looking the other way because employment?

Sounds like an extremely prejudiced individual...