6 ms·
OTOH, I was hired by an enterprise that was many months into a giant backend rewrite. After wrapping my head around the many plans, I realized they were rewriti
by kstrauser 9mo ago
OTOH, I was hired by an enterprise that was many months into a giant backend rewrite. After wrapping my head around the many plans, I realized they were rewriting Django, badly. One weekend I prototyped the whole thing… in Django. It worked. It met the specs. It was a CRUD app with a REST API.
I came in to work Monday morning, showed it off, and inadvertently triggered a firestorm. Later my boss told me not to do that again because it caused havoc with schedules and such.
So I quit and found a better job. Sometimes the new guy can make a better version themselves over the weekend, not because they’re a supergenius, but because they’re not hampered by 47 teams all trying to get their stamp on the project.
(In before “prime example of overconfidence!”: feel free to doubt. It was a CRUD app with a handful of models on a PostgreSQL backend. They were writing a new Python web framework to serve it, complete with their own ORM and forms library and validation library. Not because the existing ones wouldn’t work, mind you, but more out of not realizing that all these problems were already sufficiently solved for their requirements.)
- noduerme 9mo agoTake this idea and bring your own validation library and forms and UI components to the next job, and you've described what I do. And then you have real lock-in.
- kstrauser 9mo agoAh, so you’re the one who made that same company’s marketing website!
- noduerme 9mo agoHahaha. I'm not above that kind of work. Sometimes having a consistent codebase for both things comes in pretty handy if you need to tie em together or just need to spruce up the CSS every few years. I don't intentionally make my work hard for anyone else to maintain. I comment and write tests pretty thoroughly in case someone else comes along. Or in case I get woken up at 6am with a bad hangover.
- kstrauser 9mo agoNah, I gotcha. That makes a lot of sense.
- majormajor 9mo agoYeah, that definitely happens. But I don't think Claude Code is going to prevent an org that thinks they can prompt their way to a replacement for all their SaaS from having internal political bickering that makes them end up with a extra-shitty mega-compromise to try to make all the internal stakeholders happy. If you've got no vision and no taste, you need to find a vendor who will protect you from screwing up your internal processes and tools. Internal tools teams have rarely cared much about UX or the day-to-day experience of their poor users. The quick-and-dirty internal-prompt-based one is likely to similarly be unimaginative and unintuitive.
- November_Echo 9mo ago> Later my boss told me not to do that again because it caused havoc with schedules and such. Did you talk to anyone about your plans before you brought in the demo or let them know they were solved problems? Often these sorts of reactions come down to your boss not wanting their team to lose their jobs because of the perception that it can all be handled by one person who's happy to work weekends.
- kstrauser 9mo agoI wasn’t politically savvy enough to do that. Honestly, I don’t want to be. The reality was that the project really could have been done in a month by a couple of people. It got turned into an enterprise project with multiple unaligned teams with Gantt charts and milestones and everything. Again, and I can’t emphasize this enough, for a Django CRUD app. It was a 4 person-week project turned into a major ordeal. No one should have lost their job; they should have been put to work doing the thousand other more productive things they could’ve been doing instead.
- jackblemming 9mo agoYou’re doing God’s work. Don’t let the bastards grind you down. Keep building.
- kstrauser 9mo agoI couldn’t help it if I tried. It’s who I am.
- keyle 9mo agoI've been in a similar situation, with a laravel product quoted for over a million and I quoted 40K and did it all. That did not go down well, even though it was a great product, styled etc. had all the bells and whistles.
- yieldcrv 9mo agoyou got paid the $40k though?
- clarkmoody 9mo agoRule #1 of power: never outshine the master
- neya 9mo agoI can relate to this so much. When I was a newly joined Google consultant at a partner firm, we went to their office - some 13 different types of cuisines, different types of game rooms, lounges and what not. A luxury star hotel experience. We were waiting for our meeting on behalf of this one particularly large media client who was bleeding money on Wordpress. 3 engineers arrived - fashionably late. We explained them the situation and all we wanted from them was some GCP offering that would cure our woes and one that would cut our bills. The senior consultant - and presumably the only tech guy (rest seemed to be salesy) wasted our time like a used car salesman - he didn't even understand Google's own product portfolio and recommended us to use something like Spanner - which was totally not the solution to the problem, not to mention, expensive. My boss and I left the meeting pissed off and he told me - "Neya, you probably know more about the product portfolio than these guys. Let's leave". That weekend, I went with my tried and trusted favorite Db - PostgreSQL - CloudSQL with a custom Elixir middleware based an old CMS I wrote a decade ago. After some trial and error, the solution worked flawlessly (and still does till date on auto-pilot). My client still has the lowest cost in the region - 1/3rd the cost of their competitors...7 years later. Back then, there was no vibe-coding, no AI, no auto-completion. Just pure thinking and experimentation. All this just to say I agree that the new guy sometimes can make the best solutions to a problem and not always screw up. I always listen to new hires these days (now I'm a fractional / CTO) because you never know who could pull off that 1/3rd cost cutting framework move.
- Aeolun 9mo agoIt’s funny you complain about the sales pitch the guy gave you, but the comment itself sounds like a sales pitch :)
- rendaw 9mo agoIsn't this agreeing with the parent? If Django were the B2B SaaS product, you didn't vibe-code Django, you just used Django. You aren't responsible for maintaining Django itself.
- kstrauser 9mo agoDjango wasn’t the product here, though. I used it as part of the toolkit to “slap something together in one weekend”, and that something was the (actual real life) B2B SaaS product, or at least the user facing interface to it.
- jesterson 9mo ago> Sometimes the new guy can make a better version themselves over the weekend, not because they’re a supergenius, but because they’re not hampered by 47 teams all trying to get their stamp on the project. In 99.9% of cases what seems to be "the better" version is better only for the "new guy" or rather his ego. Those 47 teams hampering doesn't necessarily mean a bad thing, and more often than not actually well justified "stamps". You only understand those things when you turn from the "supergenius" into an owner who have to take care not only of numbers on screen, but also security, interfacing, management and so on. Or you don't turn into.
- kstrauser 9mo agoThat is often the case, but far from all the time. Other times something is made so needlessly complicated by office politics that it may never get shipped.
- jesterson 9mo agoNot saying it never happened in history, but most of those "complications" are justified. Being narrowsighted and overfocused does not help to assess it.
- kstrauser 9mo agoConversely, sometimes when you have 23 people designing something, they can lose track of what they’re trying to accomplish and focus on how they’re trying to accomplish it. It can be an XY problem sort of thing. “How can we get the Redis queue to do an exactly-once insertion into Kafka, if we can’t guarantee exact ordering from the Paxos framework?” “Uh, guys, aren’t we trying to send out the weekly email newsletter to our estimated 500 subscribers?” “Oh, well, I guess we could just use Mailchimp…” Like I said earlier, it’s ok not to believe me. I don’t particularly mind. But just between us, my solution met every one of the project requirements using COTS parts because they’d made it waaayyyy harder than it needed to me.
- jesterson 9mo ago
- trymas 9mo agoIt feels like I have worked with you (though obviously not). Had same experiences to the T. Maybe it's just something that happens to many in web development world, not-invented-here and all...
- larodi 9mo agoI resonate strongly with this story. I’ve seen three people teams get in one month where SAP could not in year, and also let and witnessed incredible number of total fakers in SaaS enterprises. Big corpo may be too big to fail, not so sure about their whole cohort of partners and fakers.
- lampe3 9mo agoOh I have seen this story and was the one who caused this story when I was younger. In a lot of cases the "new guy" thinks its an easy software and does it on his free time and thinks he did a great job. In reality the specs are never 100% done correctly. The "new guy" misses some edge cases everybody but him knew because its just company knowledge. A lot of info in the specs was missing since they are not complete and so on. This over the weekend never works in the long run. The ORM worked for all the happy path and written down cases but then you have cases were the ORM just is not good enough or fast. So you start to add strange code to work around the ORM. The same for the web framework or the validation lib. To me the author of this comment sounds like the typical "Freelancer" coming in into a company knowing everything better then all the people and then leaving after a few months and now everybody else has to deal with his code.
- CER10TY 9mo agoIt swings both ways though. I've seen plenty of older engineers dismiss the "new guys" effort and claim that everything had to be custom written, because there's no way a common framework like Django could cover their use case. The same type of engineer has never once worked with a common framework though, so they don't know what's included nowadays. Turns out it's a lot easier to build on top of a common framework than do everything from scratch.
- lampe3 9mo agoSure I had an older dev do bit masking for a list of 3 options in javascript because he was used to old terminals. Its something different coming in and changing things here and there but rewriting the hole thing on a weekend is something different.
- duggan 9mo agoI was very impressed with vBulletin’s use of bitmasking for permissions (of which there were many possible combinations) when I first encountered it. Would love an excuse to use it, but one has not come up in like 15 years since, hah.
- kavalg 9mo agoIn the beginning of my career, I've been once told by my senior management that I should never again: 1. Optimize things so that they work 10 000 times faster because it makes us look incompetent (must be done slowly to show gradual progress). 2. Brag about such optimization (to stakeholders) without first synchronizing this with them (so they can brag proportionally to their pay rate :) ).
- wiseowise 9mo agoThis was the moment I’ve stopped putting any effort in my work.
- juleiie 9mo agoJust smear the heck out of them to stakeholders, after implementing something big and climb over these incompetent shmucks and watch their fall
- bluemenot 9mo agoAlso make sure to brag using terms that non-technical people can understand and want to hear. Less "we stopped writing an in-house CRUD that was Django but worse" and more "we saved months and increased security by adopting a market leading solution and it works better with AI too".
- kavalg 9mo agoIf I can only go back in time to 2007 :)
- yunohn 9mo agoWhile probably facetious, those with power (who you aim to smear and replace) will save themselves and work together to fire you ASAP. This is not a winnable battle nor strategy for success, unfortunately.
- CuriouslyC 9mo agoThis 100%. I once got disciplined for insubordination for skip-leveling my "manager" and disregarding their instructions when she started telling people on the team to work on something totally non-critical, when the team had a demo in a few days that wasn't ready yet, with a client that was already unhappy, on an 8 million dollar contract. I didn't hang around that place long.
- HenriTEL 9mo agoI had a similar experience where someone that had prior experience with django while we were using sqlalchemy started to design a django-like ORM on top of sqlalchemy. Of course it took him some time to get working, was a hell to understand and extend and most importantly lacked support for basic features. Fortunately it was limited to a small isolated service but I can imagine the damage on the long term if you continue that route on what becomes a huge monolith after a few years.
- bartread 9mo ago> feel free to doubt. I don't doubt you at all. I once worked on a project that was a new sign-up process for a large retailer (~90k employees at the time, four figures worth of outlets, quite a few billions in turnover). There were about 60 people across, I can't even remember, maybe 10 teams that I knew about. One of the managers there assured me that the true participant figure was closer to 160. I was agog. This project took months, and it had been going for months before I joined. And, as you can imagine, with that many people involved over that sort of timescale, there was turnover: people, sometimes key people, would leave and be replaced - sometimes by others who'd already worked on the project, but sometimes by new people - with the expected disruption that causes. It was two web pages, plus some back end plumbing across multiple systems. But, in the grand scheme of things, nothing that complex. I reckon it was a handful of thousands lines of code total across the full stack. I was mostly on the database side and, IIRC, I wrote a few hundred lines of SQL in a couple of stored procedures (wouldn't have been my preferred solution building from scracth but, you know, we weren't, and we had to integrate with a legacy systems that had to keep working as expected). Overall it took 8 or 9 months from kick off to shipping and I was involved for perhaps 3 months of that towards the end. I was on the call with dozens of other people whilst me and one of the other guys hooked the final pieces together and tested it end to end for the first time... and it worked. There was actual cheering. Large enterprises are genuinely ridiculous.
- rectangleboy 9mo agoI was complaining about SQLAlchemy's insane quirks to a group from my alma mater and one of the grad students said, "Well, the solution to your problem is clear: Write your own ORM." and I had to explain that this startup does not want to get into the ORM-writing business.
- kstrauser 9mo agoI freaking love SQLAlchemy. Those quirks once let me build a sane API on top of a legacy database (ported from Visual FoxPro hourly using a program I also wrote for the task). Some of the fields were values in an XML doc shoved into a DB column because the original programmer thought that was a good idea at the time. I wrote indexes and virtual columns that let other devs query those fields just like everything else. It has its edge cases, but Alchemy is the greatest thing in the world when you need its exact features. But yes, I’ve used that line plenty of times: “we’re not in the X-writing business”. I mean, sometimes you can’t help it, but those should be exceedingly rare cases.
- profsummergig 9mo agoAlso, some people want to work on what's already familiar to them. If building a framework from scratch is what appeals to them, they'll do that even if a framework already exists. Busywork to look productive.