I was told my code is old.
Posted by snotreallyme@reddit | ExperiencedDevs | View on Reddit | 644 comments
Principal Engineer 30+ YOE. I delivered a project on Node using Typescript and modern Javascript. I was told my code is old because I use Express and the node module pattern, stuff that has worked very well for me in the past, serving billions of requests. Anyway the CTO who's only got 10 YOE in a niche tells me this and refuses to accept my work and has reassigned it to a senior engineer a few years out of college. I'm likely on my way out of the company now. I'm too old.
Am I? Should I have used Koa or something new and sparkly? Ditched the module pattern for dependency injection? Or is this CTO a moron and I just need to get out?
Cozychai_@reddit
The red flag to me is how it even got this far? How did you build something without defining what framework it'll be built on? Was there no discussion around this?
everyoneneedsaherro@reddit
Yeah either OP or the CTO massively fucked up. Tbf not sure why the CTO is in the weeds like this anyways so in general my money is on the CTO but obviously if a principal engineer is just building stuff on a whim without buy in that’s on them. I have a feeling there’s a lot of stuff wrong with the culture.
datacloudthings@reddit
i'm scared that someone thought that microservices means you really can use any language or framework you want in each different service
GronkDaSlayer@reddit
It depends on the services. You can have some micro services that are written in Node for example and some that are written in Go/Rust. It's really dictated by the situation.
If you want a service that can handle like a billion requests every 24h, you might want to use Go/Rust because you'll need something that won't eat up your memory and CPU like JS, Java or Python would. In other words, the difference between spinning 50 EC2 or 10 should be the rationale behind your choice of language, not the dev/CTO preferences.
datacloudthings@reddit
Sure, but it shouldn't be on a whim according to each developer.
GronkDaSlayer@reddit
Not sure why that would not be popular, it's reasonable and common sense.
datacloudthings@reddit
just that this is r/experiencedDevs not r/CTO (is there one?)
LetterBoxSnatch@reddit
We handle well WELL over a billion requests every 24h with nodejs. Works fine. It's not like we're running crypto algos in js. If we were, we'd be writing plugins via C++ or Rust or Zig or whatever, same as you would for Java or Python, maybe also Go if the GC and weird memory paging is going to get in the way more then help.
Fluffy-Bus4822@reddit
Well, that's one of the selling points people use to promote microservices.
datacloudthings@reddit
yes, I am aware, hence my saying "really"
just because you can do something doesn't mean you should!
Fluffy-Bus4822@reddit
I feel like most of the other selling points for microservices are also things you could do but probably shouldn't.
datacloudthings@reddit
not disagreeing. my feeling has long been that the prefix "micro-" can be highly misleading.
_ak@reddit
That was the Soundcloud development model ca. 2014 (from what I was told working there): if you want to try out a new language or framework, just rewrite someone else's microservice in it.
datacloudthings@reddit
what a joy to come into a team of five devs and have 10 services written in 10 different frameworks to manage
glhaynes@reddit
Seeing people in these comments saying exactly that!
NonProphet8theist@reddit
This actually happened at my last job. The Angular app mS had 2+ and angular.js as well.
other_vagina_guy@reddit
Inferring from post history, this person is probably working at an early stage startup where everyone does everything with minimal supervision and everyone writes code
brodega@reddit
How did OP deliver an entire functional product without any sort of design plan or code review? How would this not be picked up on day 1?
OnlyHereOnFridays@reddit
Exactly this. This normally isn’t an issue because you tend to have established coding practices and preferred tech stacks for delivering something as ordinary as a REST API. And if you don’t, you tend to discuss this way before you get to write code. I don’t know how you get to project delivery and the tech/methodology is a surprise for stakeholders.
obscuresecurity@reddit
As far as I know that is still a fairly modern set of techniques and if they wanted it to be converted to some other framework if written well could be refactored because in the end. It is all the same shit done a bit differently.
Might I suggest a different answer: The CTO is scared of you.
You are not too old. You are too good for the situation. The old saying "A players hire A players, B players hire C players" is very true.
Leading an employee who is equal to or better than you in certain areas, requires humility mixed with a great deal of mental strength. You need to be able to defer, but not so much that things don't go correctly. It ain't easy. Especially with good folks.
As someone in your age bracket, You aren't too old.
People ask me about NoSQL databases, and my question is "What are you doing, that a SQL database can't do." For 95%+ of cases... Nothing. They'd make an extremely confining technical choice that often brings extreme risk... Just for the latest buzz word. SQL isn't flashy. It gets the job done for most things though.
Those saying use more modern things, always ask: Is the more modern thing better, different or worse. At better and different, I learn it. At worse I learn why not, and wait for it to mature or die.
(MongoDB is a great example of this. It is not as bad as it was. That said. I'd still ask why Mongo over PostgreSQL or other choices including sqlite, which is a really damn hard to defeat strawman, to reality check people.)
datacloudthings@reddit
if you start with Postgres and have to prove that anything else truly delivers significant benefits over it before you can actually roll it out in prod.. you end up with a LOT of Postgres
Relative_Scar_2437@reddit
its mostly about scale. postgres is in fact good for the majority of use cases. when data gets larger and stored in json docs and types its just more refined and specific to that data type and strategy than a relational db. at least thats my understanding.
datacloudthings@reddit
Postgres can handle JSON pretty well but sure, it's not 100% the answer. Just often can be if you make it your default.
obscuresecurity@reddit
Is that bad... or merely proof that we can hire alot of people who can use SQL, a pretty common skill vs. whatever special snowflake DB is suggested?
datacloudthings@reddit
oh no, it's not bad at all!
my point is that Postgres is actually the right/goldilocks solution for a ton of data use cases. It is hard to dislodge if you have to prove your alternative is really better (faster/cheaper/more performant/more secure).
"but MongoDB is web scale"
obscuresecurity@reddit
IMHO: Show me a solid benefit, you don't have to crush Postgres. But you have to show me why what you are doing is better than MySQL, Postgres or sqlite.
Mongo is not the laughing stock it used to be. It is now a new laughing stock. :)
I'm a simple guy, I like simple systems that work, with tech stacks I can get lots of people who know.
I will use strange ass tech, if it is the best for the use-case and offers concrete advantages. Pulled off many projects that way. I don't see the world in black and white. But... To steal from the old joke. "Try the feather, before using the whole chicken."
Hot-Hovercraft2676@reddit
Does your CTO not have something more important to care about? Express vs Koa and module vs DI do not sound to me a CTO should worry too much.
leeharrison1984@reddit
Module vs DI is almost just a syntactical choice in JS-land. DI is nice for mocking, which is already very easy even with modules in JS.
The fact the CTO is backing DI without stating why would give me pause. A big pause, likely to never unpause.
edgmnt_net@reddit
Not sure about JS, but some form of DI (either manual or automatic) is pretty standard across the industry, it's a decent default.
LetterBoxSnatch@reddit
We are splitting hairs here when talking about js. Basically DI vs DI-framework. Depending on who you are talking to and the flavor of the month, you can instead talk about fp and first-class functions. It all amounts to the same thing, which is compositionality, inversion of control, and testability.
HowTheStoryEnds@reddit
Not the JavaScript? That would make me pause.
kolson256@reddit
I assume this is a startup because the CTO is in their 30s. In the corporate world, it is exceptionally rare to see a CTO with less than 30 YOE.
In a large enterprise, a CTO would not be involved in this discussion. Even the director of software engineering wouldn't be bothered with this. But in a startup, a CTO is far more likely to be this hands-on.
axtran@reddit
Probably a startup cto if they’re wasting time at that level lol
Forward_Recover_1135@reddit
Yeah, startup 🙄
bh4ks@reddit
I just started my own company. 2 yrs experience. I am the CTO. 😂Tittles don’t mean anything these days.
BasilBest@reddit
Still personally prefer big tittles to small ones
onthefence928@reddit
Classic case of Twitter clout driven development. CTO is stuck following the latest trends and wants to be ahead of the curve so he can write a Twitter post about how his company used x framework and saved millions
Gold_Breakfast_7529@reddit
Sounds to me the CTO doesn't have anything meaningful to add to the compony so he tries and justify his salary
ssrowavay@reddit
This is young managers everywhere, in every field.
Empty-Win-5381@reddit
Lol, total waste, to be micromanaging employees
SirDale@reddit
"yo, I hear you have microservices, so I'm gonna need to micromanage!"
SirDale@reddit
"yo, I hear you have microservices, so I'm gonna need to micromanage!"
utilitycoder@reddit
Tell that to our CTO that had us switch from native mobile apps (new, highly rated and just paid for) to React Native and lose TWO years of feature development to just get parity with what we had.
mjsarfatti@reddit
Sonos, is this you?
ProfessionalSock2993@reddit
I hope you got your resume updated and done some LC practice cause this ship is headed straight for the inevitable iceberg
utilitycoder@reddit
I did update it yes. Sucks because we had built up a great team of native mobile engineers that want nothing to do with writing JavaScript.
PoopsCodeAllTheTime@reddit
definitely get out ASAP and find a company that will cares about your "native dev" skills, from a career perspective, RN is a total downgrade from native platform
NonProphet8theist@reddit
Native mobile like Kotlin/Jetpack and stuff? JS dev here 🥴
utilitycoder@reddit
Yep and Swift/SwiftUI
candraa6@reddit
how come they became CTO in the first place?
utilitycoder@reddit
The build time and the store review is THE SAME for native or react native... it's still two separate binaries to deal with. Also, delaying progress two years to move faster is bass ackwards.
wvenable@reddit
Extra sad is that those native mobile apps (now that they are done) would probably allow you to move faster long-term than a React Native solution.
Your teams already had solved the hard problems that React Native could solve.
bj0rnl8@reddit
I used to feel the same way. I don't feel that way now that we have combined the learnings and patterns we used on native into a single implementation.
the4ner@reddit
Same. We spent a couple years getting comfortable with react native and are now considered a move to expo.
you-create-energy@reddit
🤮
Those are all my thoughts on the matter
ohcrocsle@reddit
Madcry
kirkegaarr@reddit
I think he's using the old module.exports instead of ESM modules?
MissionCake9@reddit
It looks like this case is more of Dev vs PM with their inflated positions in a typical smaller american company.
edgmnt_net@reddit
Someone has to set some technical direction, that's not really the issue. Some businesses care about specific things and in a shallow hierarchy I can totally see it happening.
In some ways I'd prefer things to be a little opinionated over "yeah, whatever, just make it work" because that's how you get products aligned with a certain technical culture and you can fully back things beyond sales and marketing. Some niches can definitely benefit from a strong technical vision, which could well be a core part of the business.
brainhack3r@reddit
Also, if he cares so much, why is he adding his $0.02 AFTER the code was written.
LetterBoxSnatch@reddit
Your CTO sounds like a moron but if you're going to ditch express you might as well pick something more performant but basically the same, like fastify.
I figure options are basically fastify if you want express but fast and modern, a nestjs variant if you wish you were writing SpringBoot or C#, and uWebSockets if speed is your actual concern but you're stuck with js. Or, realistically, if it's the kind of place that nodejs makes more sense than a compiled language for a greenfield project, express is totally fine.
Actes@reddit
As someone who avoids frameworks unless I absolutely need them I must be actual dust to your CIO
dlm2137@reddit
Was there not alignment on technologies at the beginning of the project? This sounds like something that should have come up much earlier.
UncleGrimm@reddit
Yeah this seems like the much bigger issue in the room.
Did OP go into a rabbithole and churn out this project without communicating technical decisions to anyone? Or did the CTO have no interest in communicating, and only became interested when reality didn’t match assumptions in their head?
If either of these happened, then the stack being “old” definitely isn’t the problem here.
valdocs_user@reddit
Or the boss is discriminating against OP for being "old" and thinks calling his code "old" is a loophole.
labab99@reddit
Next post: “I was told my code is foreign.”
Comfortable-Speech17@reddit
"My boss says my code is too emotional."
RelevantJackWhite@reddit
The code is hysterical and motherly
L1ttleS0yBean@reddit
We're worried the code might shift priorities and stop working in order to stay a family
Distinct_Ad5303@reddit
The Code is just to Cody and OE why all the zeros and ones... 🫡💾💽💻
HypophteticalHypatia@reddit
"We're a family here, but it seems like your code here is not your biggest priority in life anymore. "
Xsiah@reddit
The real risk in AI
TheWiseOne1234@reddit
The code was strongly typed until one day it woke up feeling loosey goosey!
RelevantJackWhite@reddit
Skynet be like
S0baka@reddit
We can't put our finger on it, but the code simply isn't a cultural fit!
criminalsunrise@reddit
“My boss says my code shouldn’t have got drunk at the Christmas party and flashed the HR database before vommiting all over the CEOs spreadsheets”
zebcode@reddit
I had a colleague who used to write comments like
/ This doesn't work because fucking Anguar is shit made by a marketing company who don't know a thing about technology. Yada yada yada/
Okay I know comments aren't strictly code but they were emotional.
PoopsCodeAllTheTime@reddit
was he wrong tho?
zebcode@reddit
It's neither here nor there, he used to complain about everything. Nothing is perfect. honestly thought he had deeper issues and whilst it was sad to see him going through it, he was also a bit of a nightmare to work with.
StillRutabaga4@reddit
My boss says my code is a woman and gay
DigThatData@reddit
"My code is apparently not a good culture fit."
ScryptSnake@reddit
"I was told my code is non-binary."
Fun-Breadfruit6702@reddit
My dog are my code
Antique-Echidna-1600@reddit
Well your code shouldn't cry in the office!
davetherooster@reddit
Coming over here, using our variables!
aqjo@reddit
They’re eating the variables. They’re eating the constants. They’re eating the code.
0ttr@reddit
They’re deleting the variables. They’re deleting the constants. They’re deleting the code
grangaard@reddit
My code was told there would be no fact checking.
Adeptness-Vivid@reddit
Underrated comment 😂.
Hot_Kronos_Tips@reddit
“Does this code make me look fat?”
Ghostflake@reddit
l will build a great, great API. The best API... and make the frontend developers pay for the documentation!
traitorous_8@reddit
Someone needs to get Shane Gillis to read this thread and voice it.
thatsalrightbrah@reddit
lmao, I’m dying 🤣
Only-Requirement-398@reddit
Of the programs that run here
zaibuf@reddit
They took our loops!
samudrin@reddit
Stealing our imports.
johnpeters42@reddit
And our inheritance
Jay_nonymous@reddit
Placing a tariff on all imports
zebcode@reddit
I just woke up at 0233 hrs and read that as:
Using our vegetables, which though totally irrelevant sounds so much better in my head. I should go back k to sleep now.
Intrepid-Stand-8540@reddit
But it said "global"!
flashlightgiggles@reddit
...because it was written in the wrong language?
Froot-Loop-Dingus@reddit
Used colour instead of color…Got’em!
RealMcGonzo@reddit
Code might get pregnant and ask for time off.
Abject-Tadpole7856@reddit
The code stops working for a few days every month.
crimsonpowder@reddit
Darn code doesn’t even do the needful.
Hot_Kronos_Tips@reddit
Hahahahaahh!!!
Agent_03@reddit
"What are these 'foreign' keys you keep talking about???!"
Sunstorm84@reddit
I approve of polyglot developers, but that doesn’t mean I want the variable names in fifteen different languages.
Karyo_Ten@reddit
Switch to C++ and code with "friend".
RealFrux@reddit
Many years ago I had to debug and “fix the last 5% and tie the knots together” of a project a Turkish subcontractor delivered. Every variable name, function name etc was in turkish. It was doable since the code is still a logical language but it was twice as hard and made me realize how important good naming is for code readability. A good function name can sometimes be the best documentation.
aiij@reddit
"I was told my code was disabled."
That is kind of the point of feature flags after all...
-pooping@reddit
Yeah, its all spaghetti code
Training_Strike3336@reddit
No Steve we said you ran foreign code.
rmslashusr@reddit
I was told my code attracts bears once a month.
yaykaboom@reddit
What do you mean? Doesnt everyone write code in Arabic?
Empty-Win-5381@reddit
This is so Hilarious
samudrin@reddit
Brown field code.
Intrepid-Stand-8540@reddit
"I was told my code is ugly."
Empty-Win-5381@reddit
LMAO
DogmaSychroniser@reddit
Int počet, is that you?
rdem341@reddit
lol...
I almost spat my drink out.
UncleGrimm@reddit
Definitely possible, they have a senior engineer “a few years out of college” lol. Culture comes from somewhere and plenty of CTOs just like blowing smoke up their own ass.
NPVT@reddit
They pay them less
Empty-Win-5381@reddit
Shold there be longer you think?
SpeakCodeToMe@reddit
Which is wild given the relative newness of all of the referenced technologies.
look@reddit
Express was released 14 years ago. That’s relatively new?
SpeakCodeToMe@reddit
Compared to Spring or Rails or Laravel, which combined power like 99% of the non-CMS internet, yes
redcc-0099@reddit
Not who you're asking, but in 2019 I was writing VB6 code that passed data to Crystal Reports 9 or 11 reports for display. From my skewed experience, yes, it can be considered relatively new.
look@reddit
I think “new” has different meanings in different sectors of the industry. Even node itself would be considered old tech in many startups, replaced now by bun or deno.
Not sure what kind of company OP is at, but the JS stack evolves quickly, so it’s not uncommon for something like Express to be considered ancient now. In some settings, it be like delivering a stack of freshly punched cards of COBOL.
PoopsCodeAllTheTime@reddit
> it’s not uncommon for something like Express to be considered ancient
Oh no, the frontend engineers are starting to have opinions about the backend libraries...
look@reddit
Haha. Of my last five commits, four were in Rust and the fifth was a Typescript implementation of a recently published constant time, consistent hashing algorithm.
redcc-0099@reddit
Fair point.
Indeed.
alinroc@reddit
VB 1.0 was released in 1991. Maybe there are remnants of MS BASIC that are in VB6 which necessitate the older copyright?
redcc-0099@reddit
There might be. I could also be misremembering the copyright date as 1996 or 1998.
Either way, I went from then modern C++ to VB6 ~10 years later. I was somewhat shocked we were still using it. When I left that coolant in 2019 it was still in use.
PoopsCodeAllTheTime@reddit
the most battle tested library for the de-facto JavaScript as-a-server engine?
Dawg... you have to consider the alternative options, most have decadeS (with an S) since they were released
pboswell@reddit
30+ is old now?
valdocs_user@reddit
Hence my use of scare quotes. Where I work (Federal government), 50+ isn't old.
HovercraftActual8089@reddit
No if all other code was using import x from n, and then he wrote a bunch of stuff using require() he is in the wrong. This has nothing to do with ageism anyone reading a code base for 2mins could have figured out what the standard pattern was.
Not deviating from the standard way of handling common problems is shit you learn in your first few months I dunno what this dude is whining about.
DirectorBusiness5512@reddit
This is probably it right here, sadly
Fit-Goal-5021@reddit
> Did OP go down a rabbithole and churn out this whole project without communicating technical decisions
You'd be surprised of what is expected of developers these days.
UncleGrimm@reddit
That expectation isn’t surprising at all for a Principal at what sounds like a smaller company.
But if that was truly the expectation, that OP just get this done as fast as possible and not spend time in meetings over it, CTO is just reaping what he sowed. Node + Typescript isn’t even that old of a stack, it’s still widely used, CTO is acting like OP wrote him an app in ASP.NET Web Forms
oorza@reddit
It sounds like he was writing commonjs which is more-or-less deprecated as he's writing it.
CTO probably was fine with TS but wasn't expected 2019 era TS.
Dad-of-many@reddit
if the cto said this at the end, the CTO wasn't doing his job. Capital P detection on full.
oorza@reddit
What does this even mean?
If I'm in a Java/Spring shop and I give someone an assignment in Java, I can reasonably assume anyone who has two years of experience is smart enough to know that diverging from Spring would be a special circumstance. I can damn well expect anyone at staff level would take a project assignment and as step one in building the implementation plan, understand what the current ecosystem in the department is like. Any staff engineer who doesn't understand the value in writing code that blends in with everyone else's needs a demotion.
Dad-of-many@reddit
"P" as in prick. Follow me?
The op has more experience in code than the CTO. If the CTO is earning his salary - which I'm smelling smaller company, less staff and titles out the wazoo - I'm guessing no one set the development tools. That's on the CTO.
Clear enough for you?
MathmoKiwi@reddit
pffffttt, I could write their web app in FoxPro!
woundedkarma@reddit
No one should ever do that to themselves.
huangxg@reddit
20 something years ago I was working on a paper, my boss asked me a few times when I can complete it. I said we need a prototype to demonstrate the ideas in the paper. Then he asked when I could deliver the prototype.
So I spent a day writing 800 lines of FoxPro code, an expert system.
datacloudthings@reddit
I'm going to go ahead and ask you to write a functional spec first, mmkay? and then a technical spec? and make sure you specify every method in the spec, that's what it's for after all. that'd be super.
CpnStumpy@reddit
Please. I want it back, give me my chance!!
MathmoKiwi@reddit
You want FoxPro back???
CpnStumpy@reddit
Make Programming 1994 Again!
djingrain@reddit
i know at least one company thats just now moving to Node + Typescript from JSP and OpenJDK 8ish
Empty-Win-5381@reddit
Lol, sorry for being too productive, Am I Right?
JimCaryNC@reddit
Too many notes.
brokenfingers38@reddit
I'm going to try to remember this "reality didn't match the unspoken assumptions" bit because everyone has those and it causes a lot of problems. The more long term the project, the bigger the conflict when these arise.
cballowe@reddit
A project for a principal engineer is going to be one that touches things across large chunks of the company, requires buy in, probably involves several staff level components delegated out to other engineers, and coordinating all of those efforts/making sure everyone is on the same page.
Even if it's a smaller project, it should have had frequent check ins, code reviews, design reviews, etc.
I'm having a hard time seeing "I built this whole thing and it was rejected" as behavior in line with the title. It might be a very high quality work product, but junior engineer development practices/behavior. (Maybe there's more to it than the story telling let's on.)
matadorius@reddit
Some companies are run by 4 people
Du_ds@reddit
Some companies are 4 people*
matadorius@reddit
Hopefully you are a shareholder
Du_ds@reddit
No I'm a dev who left a start up lol
matadorius@reddit
Hopefully they had enough money to pay you
Du_ds@reddit
I left because they could no longer continue to afford me 😂
Western_Objective209@reddit
I mean, these frameworks all work, they are mature, well tested, in used in many production systems. They are not going anywhere, and will continue to be supported for the foreseeable future. Having another engineer who is likely being paid tens, or even hundreds of thousands of dollars to re-write it, the only advantage being it's written in a "new" framework, is just a fantastic waste of money and the sign that this CTO is not a serious person
compubomb@reddit
Oh, they're serious, just about their zealous misuse of time / funds. Also very likely they don't rewrite, more likely a heavy framework refactor.
Western_Objective209@reddit
I meant not serious as in the guys a 🤡
A guy like that is dangerous for a company
beawaldo@reddit
This is definitely a culture issue, starting with the CTO.
driftingphotog@reddit
Hijacking the top comment to say it's entirely possible the CTO is just trying to force you out. Worth noting that employees over 40 are a protected class in the US.
Empty-Win-5381@reddit
How are they protected exactly?
susgeek@reddit
In the US, the Age Discrimination in Employment Act forbids age discrimination against people who are age 40 or older.
Empty-Win-5381@reddit
Does that mean an event for kids should have to allow 40 yr olds?
samsun387@reddit
Old age discrimination against 35 is okay?
Empty-Win-5381@reddit
Interesting right?
Big__If_True@reddit
It may not be in some states, but federally yes
Alystros@reddit
Legally, yes!
codeguy123@reddit
As with a lot of things in life - it doesn't matter what you think or even what you know. It matters what you can prove.
Pttrnr@reddit
and how many people did it actually help? no employer says "you're too old", it will be something allowed, like "code too old/missing xp w/ current tech"
peripateticman2026@reddit
Precisely.
HowTheStoryEnds@reddit
Code in lisp, code is part of the company, companies are people, protections kick in,...
peripateticman2026@reddit
How do you prove it though?
diveraj@reddit
That's something you'll find out when you hit 40... Ask no more questions about the subject.
tacotacotacorock@reddit
Am I missing the sarcasm because this is terrible advice. You don't just magically find that information out when you turn 40.
markyboo-1979@reddit
From the up vote count, I'd say extremely likely.. Perhaps he has a friend that he would like to help out and you have the role title for said friend?... Also as others have said if you received no regular input then perhaps you might have thought to go and satisfy yourself that your work was satisfactory? Not trying to berate you, but unless that is standard where you work, if that is the case, you didn't do yourself any favours... Also, you must have been using node..js fairly extensively in your work, so why all of a sudden would that present a problem to management??
huangxg@reddit
Would I be double protected if I were 80 years old?
ventilazer@reddit
No, but the US government gives you triple the protection when you hit 120. It only took the government seven years worth of congress sessions and a trillion dollars to make this wonderful law possible. Vote for more government, people, it's totally worth it!
goomyman@reddit
There is something seriously wrong at a company if any project can go more than a week without spotting these issues.
NiteShdw@reddit
Totally agree.
I used to be very opinionated. Now I care more about standardization than any specific ideology.
If I can jump around between projects and they all use the same tools, same infrastructure, same linter rules, etc., that's far more valuable than debating which frameworks or tools are best.
zaibuf@reddit
jQuery and MVC it is then
qalc@reddit
yeah....like it's browser code. things change so fast you have to keep up-to-date, that's just how it is. if you want to work with the same technologies for longer periods of time, there are other areas of specialization that accommodate this.
HovercraftActual8089@reddit
Yeh this has jack shit to do with ageism, no matter what age you are if you can’t be like: “oh they do x by doing y everywhere” and then you decide to solve x by doing z you are not a good dev. Regardless of whatever the hell solution you think is better you do it the same way or you talk to your boss about a larger refactoring project.
OrderlyWreck@reddit
I'm with you on this one... I don't even care what language is used as long as it was picked because it's good for whatever problems we're solving.
Empty-Win-5381@reddit
Maybe he Undercut Standardization
mackfactor@reddit
Yeah, if there's a standard, obviously you use that. If there's not and no guidance was given, this seems like maybe it's a bad culture. Also, OP, was the CTO really reviewing your code? How big of a company is this?
nwbrown@reddit
And if it didn't it's the fault of management.
fired85@reddit
Yeah: Node, Typescript. If we had to agree on every low level framework and syntactical choice up front we’d never get anything done. CTOA needs to get off high horse.
nachoaverageplayer@reddit
Maybe this is the case when you are working solo, or in a company that uses 300 different technologies that vary from project to project and is OK with that for some reason.
theDarkAngle@reddit
The modern way is containerized App Delivery platforms. It does generally mean you have freedom to write apps however you want.
I could see them being like "wtf" if he chose some really obscure or inappropriate tech. But Node+TS is still overwhelmingly the most common choice for services these days.
Maybe shouldn't be due to inefficiency and resulting cloud costs, but that's a different conversation.
Come to think of it, I could see his boss getting mad because he wrote something that will cost way more compute resources than writing a more efficient language or something. But "old" does not seem appropriate nor accurate.
SpeakCodeToMe@reddit
Absolutely not. This is how you get sprawl and a maintenance nightmare.
theDarkAngle@reddit
Absolutely not to app delivery platforms being the modern approach, or absolutely not to the implications of freedom of implementation as a result?
oorza@reddit
Complete freedom of implementation is something engineers love to imagine but I doubt actually exists anywhere in practice.
At best, you wind up in a situation where you have a legacy language that's still begrudgingly supported, a first-class language for containerized apps, Javascript, and a handful of very trusted staff level engineers are allowed to experiment with different implementations for specific projects, which the expectation that their experiment will either become first class itself or no longer continue to be used (in which case the engineers are generally expected to add a rewrite to their own backlog of tasks they never actually have time to work on).
datacloudthings@reddit
it's wild how many people here seem to think CTOs shouldn't have any concerns about fragmentation in their tech estate.
Folks, today's greenfield code is tomorrow's legacy code that we have to maintain after the writer leaves the company. Period.
oorza@reddit
Fragmentation is specifically a reason to avoid Golang, in my experience. There isn't (or wasn't two years ago, the last time I did this research) any ecosystem large enough and stable enough that you can write code into it and reasonably assume easy-to-implement security patches for 3-5 years. I can get that guarantee from .NET, Spring, Rails, even NestJS at this point, so I should be able to assume that all my C# projects look the same, all my Java projects look the same, etc. unless someone strays from the golden path.
There are fewer ways to do things in Go than in, say, Java - in that you are correct. But that's a false comparison, because the comparison is actually Spring vs. whatever ecosystem you buy into with Go. And there's assuredly fewer anointed ways to achieve a task in Spring/Rails than any Go framework because of deficiencies in Go itself.
datacloudthings@reddit
I think the idea is that for most smaller services all you need is the standard library. there's a real focus on removing dependencies where possible. what is the "extra" security risk you get with Go?
(not saying it's perfect for MVC/CRUD/scaffolding stuff, btw, but if i have a new hire pop open the top in 4 years on a Golang service I write today, I expect that she will be able to find her way around pretty easily)
HovercraftActual8089@reddit
Disagree, if people don’t standardize practices nothing would get done.
Saying everyone should be able format and do things however they want is dumb as hell. Example I want to grep all instances of a module being imported but my pattern misses the OPs because he decided to use a different pattern.
snotreallyme@reddit (OP)
There was alignment (supposedly) on the database and that it would be on Node. I had no idea that we needed alignment on the node platform, especially Express since its tried and true and is the bulk of node server deployments by far. The CTO has a lot of bad ideas but there's nothing I can do about them. He won't even discuss it. He'll also have a discussion where he's not at all paying attention, nod his head in false agreement then weeks later come back pissed of that I did something we "agreed" upon.
phoenixmatrix@reddit
Agreed. Being a good software engineer isn't about pumping out code (that is getting replaced with AI anyway), it's about communication. It doesn't matter if you're right if no one agrees with you or knows about it.
Step 1 of this project should have been discussing how it would be implemented. That is a fail if it wasn't done wether they have 1 year of experience or 40.
The tech itself is fine, I still use Express any time I don't have a reason to use something fancy. It works, its well understood, security static analysis tools understand its patterns well to catch bugs. It's great. But that has to be discussed before hand.
dagrooms252@reddit
In a small startup you usually just have to tell someone "see that mountain? Meet me there in two weeks." Up to you how to get there.
Now if the CTO is unable to make specific points about why the code won't work for them (low performance, lack of flexibility for long term, maybe even just outside of the company's tech stack and too much cognitive load for coworkers) then you have a code princess and you should get away from him.
It sounds like the code looking "old" is a straw man, not a real argument. But if it's outside of the acceptable tech stack for that company, you've now learned a creative constraint, and you proceed with this new knowledge.
HovercraftActual8089@reddit
Yeah exactly… there is no “right” way to handle it unless there are different patterns all over for no reason.
SequentialHustle@reddit
+100, you shouldn't be rawdogging any new microservice even on teams less than 10 engineers. Tooling, libraries and project structure should all be decided on already unless it's completely greenfield.
arealguysguy@reddit
u/snotreallyme - really curious about this. it’s wild to think you delivered an entire project without any sort of check ins, architecture discussions, or demos. how long were you working on this?
schmidtssss@reddit
Yeah, lol, how did this happen?
babababadukeduke@reddit
This ^
atx_buffalos@reddit
I’m a little shocked that your CTO is doing CR’s. Either he has too much time in his hands, or he’s a huge micromanager, or he has it out for you. If you think what you’re doing is incorrect, that’s one thing but without seeing your code, no one can point to what he meant exactly and it sounds like an environment you’re better off away from.
Helvanik@reddit
I have to say that calling code old feels a bit weird to me. Unless it doesn't contain some very important syntax introduced in recent years like async/await in favor of co generators or something like this, it's probably a (bit inappropriate) way for him to say that he doesn't like the way you code.
There might be standard guidelines in the company though, in which case it's your job to follow them (if you've been notified of their existence first, of course).
RipOk74@reddit
Have you tried Cobol? If not, would you like to? Because when you do you'll start to understand.
kirkegaarr@reddit
Well, it sounds like he's using the old node module pattern instead of ESM. I'd reject that too, but it should be pretty simple to adapt.
MissionCake9@reddit
It's def not old. PM (the CTO) is picky, but from the whole dynamic it seems CTO trusted the project tech to Dev (the Principal), and Dev didn't over-communicate with his manager, apparently for holding a grudge, which ended with CTO overstepping and micromanaging. Dev /seems/ to be resentful: "only got 10 YOE", "senior engineer a few years out of college", "I'm too old". 10yoe is not negligible exp, he may be par or even more graded than OP b/c knowledge curve is not linear, especially in tech for +7yoe's. Dev may have righteous to some complains, he may be right to feel undervalued at this company. But those are not valid arguments, the process was flawed, oversights of both parts. And not the best professional decisions.
coworker@reddit
OP is likely paraphrasing (incorrectly) what the CTO actually said which is that the code used old patterns.
dnbard@reddit
It‘s not old, it’s vintage.
OrdoErasmus@reddit
You have absolutely been discriminated against.. sue... now..
domusvita@reddit
I worked at a startup and the CTO was constantly over my shoulder, “why would that be a POST request, seems weird.” All I could think is “the only thing you know about rest is you can’t spell it.” And his burps smelled like cigarettes, Diet Coke and poor self esteem.
airporkone@reddit
sounds like your CTO doesn't know shit, pretty much every newer node server uses express anyway. plus in my 15+ YOE express was the only one that didn't give me any headaches. Was it a little more work than some other "do it all" frameworks? Initially, sure, but maintenance has always been way better.
Bottomline is new !== better
BeDangerousAndFree@reddit
Your CTO has something else against, and this is not his real issue
Gizmoed@reddit
Typescript Javascript. Express node module pattern, they don't know any of those words...
ben_kird@reddit
I have more than 12 years experience and I’m working with amazing engineers (one whose in his 70s - 40 years of experience) and what I found is he uses “old” technology blended with new patterns. What you get is tried and tested patterns (robust software) implemented with fresh ideas making the whole system amazing.
You’re CTO sounds like a twat and doesn’t really appreciate wtf he’s talking about. And you’re never aged out of software - I’m always in awe of the very senior engineers.
Sounds like you need to find a better company.
AdmiralAdama99@reddit
Can you go into more detail about the "old technology with new patterns"? Sounds interesting. Do you mean an old language written with new design patterns? Which ones? Why's that combination superior?
Naive-Treat4690@reddit
Wonder if he meant new technology with old patterns… That would make more sense to me
jrb9249@reddit
If I had to guess, I’d say he’s probably referring to the clever use of old and obscure low-level libraries that still reside in modern frameworks. They can be extremely useful if you know how to use them well; eventually, you have a patchwork of libraries layered on top of these tools and younger devs don’t get the exposure to learn them.
PhilipLGriffiths88@reddit
I love that I know you are a fellow Brit from using the word Twat.
felpmorn@reddit
That’s was exactly my thought
RocksAndSedum@reddit
the problem could be that it doesn't follow the patterns and technologies used across the org and that can be a real problem from a maintenance and support perspective.
Dixtosa@reddit
Old technology with new patterns sounds horrible. Imagine putting mediatR in WinForms app.
ben_kird@reddit
I was talking more along the lines of Makefile (make), Postgres, etc.
UMANTHEGOD@reddit
Nice strawman 👍
rexspook@reddit
I don't understand "accept my work" here. Did you not have code reviews for this entire project? I've never really had someone have to decide to accept or not accept an entire project after it's already been written. The process should be more iterative than that...
But I do agree if this was his actual reasoning it sounds like transparent age discrimination.
veryonlineguy69@reddit
agree on the code reviews part, hard disagree on the age discrimination part.
if the CTO used the phrase “old code”, what he probably meant is “old technology” not “code written by an old person”. which is completely legitimate. part of being in software engineering is continuously learning, because technology evolves. yes there are extreme cases like frontend frameworks. but if you’re using tools/frameworks/patterns that were popular 10 years ago, don’t expect many people to come knocking on your door for greenfield projects 🤷♂️
DigmonsDrill@reddit
I haven't done dev work in my day job for a while, so I asked someone a year ago what's a modern stack and they told me Node + TypeScript.
flexiiflex@reddit
They're presumably talking about express, which is starting to show some ageing.
JS is filled to the brim with devs obsessed with following the newest trend, and currently one of those trends is "Express bad, use Hono/Nest/etc instead".
Whilst I probably wouldn't start a brand new project in Express myself, acting like old reliable isn't "acceptable" is absolutely laughable.
flexiiflex@reddit
For reference, current bleeding edge seems to be: - Hono instead of Express - Biome instead of Prettier - Remix instead of Next - Bun instead of Node Whilst I personally might choose the more modern equivalents in some situations, this doesn't make them explicitly "better". The good thing about the older, reliable equivalents is that they're stable and consistent - something that you can't guarantee with the brand new equivalents. Bun, for example, feels great to use but tends to throw segfaults so I would never use it for anything critical.
markyboo-1979@reddit
Perhaps, by old code, it was meant as in a large proportion of the code hadn't been updated /optimised, so disappointed with the effort put into improving the product... If there was no regular code review, that would make more sense...
rexspook@reddit
Sure but that’s not what he said.
veryonlineguy69@reddit
definitely not great communication on his part
rexspook@reddit
Sure if you reinterpret what he said to mean something entirely different you could say that
veryonlineguy69@reddit
in every conversation there’s
those things are not always the same. without being a part of the conversation, i can’t make a call.
but i will say OP seems really stuck on being “too old” for the company. if that’s where their head is at, it’s possible they misinterpreted what was said.
if the CTO really did say that, shame on them & they’re wrong. i’ve had great engineers with 30+ YEO on my teams, but they were willing to learn new tech 🤷♂️
oorza@reddit
Your list is incomplete.
There's:
oorza@reddit
The first three things rarely have more than like 75% overlap with each other, which is why the rest of the list is usually so chaotic.
rexspook@reddit
Yeah, that’s why I’m only commenting on what was said rather than guessing what they might have meant. You are making the call you say you can’t make.
tangerinelion@reddit
Is OP an employee or a contractor? I can't imagine how an employee finishes a project and the next step is the CTO gets to accept or reject the work.
rexspook@reddit
Yeah that’s where I’m lost. Even as a contractor it’s insane
BarrySix@reddit
"Old" means proven and it means reliable. It sounds like the CTO has no experience, is full of hot air, and wants to stick to the last thing he read, which is probably the only thing he knows.
You don't need skills to be a CTO. Some of the people I've met with the title CTO couldn't ping localhost without getting a timeout.
redirect_308@reddit
Tech stack shall be decided before working on a project
UIM-Herb10HP@reddit
If the dude is in any way insinuating that you yourself are old, I'd bring it up with someone else if that is an option.
Dad-of-many@reddit
op needs to become a consultant. CTO with 10 years of experience? He's a prick. Move on.
OblongAndKneeless@reddit
Problems all around, but if you have a working product that meets requirements, there's no need to trash it and start over, is there?
Apprehensive_Hawk856@reddit
Sounds like a lawsuit for ageism since this is exactly how I’d build a project today lol
The_Startup_CTO@reddit
Not sure this is what you want to hear, but: The CTO is mostly right. Technology has advanced over the last 30 years, and it's not about writing code that you are fastest with, but code that a modern team can work with. Doesn't mean that you need to throw away all you learned in the past - but if you stop learning new things, you will indeed end out of the company and will struggle to find a job for any company that has a codebase newer than 10 years.
Teh_Original@reddit
The complaint is about ExpressJS as far as I can tell. ExpressJS is still actively maintained and being modernized as far as I'm aware. It's like saying we shouldn't use SpringBoot because it's first release was 10 years ago.
bwainfweeze@reddit
Express is functionally similar to Rails routing. As are most of the Node modules for web apps. Several of the alternatives only added features that ExpressJS now has, and aren't being maintained all that well. And some end up wrapping Express, which is just ridiculous.
Patch85@reddit
The dependency injection argument has some merit, but i wouldn't call it a deal breaker.
Express still works just fine, but there are now alternatives that use more of the modern web platform, which imho is a benefit, but certainly wouldn't pish for a known unmaintained project
bwainfweeze@reddit
I’ve worked with Spring and AngularJS enough to have figured out that DI is not the panacea for mocking that people claim it is. And I’ve worked on a ridiculously large NodeJS monolith and we did not have enough routes to make DI into a feature there.
When I look at Nestjs features, I see one or two but the rest is just, “we copied SpringBoot” and that is not a feature, that’s a bug.
whostolemyhat@reddit
We've been reviewing tech choices at my work recently, and chose not to go with Express because it absolutely wasn't being maintained, for a long time, while other frameworks are. Express v5 getting a stealth launch doesn't massively change things yet since it's not clear if it will keep getting support.
bwainfweeze@reddit
Wasn't a stealth launch.
whostolemyhat@reddit
I haven't seen any announcements, and the articles and newsletters I saw that mentioned it also made it seem like it came out of the blue. If it wasn't a stealth launch then it definitely wasn't publicised much.
bwainfweeze@reddit
I saw two, you can borrow one of mine.
NullVoidXNilMission@reddit
It's not maintained afaik
The_Startup_CTO@reddit
"As far as you can tell" does a lot of lifting here, especially when even OP mentiones not using dependency injection and no esm already in the first post.
ChineseAstroturfing@reddit
The latest version of Express was released 22 days ago. There’s nothing “old” about it. What the hell are you talking about? You make it sounds as though they chose some obsolete decades old framework.
A principal engineer usually has free rein to choose whatever tech stack they see fit for the job. That’s what you’re paying them for. If the CTO is micromanaging that, to me that’s a huge red flag.
Express is literally the most popular and battle tested web framework for node. Any competent dev can pick it up and use it very easily.
The_Startup_CTO@reddit
It's not about Express, but about choosing tech based on personal preference instead of what is best for the project.
ChineseAstroturfing@reddit
We don’t have a ton of info, but it sounds to be the exact reverse. Op made the decision based on merit. Choosing what made sense for the project at hand. CTO made a decision based on personal preference. CTO didn’t use any logic in his decision. The code just looked “old”.
The_Startup_CTO@reddit
Which details from OPs posts bring you to this conclusion?
gjionergqwebrlkbjg@reddit
Take a look at history of express releases and number of contributors:
https://github.com/expressjs/express/releases?page=2
It was abandonware between 2022 and 2024. There aren't many active maintainers.
th30rum@reddit
By that logic, we shouldn’t be choosing stable tech but just trend hopping and picking whatever obscure new framework is out there
ings0c@reddit
Welcome to front end
th30rum@reddit
lol I plan to stick with Angular forever until something really new comes along at this point. used a lot of frameworks as well as old school JavaScript
gjionergqwebrlkbjg@reddit
There's a lot of space between jumping on the newest thing and using abandonware. Express has had minimal development done in the last years and there's only a couple maintainers.
The_Startup_CTO@reddit
Nice straw man. Hopping newest to newest isn't what is proposed here. But when starting a new project, we should choose the framework that best fits the specific problem (including e.g. the hiring needs), not just go with whatever one person is most familiar with.
poolpog@reddit
Node and Typescript are 30 years old?
Teh_Original@reddit
lol. I hear Java and C++ are pretty old, we should get rid of them.
bwainfweeze@reddit
Elixir is almost 10 years old. What a fucking embarassment.
sieabah@reddit
This is such a Senior JavaScript Engineer take that it has to be bait.
At least a basic googling of the tech being mentioned would bring up that typescript is actively maintained and growing. Express is maintained and literally just dropped v5 in the last month or so. The only "old" thing is him mentioning using commonjs imports instead of esm imports.
gjionergqwebrlkbjg@reddit
Express was pretty much picked up from being abandoned for a few years, just look at the releases:
https://github.com/expressjs/express/releases?page=2
Not even dependencies were maintained. A new version of express still makes it a risky choice from point of view of longevity.
djnattyp@reddit
This has to be the same dumb CTO's reddit account...
textwolf@reddit
was going to say looking at the username, is this a satirical account posting fart-sniffer rage bait...
awkward@reddit
I’ve been trying to get build pipelines working at the new job. Not the end of the world, but I wouldn’t love it if 10kloc of commonjs was dropped on my lap.
psbakre@reddit
As long as your code is using ESM, your CTO is a dick.
stopbotheringmeffs@reddit
Weird that he's worried about how "old" it is versus whether it works or not and is in production. Last time I looked, paying customers didn't give a shit what whiz-bang library the software uses. Man, this company must have money to burn if they're having people write stuff twice.
oscargodson@reddit
As a CTO myself, and of more than one company, one of which was acquired by a well known company, there are a lot of red flags here. Two of the main ones to me are:
If the company is small enough for the CTO to be reviewing code the CTO should have set expectations or checked in before this was completed. How did it get until the very end?
We use Express now. Why? Because it's tried and true. It's just a basic HTTP server and router. I'd absolutely go with something well known and stable for something like that. Even if it wasn't my first choice, as the CTO, there are so many more important aspects than that. The exception to this is if we were using Koa already and you implemented Express in addition to it then yea id say why are you reimplementing this?
The question for you OP is that are you using something like Koa or whatever alternative elsewhere? Did you deviate from the standards internally? If not, that CTO is being ridiculous.
TheMrCurious@reddit
Find a new company because a CTO that throws away working production code instead of using it while developing the replacement is going to continue making a lot of “bad for business” decisions.
Rainbike80@reddit
Get a lawyer...
bpleshek@reddit
A manager/user/customer should define what they want. It's up to the developer/development team to determine how to do it.
BoysieOakes@reddit
Shoot I still use Perl every day. If it ain’t broke don’t fix it. That being said, we are moving everything away from Perl. Modern standards are easier to meet with modern languages in a lot of situations. That being said, it’s hard to beat Perl with Lot of things still, for server administration it’s held up considering how old it is. If I was king for a day we’d be doing everything using AstroJS. Alas, my boss makes sure I get paid so C# it is. I’m just glad I work in a place where I don’t have a CTO throwing the kind of crap the OP had thrown at them.
thGlenn@reddit
To be honest bro, CTO has to work with their current workforce. Why wouldn't they accept your solution if everything works as expected?
DeterminedQuokka@reddit
So it’s not that he’s a moron it’s that he’s falling into the trap of resume driven development. I’ve just spent the last 2 years rolling back a bunch of this at my current job into old stuff like Django.
You definitely should have a default stack you are bringing stuff up in when you don’t have a reason to use something specific. Is it his first time as a CTO? Maybe he doesn’t know the guidelines he should be providing? But everything should be sort of in the same types of not the same framework for debugging reasons so any Eng can work on any code. So if the rest of it is in some weird new framework then I would use it again.
But the old frameworks are still around for a reason because they are nice and stable.
ToThePillory@reddit
Really, who knows? Nobody has seen your code, maybe it's awesome and the CTO is clueless, maybe it's shit and you deserve to be fired and never allowed to use a computer again.
You've got 30 YoE, maybe you just need to move jobs.
java_dev_throwaway@reddit
node modules is old? I didn't even know there was a different way to download the deps lmao
oGsBumder@reddit
He means using require instead of import (commonjs vs ESM) I think
java_dev_throwaway@reddit
I'm still confused. Say you want to use react, you do npm/yarn/pnpm install react and then do import React in your code. But there still is a node modules folder. Is there some other way to do it where there isn't a node modules folder?
That doesn't make a lot of sense to me because every language I've worked in has deps I can pull into the project and they have to actually be downloaded to somewhere right? Java you have m2 cache, python virtual envs, js/typescript node modules, etc.
What am I missing here?
Fluffy-Bus4822@reddit
It's nothing to do with node_modules, npm, yarn, pnpm. It's to do with how the build system imports those modules.
There is an old way and a new way. They don't mix well. People used to write e.g.:
Modern code looks like this:
https://blog.logrocket.com/commonjs-vs-es-modules-node-js/
java_dev_throwaway@reddit
Ahh ok so actually all I know IS the new way lol
Ill-Ad2009@reddit
Not node modules. He said the "node module pattern." That's referring to how modules are used
elvalalo@reddit
I don't think he is talking about using node modules. He is talking about module pattern when you have files (modules) and you are exporting your method via module.exports.
Alternative would be to use some other framework, for example NestJS which has classes and DI instead of exporting methods.
thedifferenceisnt@reddit
But that's very easy to change. This makes no sense.
oGsBumder@reddit
I agree, there are probably even codemods for it
thedifferenceisnt@reddit
https://github.com/azu/commonjs-to-es-module-codemod
Curious-Coast-7918@reddit
If that’s what OP means then I agree with the CTO. I was migrating code away from that at my first professional role 8 years ago. If you’re writing a new project in 2024 and you’re using the old module system, that’s a giant red flag.
0xFatWhiteMan@reddit
What's the new way?
veryonlineguy69@reddit
i think they meant common js modules. the
module.exports
&require
way of doing thingsbeth_maloney@reddit
Ecmascript modules are the other option. I don't really use nodejs but aren't commonjs/node modules on the way out?
j-random@reddit
CTO is a moron. Get out. Trend chasing is a pox on this industry. Find a company that values working software that is maintainable and performant.
mcAlt009@reddit
Depends.
If the CTO wants a newer framework, and the pay is decent, I'd just do it.
Why are you even using JS. All the cool kids use Zig or Nim. Who needs stable tooling ?
sieabah@reddit
People who can write zig are too expensive for the companies who are generally looking for JS devs. If you want something newer than express v5 which was released on 9/10/24 (last month), then tell me what it is. The CTOs argument immediately fails the sniff test. The only thing he is technically right about is the import strategy but that's a PR comment not a "I can't trust you to write anything" moment. JS can be incredibly stable.
mcAlt009@reddit
My comment is clearly satire.
However, if the pay is decent and the CTO wants a new shiny toy, give it to them. It's not worth it to try and convince a C level they're wrong.
sieabah@reddit
It's not convincing them that they're wrong, it's just introducing them to the newest library completely by coincidence. Express has been at version "4" since 2014, which is great for stability but not so great for feeling "new". Express just so happens to have landed 5.0 recently after starting on it back in 2015. By technicality he is doing exactly what the CTO wants, using the newest frameworks 😜.
mcAlt009@reddit
The CTO doesn't like it.
It's ultimately his call. I've been in similar situations, you might end up using an objectively worse technology. Even if the reason is just "because the boss said so".
sieabah@reddit
The CTO is mistakenly talking about express v4 since that's been around forever. Express v5 is a month old. Meeting his requirements. Trivial to prove to the CTO that he was using the newest. You're just illiterate or don't want to understand what is actually being said.
It's their call but also the responsibility of the engineers they hire to take the ideals of the CTO and implement them. The OP accidentally, by luck, did just that. The CTO complaining is reflective that he is not keeping up with the latest trends in JS frameworks. Which is a strong signal you can take to the CEO if the CTO strong arms the decision. "The CTO is actively choosing against the latest, stable, and historically proven solution. For unstable and unproven technology. The CTO is betting your company on this less established technology."
The CTO is not immune to challenges, but generally they're not so arrogant that they're risking the company's entire future on unproven tech. If they are the CEO needs to know so that the risk can be addressed.
mcAlt009@reddit
V5 is still based upon the older Express APIs. The Express way of doing things.
I've been in situations where I'm told to use a newer framework ( one without an immediate predecessor like Express V5). Even if I think I'm right, the people signing my checks have a vote.
It depends on if you want to keep your job or not. If the CTO doesn't like Express, they don't like it.
Let's say you build something in C. Your boss says they really want a newer programming language. If you respond with "NuUHH, C23 was just released" you don't win off on a technicality.
To be blunt. Do you think the OP will be able to change the CTOs mind here ?
A more constructive approach would be to offer to refactor the existing code and try to cram it into a different, CTO approved framework.
Even if it functions 100%( hell even slightly worse) as the Express framework.
The CTO wants to be right here, you almost never win challenging higher-ups, nonetheless C level employees.
Escalating it even further, and trying to go directly to the CEO will likely make things much worse. I tried this earlier in my career, and just skipping level ( talking to the CTO directly instead of asking my manager about everything) got me reprimanded.
sieabah@reddit
I don't think OP has the desire nor care to change anyone's mind. They sound like they want to be let go because of their age. They already gave up.
I figured if the guy is already directly interacting with the CTO and the CTO is assigning work to engineers directly the "CEO" is actually just sitting next to the CTO on the other side of the table from OP. It sounds like a tiny company and if he's already at risk of losing his job because someone thought he was "old" then what difference does it make.
Mindlessly challenging c-suite doesn't ever work. That's not what I meant, given the context of what seems like a tiny company and an entire project getting to PR before being told "ugh, no, completely wrong. You can't be trusted to make good decisions" is not a strong engineering culture. (Which reflects that the CTO might not really have influence or leverage.) If however OP just did things without talking to anyone at all then it is on him.
I understand that v5 is still "express", the point was being cheeky in a small company that when someone says something as stupid as "you have to use the latest and greatest frameworks. Express is essentially abandonware". Then the attempt you push is dated with a framework released last month. I'm assuming neither OP or the CTO really looked all that hard or even cared.
mcAlt009@reddit
Ok.
So in your opinion is the CTO just an idiot you wouldn't want to work for anyway?
Hypothetically let's say you had a job with amazing pay, everything else is great, but your boss just tells you the framework you picked isn't something they like ?
Would you quit over this ?
sieabah@reddit
The specific CTO that OP is referring to with the context I have, no. It doesn't sound like they are making effective decisions. If the reason is "it's newer" then they are an idiot. If their reason is "It's newer and leverages X, Y, Z which express doesn't" then it's a different scenario. I see you really want to lean in on being adverse to conflict. Conflict is only bad when it doesn't result in something constructive. Both OP and your methods are not constructive. OP curtails while you capitulate and defer ownership and reasoning to the CTO.
If their reason is "it's newer" then this is one of many conversations that I'm going to have. Having to support and maintain "new" isn't fun and no it's not something I'm interested in chasing. The hype around zero-config build tools was something a prior exec tried to push and it killed anything useful. Anything useful required configuration since it wasn't a simple fullstack SPA app. What you normally get is knee-jerk reactions to youtube videos, hackernews articles, and whatever hot thing that is announced on /r/javascript. All explaining how nice and new a framework is and you have a push to migrate everything to that. Then you get the next new thing that everyone has gotta use. You end up with many frameworks that are all different and are wasting time rebuilding things over and over and over.
So if the CTO can reasonably explain to me why the new thing is better than the technical assessment I've made given our business requirements, team talent, and existing ecosystem then go ahead. If the answer is still just "new", then this isn't a CTO that I think will be successful. You're free to disagree. I just want leadership to lead by example, and if their examples is "Do what I say because I'm above you", it just becomes toxic. You have people with opinions but they can't adequately explain why they hold those opinions outside of the marketing on the homepage and a lack of history in archive.org.
If they hired me for my experience then I'm going to use my experience to make assumptions. If you would like to challenge my experience and assumptions, sure. I welcome improvement, but "new" is not an improvement in itself. Given that express v5 is newer, and that isn't good enough.
Amazing benefits, pay, equity, etc. Great. That is adjacent to my role where I'm brought on to have technical opinions. If there is no discussion about why then why did you hire me. If you want a code monkey you can get much cheaper ones.
I'm not quitting because the CTO is forcing a particular solution, but they have to have some reason for why that particular solution is the correct way to go. If it's just a "my title is bigger", then that is a person who was assigned to be a CTO. They didn't earn the title and certainly won't be great if that's their way of doing engineering. Part of the role of the CTO is to influence and make informed decisions. That's not OP's situation given the context we have.
Your hypotheticals are trying to catch me in a trap of "if you boss says do X and you want to do Y, are you gonna quit because you can't do Y?". No. I think the framing you're putting around this is dishonest and doesn't take what I'm actually trying to champion here.
--
I feel it must be said, I'm not arguing to use express v5. I don't even use express. I was using the CTOs reasoning. I actually defer to the NestJS framework and even then I use fastify. My goal is to be transport agnostic and not rely on any particular implementation, but that's a reason. inb4 "hurr, nestjs does x", I use it primarily as an IoC container and router. It's not because NestJS is "newer".
Depending on your next response I may or may not respond. I don't see the value in trying to have this discussion any further. The hypotheticals you provide are trying to invoke emotional reasoning and a sense of "well, is it really worth it?".
Darmok-Jilad-Ocean@reddit
No one uses nim, and definitely no one uses zig for web backends.
steveoc64@reddit
Umm … that’s exactly what we are doing here :) It’s working out pretty good so far.
Darmok-Jilad-Ocean@reddit
Nice. Which?
steveoc64@reddit
All of Karl’s stack - http.zig, pg.zig, mqtt, Prometheus.. and now gotta interface with mongodb apparently
All just straight out handlers + htmx
If that’s what you meant by “which”
epitone@reddit
Honestly thought you made these names up before I looked them up online.
ssrowavay@reddit
To be fair, they are both pretty cool languages.
dogweather@reddit
I always reach for Elm or Roc.
3legdog@reddit
For great justice
onafoggynight@reddit
Unironically. Zig tooling at this points seems saner and more stable than the JS / webdev ecosystem.
exploradorobservador@reddit
The previous guy who had my job was canned because he cherry picked trends on hype and ended up with a mess of abandoned / stale libraries and shit code.
bwainfweeze@reddit
I wish I could explain how I do tech selection. I don't always pick the thing that's best in three years but I've mostly managed to pick the thing that isn't dead in three years.
Snoo-74562@reddit
Sounds like fight club. Old too old Young too young Fat too fat Thin too thin
sobrietyincorporated@reddit
A CTO with 10yoe is probably a hipster vaporware chaser that thinks he's on Silicon Valley. You should leave this job anyway.
RogerGodzilla99@reddit
I mean, banks still use Fortran and Cobol for a lot of their stuff. I don't think there's a huge issue with having 'old code' as long as it's written well.
tacotacotacorock@reddit
Hate to break it to you but now your code is 2 days older than it was before.
Constant_Physics8504@reddit
Pretty simple, your CTO is familiar with buzzwords that you didn’t mention. Had you said react the response would’ve been different.
ImportantDoubt6434@reddit
CTO is an idiot nodejs express is a mature well documented and well maintained product.
”New code” is often less stable and less supported. You really should be wary of using it without a reason besides “it’s modern”.
If it’s a new framework it should be solving a specific problem.
other_vagina_guy@reddit
Story doesn't check out. With 30 YOE, you'd have 15 years of experience being old. You'd basically have started your career before the Internet. You'd have been old already when Reddit was new.
KESHU_G@reddit
Can you share any examples of code, i really want to know
Tervaaja@reddit
CTO and principal engineer should have a common decision about the technology stack and it should be documented. It sounds that your working methods are not very professional.
Available_Holiday_41@reddit
Document this with HR (who won't understand, but it has to be documented) and let them know you feel discriminated against because of your age.
Start an email chain asking for details about where it was stated HOW the code should be written.
Start to apply for other jobs.
Keep your email chain and your HR documentation so that WHEN they let you go you can file an EEOC claim and lawsuit.
Drakeskywing@reddit
I've got about 10 YOE and the main kind of old I would think is actually important, is if you are using an abandoned package that is non trivial and hasn't seen development since before COVID in a new project.
Personally, I've told devs to redo things when they hand in code that is using things that are 2+ years after EOL in green field projects, fighting back their arguments of "it's stable".
Otherwise, I'd think if you can defend your design decisions and they are sound, generally no problem
Inside-Revenue-4258@reddit
And long as it works, it isn't concern a to the company's management. And if the CTO wants things to be done in a certain way. He has to communicate it early.
And he is raising issue on how typescript is compiled. Not a big issue, as long as the project works.
wildfunctions@reddit
If you were using Typescript, you weren’t that old.
Local-Day9584@reddit
A lot of the comments to this are very interesting! As for me though, I have 2.5 YOE with a professional dev title and maybe 10 YOE with coding in general.
IMO there are many ways that code can be "old".
The old code I have encountered has been code written on a whim to comlete a task. Whether its SQL scripts, the backend interreacting with it or the front end.
It seems like someone came in and got the job done. They just want someone to fix it to apply to their new apis.
GloppyGloP@reddit
CTO is a moron
veryonlineguy69@reddit
if i was your CTO, yes i would want you to use typescript & es modules. express seems fine
type safety brings so many benefits to a codebase, including being somewhat of a documentation method, making refactoring easier, & forcing you to actually think about the data as it flows through your code. es modules are just pretty standard at this point & have their own benefits (tree-shaking, performance, etc)
the thing you have to remember is when you write code for work, it’s not “your” code. other engineers will likely be contributing & when you leave the company someone else will have to own it.
i remember using CJS modules, but there are definitely a lot of engineers who haven’t used it. if there’s not a specific value prop of using CJS over ES modules besides you like it better, i don’t see the point of using CJS since ES modules have appreciable benefits over CJS & more folks will be familiar with it since most JS tooling these days uses ES modules.
similarly with using vanilla JS, a lot of people who have learned JS more recently don’t use some of the dynamic features of JS & it will likely cause some head-scratching. again, using JS would have to have a meaningful advantage over TS besides the fact that you refer JS. i’ll also say in general i think that people complaining about “wrangling types in TS” are really overstating how hard it is to write types unless you’re going nuts with generics, overloads, & extensions/intersections
however, this is something that would have been covered at the beginning of the project. kinda curious how far along this project is - does he have a problem with the first PR or did you hand him a whole API? unless this is like the first couple weeks of the project, i feel like some review steps were missed here
mirageofstars@reddit
I tend to agree with you. If OP wrote code like it’s 2014, then there would be concerns. And not just due to the lack of more current advantages, but you might also wonder what else OP used that’s been supplanted or is just outdated.
The main surprise was that there was no discussion of stack or review before completion.
rvitorper@reddit
CTO is a moron. Just get out
madprgmr@reddit
If someone told me my code was old for those reasons, I would personally ask what they would prefer I use, as they likely have a specific image of how things should be in their mind.
j-random@reddit
And if they do, they should have clearly specified that at the beginning of the project. I'm wary of any CTO that gets down in the weeds like this, but I don't work at startups, so maybe it's more common there.
External_Switch_3732@reddit
My CTO gets into some of the tech stack weeds with us, but we are also in a sort of weird spot size wise, our company was a start up that has slowly grown toward being an enterprise operation. Our dev team is 3 people, and our CTO is acting as our dev manager while we try to fill that seat.
All of that to say, I’ve never had him or the previous manager tell us we had to make a particular technical decision outright. They suggest, they ask questions, they listen, and we decide as a team what the best approach is. And we certainly wouldn’t be having the conversation for the first time at project delivery.
oupablo@reddit
A coding CTO is super common at early stage startups. But even then, unless it's true greenfield development, you're already gonna have some kind of pattern set up that you'll mimic for other work
ventilazer@reddit
Clearly shoulda used Rust
SolidGrabberoni@reddit
Yep too old.
If you're not transmitting your prompts to AI via a neuralink, you're not doing it right
CeleritasSqrd@reddit
I hear you.
Here's the painful truth, people with around 10 YOE in any field start to think they're a bit of a somebody. They're not.
Experience is usually painful and more times than not the lessons it teaches old dogs is that details matter but a working project is worth gold. If you have a method that works, a smart manager will not care how you got there. If it saves or makes money - even better.
What you're dealing with is resentment from a lightweight wannabe. Polish your resume and leave them behind.
Independent_Cry7243@reddit
Unless the CTO specified, your process is regarded.
Here’s how I run mine:
Ya know. CXO 101
If I were you OP, I would ask why now this is a problem, and where is the expected shift in standardization
DOCUMENT everything. When You’re cut, you’ll have a really strong case of ageism.
I do agree, standardization happens. We did a lot of php. So, we adopted latest PSRs and my cto was contributing to it. I didn’t really act as a tie breaker unless he tapped me.
Your cto sounds like a dipshit.
imdavidmin@reddit
I always thought dependency injection is a java pattern thar has no place in a bundle and "compiled" JS project. Engineering, everyone can have a strong opinion, and they'd disagree with each other
theblenderr@reddit
I hate when people make posts and just don’t respond to anyone
BarelyAirborne@reddit
Management HATES anyone over 40. Their loss, you've got the chops to deliver.
thatdevilyouknow@reddit
My 5 second look at it this tells me this probably comes down to function coloring and async/await semantics. Perhaps they can’t reuse other things they’ve made but who knows. The irony is that it all sits on the same underlying code just used in one way or another (like nearly all languages). As far as modules are concerned don’t IDEs detect the difference and offer to convert them over anyways? Maybe the IDE threw up some message and they decided to gaslight you about it. I would just get down to the specifics of what they are referring to and offer some solutions for dealing with it rather than reacting to the cloud of judgement cast on this project.
Competitive_Cup_7180@reddit
Fancy new stuff is usually just sugar.
BobbySmurf@reddit
Since when is express.js old lmao
Zealouslyideal-Cold@reddit
Writing greenfield code for a reasonably complicated app atop express in 2024 is probably a good sign that you have fallen behind on the zeitgeist.
I’m also about your age FWIW.
Creepy_Bullfrog_3288@reddit
CTO sounds like an idiot.
DefinitionLimp3616@reddit
Sounds like projected ageism.
Critical-Shop2501@reddit
Let’s see what the other dev does. If they can better it. Perhaps do some benchmarking of your code and then do the same to the new code. Sounds like CTO wouldn’t know good resilient code if he saw it in front of his face.
Djelimon@reddit
10 years and he's CTO? Dang
Tech standards shift, comes with the turf. Been in the game 32 years, started on as400s after uni. I eventually got into web stuff and then architecture and now I make a living helping people ditch as400s
Not because it's bad or anything like that, but because the average as400 senior tech is nearing retirement and nobody wants to train up and replace them. So the asset becomes technical debt.
If I were you I'd take getting paid to learn a framework as an opportunity to pad the cv at least, even if you're on the way out. You have a prototype, so port it.
kirkegaarr@reddit
Should be pretty simple to rework it to use fastify and ESM modules
Far_Group_2054@reddit
Smells like a company that won’t last long anyway,
PLTCHK@reddit
Bruh… I’m like an intermediate here (like in my 20s) and I would say Express Node TS + node module pattern is up to date. I am using TS node module pattern as well. If OP is precise on what he said, the CTO is lackluster in communication and OP deserves a better manager.
zambizzi@reddit
What were your specific requirements? Was there a conversation about stack and standards, or was it more vague? Did you go against the grain of what devs on staff were already using?
Some background on the setting and project asks would be helpful, and make a big difference in how to assess what went wrong here.
CS_Barbie@reddit
He just said it's "old"? No other reasoning?
FearAndLawyering@reddit
did you use var instead of const/let?
snotreallyme@reddit (OP)
nope. all modern javascript/typescript.
Educational-Bid-5461@reddit
Am I the only one that this makes no sense to? Code can’t be old if it’s not old. If the tech stack is modern, you’re left with design patterns. Design patterns may not be modern but express and typescript there’s only so much flexibility.
This guy sounds like a dick. CTO not OP.
WishNo8466@reddit
Yeah, this is why I left the web world. I’m a pretty young dude and use Express for everything because even 4 years ago that was pretty much the default, though the other libraries were getting pretty popular then (like Koa and Hapi). Web devs are just so quick to move onto the next shiny thing .
Anyway, if the CTO is opinionated on code, they’re either bad at their job or you’re working at a startup (these aren’t mutually exclusive I suppose). Other comments have pointed out some tips that I’m not going to bother repeating (I agree with the top comments). I’m just here to answer your question:
If you’re writing something in Express, it’s fine. It’s a great library. It’s not ‘old’. If you’re still using Node modules…might want to update that one. ES modules are good, and as someone who cut my teeth on Node modules back in the day, I personally think ES modules are better. Check’em out and maybe in the meantime find a better CTO. Good luck!
fpsfiend_ny@reddit
Did they move the goalposts on ya and not define the boundaries and rules of play?
Relative_Objective42@reddit
How he became CTO? 😅
NastroAzzurro@reddit
This sounds more like a process problem, or lack thereof. How was this only a problem when the finished product was delivered to the CTO? How are requirements drawn up? Yes, the CTO sounds like a moron, he threw away a perfectly working product and apparently cares more about the technology than about getting to market. Not an organization I would like to work in.
Cell-i-Zenit@reddit
You dont know how long this project took. You dont know how the rest of the company operates.
If the project took him 1 week to develop and uses technologies no one is familiar, then its fine to reassign it to someone else who uses an up to date tech stack.
I would have refused too tbh. In my company we have 2 projects which are a problem and both of them use the same tech stack no one else is familiar with.
hippydipster@reddit
Your devs aren't worth much if a different stack within a language flummoxed them that much.
wutcnbrowndo4u@reddit
They're writing in JS. It's a given that a chunk of the devs they hire "aren't going to be worth much".
Before JS-ecosystem fans interpret this as me saying that all JS devs are garbage: the floor for JS(-adjacent) hires is as low as it gets, because of the past 15 years of bootcamps targeting JS as an easy entry point. If a company has access to that pool
Hell, I'm taking advantage of this myself. I'm scaling my applied ML consulting firm up a bit, & looking to hire more-or-less Literally Anyone for the JS/frontend side of things. I'll assess them and be reviewing their code to make sure it's comprehensible and non-insane, but I'm not going to be putting in the effort I was if I was hiring eg a C++ guy on a perf-sensitive system.
Cell-i-Zenit@reddit
the issue is that the stack is foreign and the business code is also completely foreign. Its just unnecessary complex
hippydipster@reddit
My point remains.
pzelenovic@reddit
But the OP said it was written in TS, is that now considered old tech? Am I also old?
jififfi@reddit
TS is not tech. It's everything else they used.
you-create-energy@reddit
Nothing they used is outdated.
oorza@reddit
If they wrote commonjs, which is heavily implied, and submitted a PR full of mid 2010s era JS that looked a lot like
exports =
ormodule.exports =
, the CTO is right to be furious and question their judgment and awareness of the ecosystem.reboog711@reddit
Why isn't TypeScript tech?
polypolip@reddit
What they mean is that old tech refers to libraries and way of doing stuff in typescript and node, not the language/framework itself.
Empty-Win-5381@reddit
But he didn't express that
thedeuceisloose@reddit
Yeah there’s a lotta people trying to make his choices out to be bad ones and they’re just not
quentech@reddit
Express and modules? Really?
teslas_love_pigeon@reddit
Express is literally the most used routing system in NodeJS. The idea that it is "old" is literally preposterous.
you-create-energy@reddit
Are you seriously trying to argue that TypeScript and node are niche technologies that it would be hard to find developers for? The CTO is a moron. If there is a stack they wanted it built in, they should have said so before it was built. Bringing age into the conversation was a stupidity multiplier. With that many years of experience, I'm sure OP could build it in whatever shiny new stack the CTO wanted much better than someone with a fresh degree and a couple of years under their belt.
TimMensch@reddit
CommonJS modules implies "require" instead of "import".
If I saw a "require" in new TypeScript code today, I'd have the same reaction as the CTO. And I'm older/more experienced than OP.
Using ExpressJS is...less cut-and-dried. I tend to gravitate to newer, more performant, frameworks, especially ones that use promises and async/await by default. But it's arguable that ExpressJS and its ecosystem of middleware is still the gold standard.
In my current project I'm using Hono. Elegant, crazy fast, and runs on Bun, Node, Deno, and in most (all?) cloud function JavaScript environments.
Did you know Bun supports hot reload of backend code natively? Totally worth the price of admission.
Cell-i-Zenit@reddit
i have no idea about express and node modules :D just giving you a different view on the issue ;)
FYI the 2 problem applications are written in golang which is also a not so unknown language but we dont find developers for it (and are also not interested in hiring since we are a java company)
you-create-energy@reddit
Go almost qualifies as a niche language. Only a small fraction of the developers who know TypeScript. The CTO wanted someone to rebuild it in a slightly different JavaScript framework because they are clearly a JavaScript shop. The CTO is objectively a moron.
Empty-Win-5381@reddit
Yeah, why do that? It's as though he thought he somehow couldn't manage it
Empty-Win-5381@reddit
Yeah, it was bad especially since it could be taken to refer to the OP's age
sieabah@reddit
What's actually stupid is thinking most of the other frameworks don't use express underneath. Fastify is good, but rarely is it the default option.
theDarkAngle@reddit
That's kinda what I was thinking, like, what is the alternative? Bun? Something other than JavaScript altogether?
bobdarobber@reddit
You have it backwards. Nobody uses express underneath, they use the node http library underneath.
Nodebunny@reddit
the cool kids are using Deno now lol
TriteBottom@reddit
It sounds like your project is being mismanaged by you. As a principal engineer, it's not only your job to deliver high-level solutions that span wide swaths of the company. It's your job to also ensure that the project management is being performed properly. That includes discussing and having a consensus on the design and technologies that will be used in the implementation of these solutions.
As you mentioned, the person that is rejecting your work has 10 years of experience in software development. So they were more than equipped to have this discussion with you before you implemented and delivered the product. And yet you fail to do so.
This is something that should have come up with your 30 years of experience....
CypherBob@reddit
CTO is a moron.
Haunting_Welder@reddit
Wait until they see my LAMP stack alternative.
ConsulIncitatus@reddit
Yeah. He is.
cronuscronus@reddit
I write “old” code in C++ and Java. It serves billions of requests per day. If somebody criticizes it, I just think of leftpad, and i’m good.
cronuscronus@reddit
If your company doesn’t have a well defined architecture and style guide, and refuses to develop one, find a new company. You’re senior enough to recognize and avoid these messes I would think.
jakofranko@reddit
Express is still actively used in almost every open source Node web solution I see. And even if it’s not the newest choice the fact that libraries still provide adapters for Express should indicate how widespread it is. Your CTO sounds like an ignorant tech bro who doesn’t know what to do with himself now that he’s not coding any more.
Olorin_1990@reddit
Sounds like someone other than the CTO with strong opinions about the “right” approach and went to the CTO about it.
snotreallyme@reddit (OP)
Yeah that's definitely part of it.
cumma-cotta@reddit
Lol
goldh4nd@reddit
“Old” isn’t a valid criticism of code. Code and be inefficient, poorly written or structured, etc but “old” sounds like “not hip” which has no impact on the resulting product. A comment this naive from leadership would terrify me, get out of there!
Little-Boot-4601@reddit
Sounds like your CTO is a wanker basically. Though I’m not really sure what YOE has to do with anything? 30 years, 10 years, “a few years out of college” feels irrelevant to both ability and wankerness…
uniquelyavailable@reddit
the water im drinking is pretty old but it's still good somehow
MrEloi@reddit
Err ... isn't there a standard in-house set of frameworks, tools etc?
BTW are you fully remote? This doesn't sound like the sort of problem which would arise in an office based environment?
demosthenesss@reddit
The hardest part of this question to believe is a principal engineer with 30+ YoE would not have discussed the tech stack for a project at any point with the folks they are working with, so the only time it comes up is at the end of the project after the project is "done."
There's a lot of WTF in this post but I think that's the biggest to me.
MissionCake9@reddit
In theory I would say that's very eager to say that from the information we got. It's not like CTO *must* know or being involved that deep. BUT, I also went to OP history, and it looks like the company can't be big. In USA everyone is VP of something, that really bothers me because of cases like this. The Principal SwEng vs CTO dynamic here in day by day is nothing more than a Developer and his manager, both wearing lot of hats.
bwainfweeze@reddit
I want to know how many people OP was working with on this project. I'm taking bets in my head about what the number is.
glasses_the_loc@reddit
I'll take a shot:
0.
It's a company so siloed there is a bus factor of 1. Everyone is a one man band and they churn through developers like a tradwife influencer churns butter.
bwainfweeze@reddit
You said the quiet part out loud.
Dyledion@reddit
Hey, I'd watch my wife churn butter any day of the week.
reboog711@reddit
An engineering writing code reports directly to the CTO; so I imagine it is a pretty small company.
At my current employer, anyone writing code is 3 to 6 reporting levels away from the CTO.
bwainfweeze@reddit
Somewhere else in this thread someone was asking about how often you talk to the CTO (implying OP wasn't talking enough) and I was just thinking how often I talk to the CTO and it's "not often". Not for a while now. I've talked to people who became the CTO but their time disappears the moment they are. Unless it's tiny.
reboog711@reddit
A CTO once acknowledged a question I submitted to a town hall. Does that count as talking to them?
Agodoga@reddit
No offense but your CTO sounds like a moron. Loot for another position.
dagrooms252@reddit
In a small startup you usually just have to tell someone "see that mountain? Meet me there in two weeks." Up to you how to get there.
Now if the CTO is unable to make specific points about why the code won't work for them (low performance, lack of flexibility for long term, maybe even just outside of the company's tech stack and too much cognitive load for coworkers) then you have a code princess and you should get away from him.
It sounds like the code looking "old" is a straw man, not a real argument. But if it's outside of the acceptable tech stack for that company, you've now learned a creative constraint, and you proceed with this new knowledge.
eggZeppelin@reddit
First of all, the CTO shouldn't be involved in implementation details.
They should watching high-level strategic metrics and improving the software development lifecycle at the org level.
Throwing away shipped, production code b/c of a framework choice, especially a JS framework choice is a huge red flag.
eggZeppelin@reddit
Oh Javascript frameworks
I've seen the same pattern for over a decade
Phase 1: OMG this framework is bloated
Phase 2: Creates new lightning fast framework
Phase 3: This is great but I have a feature request
Phase 4: new framework gets "bloated" and old
New != better
Every other language doesn't have the same framework churn. JS community just is a bunch of tech hipsters lol
SimilarBeautiful2207@reddit
of course, you have to use the latest framework to be a cool kid. I would have used fastify instead of express but i don't see a problem if your code get the job done with reasonable performance and is easy to mantain.
devhaugh@reddit
What's wrong with using express and the node module pattern?
hippydipster@reddit
Its old. Keep up
bwainfweeze@reddit
I think all the cool kids are using ES6 modules and my guess is we're discussing ES6 vs CJS.
CaterpillarOld5095@reddit
I can kind of see the CTO's perspective here. ES6 is the current standard. Express is fine but I think it would be weird to start a new project IN 2024 using CJS without a really good reason, and honestly no good reason exists. Although this is something that should've came up in the first code review.
veryonlineguy69@reddit
i mean it’s not just cool kid stuff.
ES modules do have actual benefits over CJS & have been around for like a decade now. they’re interoperable between the browser & server, so your JS engineers don’t have to experience syntax shock if they switch between backend & frontend repos.
i haven’t really seen many good arguments for using CJS that don’t boil down to
reboog711@reddit
TypeScript has been around for 12 years. IF TS is old in the CTOs eyes; there is a good chance ES Modules are old too...
bwainfweeze@reddit
It's less than 6 years that Node has supported ES6 modules, five if you count from LTS date.
veryonlineguy69@reddit
5 years is to the point where i wouldn’t call it “new” & transpilation options have been available for a decade
is it just that backend JS devs don’t like compiling code? i just don’t get it
bwainfweeze@reddit
In the context of a greenfield project 5 years is old, sure. But we seem to have wandered more into the territory of roasting a dude who thinks anything that came out after he started coding is old.
Which covers Rust and Elixir now, and I worry that if he doesn't course correct those'll be old in a couple years when Zig and Gleam have more contributors.
casualPlayerThink@reddit
Time to leave, that place. Clearly they are inexperienced and "opionated". Express is fine in 99% of the times, and if there was no requirements then it is just a typical silent treatment to lay off you.
I experienced the same at a few years back, at a company where I alone had more worke xp than the entire tech department (5 ppl w/ the cto) which led to fractures (they did not understand what is a DTO or OOP benefits) and they used the same term: I coding in old style. I rather left them when I could, it was clearly a gap in knowledge and if I have to guess, it is the same for you.
papawish@reddit
Your first mistake was touching a Javascript project.
The whole space has cancer.
mothzilla@reddit
This is nonsense. CTO is a moron. If he wanted to dictate frameworks or code pattern (?!) then he should have told you at the start.
FWIW Dependency Injection usually feels like cruft to me.
ssrowavay@reddit
I'm a fan of DI. But CEO is still a moron.
BigLaddyDongLegs@reddit
This is why the first project any dev, senior or junior should do, is a code review of a feature by someone in the company for a long time (if it's someone joining my team I'll try make sure it's my code).
It gives the new start a zero risk chance to take in how code is written by someone very familiar with the way things are done. It also forces them to communicate with at least one person and will prompt questions and maybe new ideas and suggestions (which I encourage).
Some suggestions might be perfectly valid but not possible right away, or some might just not be a fit so it's good to give new starts a safe way to get all that out of in the open early.
That's just how I do it anyways, but it does sound like this was given as an early project without enough structure and communication setup early on.
Trineki@reddit
Cto with 10 years experience and a senior a couple years out of college... This seems... Strange. Get ur resume ready and move on. I doubt ur missing out on too much my friend. Maybe they want the newest and greatest. But sounds like they just want a young company of workers for God knows what reason and are soon to find out why those YOE are needed... Or maybe the CTO just wants to be head honcho largest totem on the pole. Who knows but I see the red flags flying.
Note: I know yoe isn't the only indicater but only a small windoow of insight
ssrowavay@reddit
Yup. When I graduated college, I'd been writing code for like 10 years - I started as a hobby when I was like 12. So I remember telling a recruiter that I had 10 years of experience and they (correctly) were like, uh. No. You don't. You have zero years of experience. Which means this "CTO" is a junior developer.
rcls0053@reddit
I have no idea why a CTO has to get involved in the engineering decisions that programmers make. That role has always, for me, been about managing the people, more than the tech. Deciding tech should be the responsibility of the team, possible a tech lead or a software architect. Why is the CTO getting involved here?
digger250@reddit
Probably a company of 10 people where the CTO is mostly just an inflated title for the longest tenured dev.
bwainfweeze@reddit
Or the most inflated ego.
ssrowavay@reddit
Or the most "techy" of the founding bros.
b1e@reddit
And why is a principal engineer having this discussion in the first place? Lots of red flags about this company
PureQuatsch@reddit
My thoughts precisely. The CTO is a business role. Yes they should have some technical understanding but that might not even be as an engineer (eg product or even design). They are manager managers and oversee strategic decisions. They can take an interest in implementation but they shouldn’t be judging or influencing specific technical decision making.
GaTechThomas@reddit
Your company has a communication problem. My conspiracy theory is that the person the CTO is giving this project to has been in his ear, Wormtongue style.
I'm no fan of any of the node stuff, but if it's new work and node is the expectation then newer patterns and stack is likely the better way to go. Lots of variables to weigh in the decision though.
grapher1080@reddit
cool ask for a performance analysis of both snippets in prod - but bro if i hear stuff like that move on that sounds toxic as f
get a job in management and let the young guns code - that's what i did and doubled my salary.
Metabolical@reddit
If they manage you out over this, you may have a case for an ageism claim. You can probably get a free consultation with an employment lawyer to get a sense about the claim, or what would need to happen for you to have a reasonable chance.
In the meantime, make sure you have design reviews for any work you're planning to do. If they want to use the Latest Hot Thing, say sure, and then do it. They will be paying you to learn the Latest Hot Thing, which will make your resume better for going someplace that doesn't have a CTO with the Peter Principle.
Don't reveal anything about the employment lawyer or a job search, just play along. Job market is tough now, so you need to be able to take your time.
InfiniteJackfruit5@reddit
Node and express is considered old? I’ve been using that my entire career lol
bwainfweeze@reddit
Bang, you're old!
HowTheStoryEnds@reddit
If you don't then you're not old, how's that for a refreshing change!
sandboxsuperhero@reddit
I believe he’s referring to CommonJS vs ESM.
PragmaticTroll@reddit
It’s not. CTO is a tool.
SoulSkrix@reddit
CTO is a knob, I’d be happy you’re using tried and tested/mature tools. Sounds like you’re being forced out, if there was an issue with tech stack that should have been brought up much sooner. Does the company not align on tooling? If not, it is not your fault you didn’t do it the way CTO wanted you to.
flick-@reddit
Is there really no other option here other than “I suck” vs “he sucks”?
Sometimes people say things because they don’t understand them. Sometimes it is a thinly veiled excuse because your salary is high and they don’t feel it’s justified. Sometimes you’re abrasive and bad with clients or when speaking with other devs so they bring up something tangible that is technical to push you out.
This feels more political than it is about any random technical requirement.
matadorius@reddit
Maybe he can’t read the code who knows
farastray@reddit
Are you for real? Yeah that code is old and you should know better than trying to pull something like that
eboob1179@reddit
It sounds like to me your CTO faked his way into a job and doesn't know wtf he's doing.
droned-s2k@reddit
Pretty messed up that a CTO isn't a visionary but a framework chaser !
dtseng123@reddit
You’re capable of learning and applying beyond what you know currently l, but that doesn’t mean he’s in his right to treat you that way.
solidThinker@reddit
Should have whipped out that fresh Deno (v2 not that v1 garbage)
No-Structure2749@reddit
Express is battle tested. I always go with express unleas i have a very very specifc reason not to. Your CTO sounds like a moron that prefer new fancy tech that is trending. What is his flavour of the day? Fastify maybe?
General-Jaguar-8164@reddit
Why not nestjs?
No-Structure2749@reddit
Too much obfuscated magic. I would use it to develop a fast MVP but express is simpler and more robust.
Nestjs have had too many changes over their major versions. 10 major versions in just 6 years. Express has been way more stable.
kevinlch@reddit
decorators syntax are still experimental
parrot_slave@reddit
I’ve made a career writing Bash shell scripts and a little python writing tools for things no one else wants to do. Just have a whole portfolio of that work. Continue to thrive. I have a Ph.d in Political Science where after 15 years they quit asking “can he really do the work?”
draeneirestoshaman@reddit
my company generates multi billion dollars in revenue and we still use express lmfao
HKei@reddit
This doesn't have anything to do with age this is just a very poorly managed project. Either you get full responsibility for it, including what technology you use... Or you don't, in which case things like tech choices should've come up way earlier.
Or I suppose option C, you're misrepresenting the situation, tech constraints were communicated to you and you just ignored them for some reason or another.
At any rate this has nothing to do with age.
rebelchatbot@reddit
It sounds bad on your end.
You failed to get this reviewed properly during design and implementation and shipped an entire project that is not aligned with your company's stack or vision of it.
You're also stuck in your ways. Not curious about the ecosystem, new patterns.
powerofnope@reddit
Not talking about software architecture before you actually program away sounds more like an fresh out of bootcamp issue for me.
JoseOrono@reddit
Perhaps the company didn't communicate its requirements properly, but nothing about Express itself is "old". It's latest major release is fresh out of the oven!
And even if it was an older framework, migrating from Express to a similar framework is not that hard and implies next to 0 changes to the front-end.
This sounds like either ageism/discrimination based on age masquerading as code review, or piss poor management letting a whole project be developed without any oversight.
Don't let them make you feel incompetent or "too old", you're a principal engineer for a reason, OP. You know how to ship something that works, and some random kid can't take that from you.
LloydAtkinson@reddit
Feels to me like you don’t understand his complaint. I’m not really sure how after 30 YEO you confuse “module pattern” with dependency injection? They aren’t even in the same ball park.
He’s asking you to use ES modules not terrible Node-only CJS/require.
Key_Examination_9397@reddit
You’re not old, you’re wiser! Fucking sick and tired of people using node pretending to be like using java or php.
netstudent@reddit
I'm not a JavaScript guy. Can someone elaborate if Express is old what is considered new?
Fidodo@reddit
Koa and Express are incredibly similar. The biggest difference in my experience with both is that Koa supported async routes first. Express 5 just came out with async route support so there's hardly a difference now expect that express has a bigger eco system and is more battle tested.
I built my company's client API server with Koa, but now that express 5 is out I would probably go with express if I were to build it again.
Koa vs express is a very weird hill to die on. They were even written by the same guy, but he hasn't really been involved in either.
Even before express 5 there were packages to help you with async routes so I don't know if you used those. Callback chaining is old now, but if you're using async then the differences between the two are not worth debating IMO, since you can implement the same patterns in both.
Potential-Papaya-501@reddit
This sounds like a knee jerk reaction by the CTO. How much of a CTO is this looking at code and judging it? Isn’t there a coding style for the project? If not, and the code works, who gives a shirt what it looks like? To me this sounds like something I’d be caught off guard by as well. If he really cares that much and there weren’t any standards, start locating something else. From the information given, the environment sounds messed up.
SearingSerum60@reddit
gotta love javascript ... if you haven't completely replaced tech stack in 6 months you might as well be retired, golfing ...
drumnation@reddit
So what should you be using for your backend these days if not express?
Next.js’s backend in the frontend is cool, but not as deep as express. It’s a newer tool but I’d say a different tool with a different use case than express. Is there anything more solid than express in node?
I don’t see any reason to pick a different framework. Express is solid.
Not using es modules pattern these days I could see putting a dev used to it off. The syntax is much nicer, but there is also a bit more complexity with the typescript compiler.
podgorniy@reddit
That’s unreasonable judgment from cto. Wasting complete work because of such reason is harmful from resource management.
Those who did not see technology making couple rounds, frameworks born and die won’t appreciate usage of “old”, yet battle tested approaches.
Don’t take that person’s judgment personally. Most probably all this is not because of code but because of some social aspect.
Check Nassim’s Taleb concept of antifragility along with his idea than “stuff that have been used for a while most probably will be kept used”. That’s good starting point for justification of usage of the old boring battletested no-surprises tools.
Ciff_@reddit
Not a tech issue. How can all this be built by you with no alignment, system design feedback, code reviews etc along the way... Heck any feedback? What happened to iterative development with short feedback cycles? Something is not right here unless you are the sole dev.
Made2Game1@reddit
If it works.... it works?
softwarechic@reddit
Age is a protected class. Did he really call your code “old” in writing?
Rascal2pt0@reddit
I’m tired of people thinking new and shiny is better. Tell me how 20mb of react that gets refactored every fng day is better then what we had 5 10 15 years ago even.
BeenThere11@reddit
CTO is an asshole.
Needs to lay down standards before any coding happens . Not after the fact.
He just wants you out for 1 reason or the other
seatangle@reddit
Sounds like a moron. Is there any actual reason why Express should not be used? “Old” isn’t a reason.
pigtrickster@reddit
+1 to the lack of alignment beforehand. At least one party here dropped the ball.
Either the CTO didn't set the technical direction appropriately, the CTO changed their mind
(who knows exactly why) or you the PE should have verified that the technology stack that
you planned to use was acceptable (alignment).
False-Owl8404@reddit
Fake story
jeerabiscuit@reddit
What's the new pattern? Sounds like they are ageist and it's an excuse.
Eire_Banshee@reddit
Well koa was discontinued...
mcshamus@reddit
It doesn’t matter what technology anyone likes, it matters what the team is going to own and maintain.
There are rational arguments for and against old or modern frameworks but the real issue here is a lack of alignment on what technology stack to use.
Usernamecheckout101@reddit
wtf if he is cto he should standard compnany tech stack, and tech stack are not latest and greatest, it’s align with the skillsets of the rest of the organization so they can be productive.
CTO are supposed to be standardized tech stacks and where he wants the company to go in term of tech; vps are setting company cultures and help to clears hurdles.
Maybe your cto is an asshole
d33pnull@reddit
Yeah I would look for a job where overall quality and stability are valued more than the latest jerkoff framework
According-Stick-7374@reddit
Your CTO was sleeping. He must be the person who asks you, “please give me an update on the progress”, “share the project plan” Instead of, “Lets plan this out”, “lets discuss which tech we are going to use”
dubh31241@reddit
Run it through ChatGPT lol build it in many flavors
grimm_ninja@reddit
Polish the resume, and kudos. I'm allergic to JS, and I lived PHP for 15 years. Huge fan of DI and inversion of control, but if the architecture you defined for the software you built works, and is resilient to change (ie, maintainable by someone with no tribal knowledge), then f*** em. Go somewhere you can do you. Or, retire and consult.
Sufficient-Meet6127@reddit
CTO is a moron
NatoBoram@reddit
What the hell is that?
Express isn't really "too old", but are you actually using ESModules or CommonJS? Did you enable all the strict options in TypeScript? Did you enable isolatedDeclarations?
Are you properly using @types/express' generics or are you letting them as
any
?Are you using Response locals or are you assigning random shit to the root of the res/req like an incompetent?
Can you pair with him and learn whatever makes the CTO happy? Is he really after modern techs or something else? Can you define the requirements and learn to implement them?
Keep it stupid simple
Vitrio85@reddit
I read this and feel tired. Most probably the CTO has no idea what was going on in the code. But it's weird there wasn't a talk to align on what are the best practices of the engineering team.
Agent666-Omega@reddit
Or perhaps there was but OP omitted that info. TBF, OP didnt give any real detail on what was going on. This belongs more on the rant sub than here
Vitrio85@reddit
True, there are a lot of unknowns.
re0st92mg@reddit
he called you "old"? isn't that discrimination?
you're a protected class you know...
kosmos1209@reddit
CTO is a moron and you just need to get out. If CTO is caught off guard that its own employees started and finished a big project using an technology that's not preferred by the CTO, and had to reject it on that ground, that just shows how bad the CTO is.
Curious-Coast-7918@reddit
We’re only getting OP’s perspective. Maybe every other project at the company is standardized on a different set of tools and OP didn’t look at any of it before Being The Hero and doing things his own way. I’ve seen idiots like that before.
ooa3603@reddit
This post sounds fake.
How do you get to 30+ years of experience and make a rookie mistake like no sign off on requirements.
There's literally a whole sub-discipline in project management on requirements gathering and stake-holder communication.
A CTO with 10 years experience would know this too actually.
If this is real I'd say both of you are incompetent honestly.
That_Engineering3047@reddit
Depends on the size of the company and who is between OP and the CTO. There could have been a reorg, a VP or Director may have discussed it with them, then three them under the bus.
At big companies, politics can absolutely get in the way. You end up with VPs trying to outdo each other by sabotage, etc. It’s not as straightforward as an IC and their manager.
If OP truly never had a discussion with someone about the approach beforehand, that would be concerning.
ooa3603@reddit
You make valid points, but this still smells fake.
I'm not quite sure what is setting it off, the lack of details, the reference to ageism...
It's just giving me rage bait all over it.
Agent666-Omega@reddit
Essentially its hard for anyone of us to judge either or. OP worded it in such a way to make us agree with him. Hes not giving us any other reasoning or details. OP is just complaining instead of trying to actually start a discussion
Ok-Body-2895@reddit
CTO is an idiot. Node and JS is just as good and prob actually better than Java or whatever. It works more efficient than Java and is faster to write. If he preferred some other stack that was his fault for not telling you.
smeyn@reddit
As a CTO one thing you really care about is legacy cost. Whenever you change your tech stack, you incur legacy cost in form of having to maintain skill set in the previous tech stack as your team’s skill set migrates to the new tech stack. Sometimes this legacy cost is quite insidious as maintenance of your legacy apps is being deprioritised and your tech debt slowly grows until it is being declared an ‘unmaintainable monolithic codebase.
Eventually many tech stacks grow old, that is the nature of our industry. The challenge for a CTO is to understand this dynamic and make strategic choices. Just going to a different tech stack because reasons is not a sign of an experienced CTO
Mountain_Sandwich126@reddit
While I cracked jokes about it. "Old code" is good code.
Idiomatic, predictable code is good code.
I feel like your CTO is a CV chaser
el_bosteador@reddit
Literally just learned there are options to Node/Express 😂 do not feel bad for leaving. Fuck that guy.
SuddenIssue@reddit
CTO is a moron, Sir.
exploradorobservador@reddit
Without more detail, I would have no idea. Nothing wrong with Express, the project is still alive, stable, and works quite well. Node modules are sort of a mess. My issue with node is the language trends change too quickly. I have been working as a TS developer for a few years now, and there is a lot of configuration for my build pipeline that seems to rely on almost magical incantations of configuration. I'm glad we've moved beyond Babel though.
raynorelyp@reddit
Tbh I’m not sure what you guys are talking about. Express is for serving http requests and modules and for sharing code between repositories. What am I missing?
exploradorobservador@reddit
What do you mean by for modules and sharing code between repos? Maybe we are actually talking about something else
raynorelyp@reddit
I’m talking about either a) esm as opposed to common js, or b) packages installed by npm
utilitycoder@reddit
Most of the time the CTO should be more C than T
Direct_Turn_1484@reddit
Call that CTO out for not knowing what he’s doing.
hashtag-bang@reddit
I don't understand how a Principal Engineer would choose Node and people would take him/her seriously. This whole question says more than it asks.
datacloudthings@reddit
you mean as opposed to Golang or something presumably?
stookem@reddit
An engineering director that doesn't know the tools or procedures is very annoying. I've been through that before.
Stunning-Signature39@reddit
The way he managed the conversation seems unprofessional to me. Your company should have a coding guidelines so everyone can contribute to the code in the future. The absence of these guidelines will make everyone code in his way and other engineers will struggle reading and understand the code. You as a staff engineer should have a crucial role in setting such guidelines and he as a CTO should have requested it from you. I think you should spend some time in the company to learn the new stuff that you are missing and then you can consider moving out. Btw the market is not easy at the moment so if you are getting paid well, reconsider that.
datacloudthings@reddit
these two things are not the same. require vs include is a legitimate candidate for the company to have a 'house style' on, and if the CTO/head of eng says everyone use include, that's fair.
not using express? that's wild that you got so far without anyone saying not to use Express. i consider Express a de facto standard so if they wanted you to use something else, they should have definitely said so.
doesn't sound like anyone complained about TS for everyone defending TS (I like Typescript too, but you know what else I like? ACTUALLY TYPED LAN ok I'll stop)
sproengineer@reddit
What the fuck bro. That's the classic stuff there is nothing wrong with that. If it works it works. I'm only 8 year experience and think that's just fine.
Fucking jobs will be jobs.
kw2006@reddit
Why he assigned to another dev inserted of getting you to rewrite?
EasyMode556@reddit
A few years out of college is considered senior these days?
datacloudthings@reddit
yes. Senior is now "whatever comes after junior."
Don't get me started.
reboog711@reddit
On the younger side, but yes, the industry has massive title inflation. Many devs make senior by year 5.
Compared to my siblings (A mechnical engineer and an architectural engineer), they wouldn't even be considered for a Senior role until they hit 20+ years.
bullgr@reddit
I think the CTO has a problem to be not the oldest and most experienced in the team. OP mentioned also the years of his and CTO’s experience.
We have here a clear dick measurement contest. The using stack is only an excuse.
OP has two options: -Leave the stack decision to other people (software architect?) and accept his fate that he cannot win against the CTO. -Find another job because he cannot accept that a less experienced person than him takes the decisions.
HockeyFan_32@reddit
Does the CTO have an opinion on how the code was indented?!
TheFunkOpotamus@reddit
You saying “I delivered a project on Node using Typescript and modern Javascript” confirms you are in fact old.
Fun-Put-5197@reddit
30+ years in software development has taught me to look at software architecture as identifying and applying similar:
Problems
Practices
Patterns
Platforms
In that order. The technology that best supports the other three is the last and easiest decision.
I may be old, but I can make and explain a technology decision better than your CTO.
chaos_chimp@reddit
This is extremely common in the JavaScript world. Stuff changes not because it needs to but because it can. And then everyone just finds the new thing (or new way) “better”. And if you are still using the old, you’re just “wrong”. Does not matter if what you built has proven itself. It completely beats me to see this.
If your CTO is really concerned about this type of thing, the company is likely not going to go anywhere.
HotDribblingDewDew@reddit
I'm a CTO. If your CTO is telling you how to code, he's not doing his job very effectively. And next time someone tells you a criticism of your code that's as inane and useless as "it's old", ask to pair with them and see how they respond because they won't. Stand up for yourself when something fishy smells. You're not a 30+ YOE without having accrued some modicum of instinct for what's right and what's not so right.
_throwingit_awaaayyy@reddit
Does the project work? Contain tests? Is the code DRY and CLEAN? If all of these are yes then your CTO is garbage. What kind of CTO is even looking at the codebase anyway? Straight clown. Get out of there OP
hkd987@reddit
A CTO who gives a shit what framework a developer chooses and not how quickly can we deliver value to the business isn’t a real CTO and just care to burn money.
Agent666-Omega@reddit
That depends on the size of the company. A CTO at a startup should care about the tech stack and best practices early on. I hate it when people just talk about delivering value. There are long term side effects to what you do now. Hyperfocusing on the short term is not smart, nor is over engineering for the long term. A framework for a project at its infancy is critical. OP may be in the right but hes not giving us enough details for us to make an informed decision
aroras@reddit
You built a project in a stack and in a style that didn't conform to the norms of your company; the fault is yours. If you weren't aware of how things are typically done, you should have asked. I can't fathom how you could complete a project without consulting with your team. Years of experience aren't everything; if you've worked 30 years and don't see your part in this problem, it means you were not working on high performing teams where you'd learn how to anticipate and prevent situations like this
Agent666-Omega@reddit
Yea a good dev would show iterative progress via a draft PR or have some kind of architecture doc to get people's buy in. The way he worded his post made it seem like he's asking a question but clearly he just want us to all validate his anger. And that type of behavior is often from experienced devs who always think they are right and not open to other perspectives. Especially so when they bring up years...
ccnokes@reddit
They’re a moron. The CTO sounds like a mid-level engineer that doesn’t know how to CTO. You’d think they’d be primarily concerned about high level concerns like business impact, not code patterns. What’s the other eng going to do? Pointlessly refactor it to something else?
Agent666-Omega@reddit
Years didn't mean jack shit. That being said, where there established patterns at the company? That might be why they wanted it done in a different way?
jimRacer642@reddit
This company makes no sense. A senior dev with a few years out of college? a CEO with 10 YOE? huh??? I know devs with 20 YOE and are still not senior. You simply do not become senior with just a few years with all there is to know.
DirtyMami@reddit
Why can’t he ask you to change it yourself? Why get someone else to do it?
ninseicowboy@reddit
I’m picking up a small amount of bias in this question
godless420@reddit
Was just gonna say this. I’ve never had someone describe newly written code as “old”…
miredalto@reddit
Notwithstanding other comments here about bad process, the Javascript ecosystem has a spectacular collective case of ADHD. Frameworks change as fast as TikTok videos. If you're not interested in keeping up with the kids there, you're probably in the wrong space. Chances are your experience will be put to much better use further back in the stack.
rmb185@reddit
I feel strongly that it’s prudent to do the opposite of whatever the cool kids do until whatever they like is around long enough.
theDarkAngle@reddit
Relevant: https://youtu.be/aWfYxg-Ypm4
slashdave@reddit
Petty. What are the requirements, and were they met?
EnigmaticHam@reddit
It’s bullshit, they’re trying to kick you out and pay someone else less.
Xaxathylox@reddit
Yeah... you wrote it to be fit for purpose and use, but you forgot to make it woke.
Back to the drawing board with you, boomer!
(Obvious sarcasm)
Your CIO is a douche. Find a real company.
koreth@reddit
"Your code is old" might be a sign of ageism as OP and some people here are suggesting, but based on what we know from the post, it could also be that the CTO isn't a native English speaker and just expressed himself poorly.
Either way, agreed with most commenters here that (a) the CTO sounds like a dunce, and (b) the tech stack should have been discussed and agreed on up front.
recurrence@reddit
Company is shit, run for the exit.
Spidey677@reddit
13 YOE of doing front end dev work over here.
With our combined knowledge I think it’s safe to say these are people we BOTH don’t want to work for.
Good luck 😄
patrickisgreat@reddit
I’m really beginning to hate software engineering as a profession. This shit is so stupid. I hope you find a better role somewhere but it’s rough out there.
mastermindchilly@reddit
Time write up some company standards that are enforceable by config. Try to minimize expectations drift by having standardized project configs that meet you business’ long term needs. This can help protect devs at all levels from this situation.
wowzuzz@reddit
Your CTO is a tool.
nobody-important-1@reddit
Sounds like he just wanted to be high and mighty or wants a reason to let you go.
unconceivables@reddit
The problem here is that you don't seem to know how to debate the pros and cons of the choices you made with the people who are questioning you, and that indicates you haven't kept up to date. The latest and greatest isn't always great, but you need to be able to articulate why it's not great, and why you chose to go a different direction. If you can't do that, if you just say "it's what I know and it works", then yes, that is a huge problem.
pythosynthesis@reddit
The CTO is being difficult, but maybe not all that difficult. The problem for the company might be the next guy that will have to put hands on your code. Much younger and hence very easily not familiar with your coding style and patterns. That makes the code more difficult to maintain. Continuity of business is a real thing for a company, no matter how shitty the new tech might be.
veryonlineguy69@reddit
absolutely wild that you’re getting downvoted for saying this. really shows how many “experienced” engineers fail to understand team dynamics & co-ownership of the codebase 😑
bwainfweeze@reddit
Unless the CTO is claiming he should have written it in Elixir or Rust I am not buying the future proof argument. Javascript can't die. Not for a while yet. We need a jQuery moment for WASM before that's even a danger, and it'll be a year or two after that before the hype train leaves the station.
pythosynthesis@reddit
Very possible the CTO is just an insecure prick, I'm simply offering another viewpoint. Not an unreasonable one, I'll suggest.
djnattyp@reddit
WTF. Just prepend all classes with "Skibidibi" and "Rizz" and rename all errors to "Ohio". Coding style should be whatever the team agrees on, not lowest common denominator or "newest shizz winnz".
pythosynthesis@reddit
This does not contradict what I said. If "the team agreed" to "newest shizz winnz", than that's the style. And if the CTO makes the call for "newest shizz winnz", then this is what it is.
I'm not saying this is a sensible approach, and OP may want to start looking for a new job for it, but this stuff happens. People like what they're familiar with, cue the tons of Java devs turned Python devs who write absolutely everything in a class, and if the CTO is more familiar with the "newest shizz winnz", that's what will be. Company may well go down the drain for it, but it won't change.
bwainfweeze@reddit
And make your own async delay function called "eep"
noiseboy87@reddit
The fuck is wrong with express?
drumDev29@reddit
We need to use the brand newest shit for mapping routes to static files and basic node functions!!
satansxlittlexhelper@reddit
Sounds like you bypassed the CTO. A mature CTO would think that was just great. They asked you to do a thing without providing reqs. You did the thing. But an immature CTO is going to expect direct reports to seek their guidance/approval. Sounds like you fucked up by demonstrating the CTO isn’t necessary.
solstheman1992@reddit
My guy how you get to principal without making sure you smooth all this out in advance???? Principal engineer ought to be able to manage a CTO regardless of their competency
F1B3R0PT1C@reddit
Standard startup drama
naked_number_one@reddit
Damn, dude. This sucks. My rule is simple: if we haven’t agreed on specific things in advance, the code should be accepted by default as long as it works. I guess someone feels insecure with just 10 years of experience.
Head_Geologist_4808@reddit
Both ways are correct, it’s more about following the patterns used by rest of the company I would think.
ancientweasel@reddit
Everytime I type
ls
I use old code.rtc11@reddit
Wtf is koa. This is so dumb to me. Do they want a product or a stack that is attractive to junior devs? What even is their goal at this point. Im so triggered by front end hype
LegitimateBowler7602@reddit
The CTOs actually technical call may not make sense. However I think it is on you to have gotten to alignment by the time this was delivered.it shouldn’t have gotten to delivered without these discussions and that is likely on you to have proactively done.
Also maybe the cto has a desire to use modern patterns and newer technologies. That’s fine. If there are strong reasons to not do that, it’s partly on you to voice those opinions as a technical leader.
LegitimateBowler7602@reddit
Also there’s something to be said about consistency across different code bases and projects in the team. If other projects are going to be written with certain patterns, it’s best to keep the permutations of technology to a minimum until you have the ability to support the variance
Swordlash@reddit
Abstracting from the topic, but judging people technical skills by years of experience is so lame. Your “only 10 YOE” CTO can be 10x stronger than you. Or 10x weaker. Can’t say from this data alone. I myself am “few years outta college” and I’m a technical lead of much older guys.
But yeah, as other people suggest, didn’t you at any point communicate the technologies you’re gonna use? You were given a task to do X, closed yourself up in the garage and returned after 6 months with ready code? Something doesn’t feel right here. Being a senior+ engineer is less about technical skills and mostly about communication and here I see a huge lack of it.
jcradio@reddit
Sounds like the CTO has an inferiority complex. While it is possible to get stick in our ways, it is also important to know when shivering tried and true is still valuable.
cdbgj@reddit
Call bullshit. In programming it all cycles. Your code will be "new" again in like 2 years.
Comprehensive-Pea812@reddit
This might be on OP.
Express js is objectively outdated, so old is not an overstatement.
Working in a company means you have to consider stack that will be maintained by other person, not just build and forget.
HoratioWobble@reddit
Both are pretty common, just one persons opinion but there should have been an alignment at the start
BrokerBrody@reddit
This problem should never have happened. As others have pointed out, the platform/technologies should have been agreed upon before you started work.
Unfortunately, as an Architect, I would have to say the blame falls mostly on you OP regardless of the gibberish the CTO may or may not be spouting about the code being old.
You are focusing on entirely the wrong thing by bringing up YOE or the CTOs "too old" comment. As a principal engineer, you should be experienced gathering requirements, understanding the needs of the business user, and working with non-technical users.
You should have presented the CTO or your direct report with a list of solutions and explain the pros and cons of each. Ideally, you should have done this before the disagreement but you still had the opportunity to damage control and you didn't.
Finally, I can't help but suspect that there is more to this story. From my experience, most teams/companies have an established tech stack. You can't just choose what platform to work with on a whim. If the company was not already utilizing JavaScript, Node, and Express then you definitely should have consulted someone before starting work unless they expressly made it clear this is a greenfield project and, even if it were, you need to make sure the decision falls on you the principal engineer.
bwainfweeze@reddit
I do have questions about how a principal engineer got to the end of a project without feedback.
If it's a PoC, then there's not that much code to migrate. If they developed a whole app by themselves, I know some people here disagree loudly with me, but a principal writing this much code is a ton of alarm bells. You're not facilitating anybody if you write an entire app by yourself.
cholantesh@reddit
True, but I can't fathom even the most hands-off manager letting the latter happen. At some point wouldn't they at least get curious about how things were going?
martinbean@reddit
You could have simply asked the CTO for some more constructive criticism and to elaborate on what patterns/libraries they were expecting to be used. Instead it just looks like you’ve come to Reddit, to try and convince us of your credentials, having a bit of moan going, “I’ve 30 years’ experience, I did things the way I’ve always done them and it’s worked, tell me I’m better than these young whippersnappers!”
VulnerableTrustLove@reddit
I could see them saying "here we use _____, so redo it using that."
But I struggle to believe they cut you from the project after one strike.
Dunno if they are biased or concerned about this particular project for some reason or if there's a personality conflict but there's more to this story.
bighappy1970@reddit
I have the same amount of experience as you and it’s unlikely I’d use express unless it’s only an API. Much more likely to use next or remix or something more modern with tree shaking, client and server separated at build time, etc
It’s a lot of work to stay “current” and I’m sad to say that in my observations most devs with 20+YOE can’t keep up
inscrutablemike@reddit
If you have the means to be choosy, never report to someone you wouldn't hire. Your CTO is too junior to be a regular manager much less a c-level setting strategy.
Jacksons123@reddit
I’m a newer senior engineer and I just chose to use modular Express over Koa. There are very specific reasons to choose one over the other, but express worked for my use case just fine. Dependency injection is often completely unnecessary. I’m not sure what exactly is happening, but I can’t stand everything about this post. You’re not too old. The fact that you’re using modular js and know of perfectly viable alternative options tells me that you’re a cut above most engineers I’ve worked with that were actually writing “old code”. Sorry you’re dealing with this
DingBat99999@reddit
A few thoughts:
wmanis@reddit
Does code work? If so then the CTO is a moron. Just because a pattern is old doesn’t mean it’s invalid. Probably more bulletproof than some of the newer patterns.
ACrossingTroll@reddit
That's plain ageism from them. F them
gomihako_@reddit
how the fuck else does js work on the server?
prodsec@reddit
Did they not talk to you about it?
PrivateAccount00001@reddit
Use nest js next time
TheGreatMouth@reddit
, g 8Z
softgripper@reddit
Express is fine, but if you used CJS (I assume you mean this from node module pattern), I would reject your work too.
It hasn't been "the way" for years. There are valid reasons for this.
Whether or not your solution works well, writing a new system in what is effectively legacy code is quite short sighted.
dystopiadattopia@reddit
Sounds like an early warning to get out, I'm afraid
lookmeat@reddit
Did this complain only happen with the CTO? Did no bring it up in code review? Was this not mentioned on the design doc? Where there docs that mentioned what are the conventions that you didn't read? (This actually is very easy to happen when you come in as a high-level engineer, you are dumped to do things on your own, and there isn't always time to read things).
I think that, honestly, what I'd do (knowing I am on my way out) is do the ultimate CYA: write a post-mortem, with the conclusion that styles, conventions and tech expectations should be defined or published to avoid this kind of issue. Then I'd publish it, emailing the CEO (since the CTO was involved, this is a C-level issue that needs to be seen). Keep it blameless, be accountable for your "wrong" choices, and then simply argue that this could have been prevented with clearer guidance, and that this should be considered "for future projects take by any engineer in the company".
Would it prevent me from getting fired? No, but it guarantees that if someone seeks to do retaliation I got legal protection. Depending on the size of the company (more specifically the quality of HR/legal advice that is available) it may or may not give you some legal protection.
Personally I don't have a problem with old-code, eventually you'll have to deal with it. As long as it's well tested, readable and mantainable enough, it's fine. That said style-guides exist, and sometimes you want to use "modern-conventions" because they allow other tools, or because they allow the company to use patterns across multiple frameworks/platforms/tools which makes it easier to enforce some quality control, or simply because of familiarity that reviewers and other engineers would have with the tech.
Honestly with web-tech people obssess way too much on what modern tech is. Look at this website, it's solid engineering, the website is nice, readable, very elegant. UX is good quality (though it could be updated to have a more modern asthetic, but this is a matter of tweaking color choices, and its missing some conventions, but those conventions are there to hide us how slow websites are nowadays), and it's interactive using javascript effectively. And it's fucking fast, it literally loads new pages faster than it takes the browser to change the url, that's insane, and yet it's awesome: it does everything you want to quickly, dynamically, and it's as great as any modern website. But if you look behind the scenes you'll see it uses old tech and old models, with .net asp, I think it uses jquery as the most advanced js framework. But it works, and it works really well, who cares if it uses old tech?
If the only criticism you have on a software design is that it's using old, tested, and known technology, but you can't show that it isn't doing a good job, you're missing the point. If your criticism is that the software uses tech that is arcane or not common at the company, and that other engineers will struggle to support and mantain it, that's a fair thing. But then this means that this is a problem of enforcing style, conventions and expectations. A convention problem rather than another.
Now if there is heavy documentation on what conventions and tech should be used and you ignored it, well that's a lesson to learn: software the works well with others is more valuable than software that is perfect, but doesn't play well with the other systems, tools, etc.
ivancea@reddit
There's a big step between something "sparkly" and using express. It's like using raw web servers in Java instead of spring. "It works". Yes, everything works. The idea is using something simple, easy to extend, and that everybody knows.
I won't enter much into the problems of using raw Express, but the general point is that a "modern" framework usually solves the problems in a simpler way with less scaffolding code. And some other things.
10YOE is a lot of time, even if it's a niche. I don't know them, but I would avoid doing such judgements unless you want to sound "angry", which is probably not what you want.
Anyway, the main issue is probably what others said already: communication.
Side note: even Ruby with rails serves "billions of requests" (phrase that means literally nothing). I mean, Windows Batch scripts also served me well in the past, and I'm not doing scripts for my company with it. Avoid such fallacies too
nath1as@reddit
technology is not as important as communication
sieabah@reddit
How could your code be old when express just had v5 release. Clearly your boss isn't up to date with the latest and greatest and newest releases.
gjionergqwebrlkbjg@reddit
Express had minimal maintenance between 2018-ish and now, and v5 has been developed for at least 7 years. It doesn't have a lot of maintainers and is at the very list a risky dependency. Take a look at history of releases, not just the new one.
randomInterest92@reddit
Why is your CTO even looking at code. I'm not even in a big company and our CTO is in meetings, travelling all day every day talking super abstract stuff, high level system design at most
mighty_bandersnatch@reddit
When looking at somebody's code, I always try to distinguish between old-fashioned coding style and genuinely clueless development. The way code is formatted does not tell you anything about quality. Of course, in a healthy organization your CTO would have provided you with coding standards and best practices rather than having a temper tantrum, but I suppose that would interfere with his age discrimination.
Just in case you find yourself looking for work, I'm presently working in the banking sector, which has plenty of older devs. The tech is rather stale but there's still room for excellence.
Derpy_Snout@reddit
A CTO should not be looking at code or second guessing engineers unless this is literally a 5 person startup. Sounds like he has nothing better to do. Huge red flag, imo
binarypie@reddit
Hard truth. You've become complacent and fallen behind the technical curve of the technologies in play here. You disregarded what sounds like established norms on the team because they were uncomfortable. The fact your CTO took your project and handed it someone else also means you were being such a pain in the ass about your discomfort that he managed you out.
You likely aren't too old but you likely need a reality check.... Node modules in 2024.... really?
NullVoidXNilMission@reddit
Yeah, I've been wanting to switch to Hono instead because Express is outdated and development is stalled.
rmpbklyn@reddit
agusm can sue, can he prove defects?
Empty_Geologist9645@reddit
Pretty sure that’s a lame excuse. As express just got an update. How many lines of code?
Many_Replacement_688@reddit
This happens when a company hires to change or fix something. Usually, it's out of our control. It is not the tech but something we can't see as mere staff. It is possible that they might want to outsource your job for someone cheaper, and they will find the current stack you are knowledgeable in hard to find.
sciencewarrior@reddit
Leaving aside any discussion of right and wrong, it looks like you have a bad culture fit there.
itsallfake01@reddit
How in the world has the tech stack to delivery not discussed in the early design stage of this project? Anyway your CTO is POS
not_wyoming@reddit
This is ageism disguised as a technical compliant. Contact HR.
rodramone@reddit
let they write it in trend technologies just to have a headache in the future with breaking changes due to untested scenarios.
express has millions of use cases already tested for years hahahah
cto is dumb as fuck
omgz0r@reddit
As we gain experience we are more or less guaranteed to be working for people who know less, and often those people have power. Here, the soft skills, communication, and management decisions by the CTO seem ridiculous. I’d surface these to the CTO and have a hard conversation or two, as this behaviour harms the business both in terms of waste but also innovation.
I would keep an eye for whether they are willing to hear it/work on it - a lot of these types don’t, and need to walk their path longer to gain that perspective. You walking with them… probably a waste of your time and energy.
Blauchelop@reddit
You have 30+ YOE and are writing Node? There's your problem.
C_Madison@reddit
Was there a requirement to use something else? Or did your code not fulfill the requirements provided? And as others already stated: Why exactly was code written without someone saying "hey, look, we don't use express here anymore. Use x"?
There are so many red flags on the whole thing I vote for
if you have options. Run. And if you're mean about it use the time left to do a few things in shiny new things for resume padding. Seems they like that?
sarky-litso@reddit
Not sure how principal engineer did not align with CTO before building
serial_crusher@reddit
If choice of framework for a project is important to your company somebody (say, a Principal Engineer) should be communicating with other developers to drive alignment and standardize on a particular framework. It's kinda odd that you'd build something in a silo and deliver it after it's completed at that level, unless it's some small one-off project, in which case it's weird that anyone minds.
tappthis@reddit
your CTO is dumb as f
Andrewshwap@reddit
How the hell is this old? The CTO sounds like a moron and makes it sound like you delivered a solution in COBOL
AdministrativeBlock0@reddit
Only 10 years?! How could they know anything compared to a greybeard like you?!!!
It's an Express app. You don't need decades of experience to understand that sort of thing. His opinion is valid. I don't agree with what they said, because Express is fine, but claiming this is a time served issue is nonsense. You're both equally qualified to say what works for this app.
sandboxsuperhero@reddit
On process / politics:
Was this a total greenfield project? Was there a previously established pattern to follow? Design docs?
On the tech:
Key_Delay_4148@reddit
Did you refuse to rework the code when he decided to change the tech stack? Feels like there's something missing from the story. Not sure why a CTO is this involved in the day to day either.
OfficialBadger@reddit
If you’re choosing to be using CJS style modules, over ES modules, then yes, I’d consider that “old”. I’ve also not used express (directly) in years - there are many frameworks that provide a better developer experience than express by providing more/simpler functionality, or getting rid of a lot of boilerplate.
Ryotian@reddit
Process issues I might be seeing?
Antares987@reddit
JTFC.
tparadisi@reddit
Ha ha, use Effect.ts and startle everyone.
NeckBeard137@reddit
I don't see any reason not to pick whatever the golden standard is for a certain stack/library when working on a greenfield project.
Did you have an ADR for this project to justify your choices?
prototypist@reddit
I don't think that Koa really fully gained the popularity that Express once had. You didn't mention React so I assume you might have used another component library, which might be the issue. Also if you have many nested callbacks instead of finding a way to make it async/await.
Maybe you could try to make it as a single-page app with TypeScript + React + Vite? Or if you need a server, maybe the CTO would rather you use their favorite tool for setting up an API (FastAPI, Swagger?). Basically if you've heard these terms bouncing around the office that's probably what was planned.
Adventurous_Bend_472@reddit
Imagining not changing your ways after 10 years. Maybe check how the other engineer does it instead of being offended.
puremourning@reddit
CTO is a moron. Open and shut case.
x2network@reddit
They are hunting for their ageist dig