HACKER Q&A
📣 throwaway1285

Built months of teams roadmap myself. How to proceed?


TLDR: We have a Rails monolith that was the first system built by the company. It has all the typical downsides of that sort of system plus the core abstraction is fundamentally wrong. Developer productivity is grinding to a halt, there's appetite from the business side for change, but the Staff+ peeps can't come up with a proposal better than a 6-9 month partial micro-service extraction that only solves a fraction of the issues. I haven't been here too long, am mid-tier but might have the most experience at the company building the sort of system we're building.

I proposed a 3 month plan for the team I'm on that's half the MVP of new product the team is tasked to deliver and half a better foundation to move the monolith to. That plan was rejected as infeasible due to a technical challenge. I started building a POC to prove out my ideas and the technical challenge they cited has a simple solution. I could realistically deliver my 3 month plan for the team plus what we've done for the last 6 months by myself in a month. Looking for advice on how to proceed.

Details:

We have a Rails monolith that powered the first product for the company I work for. It has all of the problems that these sorts of Rails monolith typically have plus pretty much every sort of programming sin you can imagine. The result is a laughable level of developer productivity. Legitimately single digit percentages of what I'd expect for output given the talent of the below team lead members doing the day to day coding. Management is generally aware but I don't think they understand the magnitude.

The developers are split into roughly three groups. The architecturish folks who diagram evermore complex systems that are infeasible to build. The less experienced devs that realize they have to struggle to implement their user stories but don't understand why. And finally those that understand the problem, failed to effect change, and subsequently gave up. I tried, lost my battles, and joined the last group until a shortcoming of the monolith came to the attention of the C suite.

The architecturish folks estimates were a quarter to work around the issue or a 6-9 month refactor to fix it. I thought I had an opening, and rekindled my efforts to move off the monolith. But ultimately my proposal was rejected because of a specific technical challenge from the FE team plus some system architecture objections.

On vacation this week and one of my goals this year was to learn a new language/technology. Having not yet done that and React/Typescript having real staying power I figured I'd teach myself them by building what I proposed. In short, the problem the FE devs cited was correct but changing the structure of the data solves it.

For most my time here I've felt like I'm the only sane person in a mental hospital trying to convince the other patients about the true nature of reality. I struggle to explain my ideas in the best times and it's even worse when it's the programming equivalent of "sharp metal things can easily cut soft stuff". Like I don't even know where to begin because I can't grok the thought process that leads one to try and cut with the dull side of a knife.

My angel tells me to drop the argument and just go along with whatever the peeps with bigger titles than I have want to do. Devil says you've got a better path forward and you should press it for the good of the company and career.

Anyways, this got really long. What would y'all do?


  👤 catchnear4321 Accepted Answer ✓
What do you value most?

If that level of decision is “above your pay grade,” once you make the recommendation it is out if your hands. And you keep getting paid. Knowing the company made a stupid choice. (Maybe.)

Is the money enough? Or will this eat at you? Will it keep you up at night?

Can you implement it without getting caught and without losing any ongoing updates and changes? It is useless if a month from now you complete the work and the “legacy” app now does X while your changes do not.

Willing to insist you were right if someone catches you? How sure are you? Willing to be wrong?

Have you shown the data structure change? Did anyone have further comment?

More senior folks will give estimates that sound pessimistic to less senior folks because more senior folks typically add a “shit happens” modifier. Everyone calls it something a little different. I don’t think anyone calls it that. But if you say a month, and that expects a solid month of uninterrupted time, then it isn’t a month.

You can give up, keep advocating, or go rogue. Advocating takes longer, but may have better chance for success and recognition.

But cowboying shit also happens. Good, bad, or ugly.

And most importantly, maybe revisit this after one of the worst periods annually for productivity. People are on vacation, or dreaming about it. There’s a good chance they are incapable of considering your proposal honestly until, well, early 2023.