its gonna be a long post, sorry. i mostly need to get this out of my head but id also like an outside opinion by experienced devs on whether im overreacting.
edit: its a fully remote job
tldr: ive been the infra guy at a small us based startup for about 10 months. no users, no revenue, 500k+ lines of ai generated code that nobody can fix, and a founder who builds whatever chatgpt tells him and deletes whatever chatgpt says is unnecessary. we are writing our own encryption. our .env is in git. my actual job is waking up, prompting an llm a few times, and going back to my life. like money is okay but i am rotting every single day here.
so the thing is, there is no product. there is an app and about 10 to 15 people use it. most of them are people the founder knows personally.
the workday loop is: he wakes up, texts the group "yo we need this feature, my friends use it on [some other app], its cool". we vibecode it as fast as possible (say hours) and push to prod. he downloads the build, plays with it and is happy. thats the whole process every single day. there are no standups, no calls, no technical discussion, no pr review, no tests. just him texting instructions he got from chatgpt.
right now this causes no visible problem because there are no users. the problem starts the day he tries to onboard a few hundred. the app can barely hold the ones we have. he doesnt know that and doesnt care because it works fine on his laptop (for now).
the codebase is over 500k lines (there is one single react component with with 20k loc) and i dont think it is fixable anymore. there are bugs that have been open for more than 2-3 year, not because nobody tried fixing them but because you touch one thing on one side and ten things break on the other. thousands of lines of dead code, the same function written five different ways, nothing ever deleted. reading it feels like the reverse engineering ctf challenges i used to do in college except nobody obfuscated it on purpose. every time we onboard someone new they spend an hour hitting bugs which have already been reported 100s of times, before they can actually use the thing. media not sending, messages not loading, app slowing down or crashing. a full rewrite is the only honest answer and it is never going to happen because its physically impossible at this point.
people ask why i dont just fix it? two reasons. first, im not an experienced app developer, especially not in js. i mostly write c and python. second, and this is the real one, the moment i touch it i own it. the entire backend becomes mine and i get to spend the rest of my life arguing with someone about whether leaving console logs in prod is bad. i do not have that in me. id happily pour that effort into a codebase that was going somewhere but this one isnt.
the thing that actually breaks me is the loop he has built with the ai. he asks it something, it agrees with him, he takes that as confirmation and now its the final decision we have to hold on to. when we push back we are arguing against a machine that never disagrees with him. and he can always find someone else who will just build what he says so people are also afraid to argue too much.
at one point our entire website was a single ai generated image with clickable overlays on top of it. buttons, links, all of it, one image. he said it was cooler and faster than building sites properly and that you dont even need to know how to code. it took days and the whole team saying it was stupid before he came around and only after i resized the browser window in front of him and showed him what happened.
when we get stuck on anything his answer is "just use ai man, ask chatgpt". there are no senior engineers. there is nobody to learn from.
the other thing is he wants everything built in house. not we have a specific need and no vendor fits, in house. everything. we used to pay for slack and jira and a few other things. he told us to build our own, so we vibecoded replacements in two or three days each, and the second the basic flows worked he moved on and started piling features on top without ever testing or fixing what was already there. i have lost count of how many half broken internal tools we now maintain. they all technically work, in the sense that they work for him.
building things in house is fine, everyone does it. but we are also writing our own end to end encryption. his reasoning is that something like the signal protocol is open source, so everyone can read the code and therefore everyone already knows its vulnerabilities. i could not move him off this. same with the local model in our product. he wanted me to train one from scratch because using open weights like llama is apparently a security hazard for us since we are a security company and we cant bring in other peoples tools. it took me an absurd amount of effort to get him to accept whisper for local speech to text. his response was still "actually, why cant we have our own".
meanwhile he pastes api keys and passwords into chatgpt. our .env is committed to git. there are crypto keys hardcoded in the backend. none of it bothers him because the ai hasnt told him its a problem yet. im fairly sure the day it does he will fix it in an hour and act like it was always obvious. so we are a security startup with homegrown crypto, secrets in version control and a founder who thinks we have built some impenetrable in house fortress.
the infra part is where i actually did decent work and it still ended up really absurd. when i joined he was burning around 3000 usd a month on aws for essentially nothing. i got it to about 600. thats still a lot for zero users and zero revenue, but the bottleneck was never the servers. his app needs a 3 node k8s cluster on c5.xlarge with roughly five pods per service, and we still hit oom sometimes, with 15 users. for comparison i run heavier self hosted stuff for my friends on a 5 dollar vps and never touch a limit. i built that whole cluster and i feel stupid about it but i could not convince him we didnt need it.
then he made me delete the entire logging stack. because the ai told him that if you have kubectl logs and stern you dont really need observability. he asked me, in writing, why do we even need this whole login thing when we can just look at the logs from kubectl. he debugs in prod and im not joking.
id have quit in the first week itself if i could but i have bills to pay and a family to take care of so i cant.
the annoying part is that i actually love this stuff. ive been daily driving archlinuxsince high school, ive compiled gentoo and done linux from scratch for fun, so debugging and troubleshooting is something i do every day and i love it. i like writing c and messing with low level systems and networking, ive been hosting cs and factorio servers for years, i self host immich and a bunch of other services on my own hardware. automating things is genuinely my idea of a good weekend. so im not burnt out on engineering. im burnt out on ten months of building things that dont matter, for nobody, with no one around to tell me when im wrong. i miss caring whether the thing i shipped was correct.
and sorry for this last para but if youre building something real and you need someone on infra, backend or systems, id like to hear about it. i just genuinely want to do some real and fun engineering work where there are users who would notice if the services went down, someone senior enough to reject my pr and problems where the answer isnt "ask chatgpt". im not chasing a bump, id lowkey take a step back on compensation for a team where the work is real.
thanks for reading if you made it till here, i really appreciate it.