6 ms·
There's a certain disdain for metrics so we're not tracking a lot of things proactively (think latency/rate, for example). That means every new change is based
by throwaway98988 8y ago
There's a certain disdain for metrics so we're not tracking a lot of things proactively (think latency/rate, for example). That means every new change is based on a feeling of how it'll impact the systems. We also don't have a dev/test environment so changes to production are what I'd call, "faith based". There's a lot of apply to production, revert cycles. Or worse: no changes at all for fear of breaking things.
But there are more mundane things like not using a code linter because $linter enforces some rule that someone doesn't like, so discussions stall. There are literally hundreds of JIRA tickets about some proposed idea that fails to reach consensus.
I think isolating myself from the craziness is a good idea but I'm having trouble with how it would be received. Say I push a code change that fixes a bunch of things that $linter complained about, including stylistic changes. Now that has to be reviewed by someone and...? Should I just keep pushing the envelope like that? Someone will probably contribute some piece of code full of violations and then... I fix it and cause an incident with teammates?
One possible outcome is to just accept things and let go. I see this a lot in people that have been here for many years. They are also not people I would aspire to be so... I kind of have to accept defeat but that's demoralizing. I'm coming to a point where I'm asking myself where I could be and I don't have a good answer. Should I stick around and keep trying to change things? Back to the swimming against the current question.
Thanks for all the feedback.
- tacostakohashi 8y agoIf you think it's valuable to track latency, that seems like something you could just do. Grab the logfiles process them in your home directory, produce some graphs, keep the data over time and track changes. Ideally it would be done centrally, but as a starting point just do it yourself. Not having a dev / test / qa environment is inexcusable, why do you not have that? Why can't you just set one up yourself? Possibly on your own workstation or some VMs, just find a way to do it. Linter warnings are of highly variable quality. Don't bother about anything stylistic - tabs vs spaces, camel case vs underscores - those things never caused anyone's software to not work. Ask yourself "could this break something in production?". If the answer is yes, then create a code change to fix one instance of the problem and submit it for review (not every instance of every problem, just one instance of one specific problem that could affect production). People will ask why it's a problem, you can explain it, and if you've selected a good example of a non-trivial problem, they'll accept it and merge it. Then, go and find the other instances of the same problem after you have set the precedent, and there will be less resistance. Then, start working on other problems, rinse and repeat. Doing this will educate people along the way, and will work better than some big shock-and-awe change that touches a lot of things at once. Go easy on criticizing other people's work during code review, they're often emotionally attached to their code at that point since it's the last step in something they've been working on for weeks and want to move on from. Again, only raise things in other peoples code that could break things in production. As for accepting things and letting go, I'd say it's more a question of picking your battles. Don't accept everything and let go. Try to improve things to the extent you can while you are there, even if that isn't forever.
- jt2190 8y agoHonestly it’s disingenuous for people to suggest that one person (in this case, you) can somehow fix everything by “leading by example”. That’s first and foremost a management job. So first you need to decide whether you have management support for the changes you’d like to see. Start by examining the behaviors and outcomes your managers currently reward. This will tell you their true priorities. Next, determine if management is rewarding those behaviors because that’s the best way they know (ignorance) or other reasons, e.g. politics, don’t care, empire building, etc. Ignorance is potentially fixable, anything else is a sign you won’t be successful. If you’ve found that management is simply ignorant, see if they’re open to learning new things. If not, you’ll find yourself preaching to the deaf. Find another job. Also be aware that survivor bias means that your coworkers are well adapted to the status quo. They will likely resist changes as well. See if you have any allies amongst the troops. If not, leave. I know that this advice is heavily biased against staying, but with good reason: Cultural change is extremely difficult, and even CEOs, who theoretically have the most power to make changes, often fail at it. Better to find a culture that’s ready for the change you want to help with, rather than to stay in one that doesn’t. Good luck!