HACKER Q&A
📣 frnkquito

Leading software solutions I don't believe in?


Hi Hacker News. I want to ask your perspective opinion on a sentiment I been having for quite some time now that I don't seem to untangle.

As context, I am a dev lead of a 5 people team at a big consultant. We do DevOps for a business web app (mostly CRUD, lots of financial fields) in an "Agile+Scrum" manner (the quotes represent the general rant about how this is usually implemented), amongst about 5 other 5 people teams.

The uncomfortable sensation appears when we need to plan and define our release work, after requirements have been defined. This means designing a solution and the technical approach for it.

During that process I put a lot of effort on hearing everyone's opinion, their stated pros and cons, and I ask questions. After hearing the proposals, I usually feel the approaches are too intrusive for our current system, which is not stable and has no automated/unit tests.

Solutions proposed by my collleagues are feasible, and in some way makes sense, but they're mostly too intrusive. For example, and to be specific enough, changing from client side rendering to server side because of performance issues, where the client rendering code is a mess and can be refactored enough to make up for the performance (to my perspective).

And this conflict of perspectives is the one I usually have between me and my colleagues. In my perspective, I propose to fix and develop making the minimum structural changes, this being because (and something I use in my arguments): functional financial requirements are not clear for everyone, we don't have unit or integrated testing, process are not polished enough (for example, dev team can make test team disregard a bug because of it being "data issues")

On my colleague's perspective: if we change it, we might as well change it from scratch, develop a good, stable, solid solution that'll last for long. This being done by junior devs, rarely happens.

Whenever I raise my points, I "loose" because my proposal doesnt get the majority of the votes(), and even though I insist once or twice, I don't feel that getting confrontational adds much.

I try really hard to avoid having the "they're wrong, not me", but with time, the issues I raised when discussing the solution start to appear, even during early development phases. I try compensating in my mind the "told you so" with thinking that probably my proposals will also face eventualities.

I feel that the team doesn't care and respect the product and is getting degraded over time, exponentially.

My asks here are: have you been in a similar situation? Is it usually like this? Is this a matter of processes across the project? Should I adapt to this way of working, which I'm mostly against?

This is my first time being a dev lead and I feel I cannot implement my software philosophy (my way of crafting, if you will). It's like leading something I don't believe in, which is getting harder every time. I'm starting to feel this is not the place for me, but I wanted to get experienced opinions before throwing it all over the board.

Thank you for reading through.

()EDIT: votes happen between dev leads ofbthe different teams, me included. Not between devs and dev lead.


  👤 PaulHoule Accepted Answer ✓
Note

   which is not stable and has no automated/unit tests.
as a definite sign. See

https://www.amazon.com/Working-Effectively-Legacy-Michael-Fe...

for a good treatment of the "whole picture" of applying tests to legacy (and new) systems including the politics.

But yeah you are facing the classic problem of maintenance programming where you have to make changes to a system that you don't completely trust or understand. It seems like slow going no matter what you do, you've got the choice of (1) developing partial understanding of bits and pieces of the system so you can make surgical changes to fix problems vs (2) rebuilding large parts of the system. If you do enough of (1) you will have some sense of what (2) entails, if you haven't done enough of (1) you'll never believe how many things a system that's been around for 5+ years is doing that you don't know about.

I would also point to

https://www.redhat.com/architect/pros-and-cons-strangler-arc...

as advanced thinking on this issue. If you can do anything, get your team writing tests. It's not a given that people tasked with writing tests will write good tests but writing good tests for a legacy system that you've struggled with can be an almost religious revelation.

It also seems like a bad smell that you're voting on things, I mean juniors shouldn't have the same level of input in this as you if you're the lead.