Consistent pushback against modern engineering best practices - am I being naïve?
Warning: this is a vent post/me asking for a reality check.
I've been with this company as an engineer for almost 6 years now. We are technically a software company, our product first released in the earlier 2010s. Small team. Our stack is sorta all over the place. About 5 different JS frameworks depending on the area of the system, incredibly slim .net core layer, large MSSQL DB containing 100s (close to 1000s) of stored procedures with most of our business logic.
Our software is hosted on prem. Each of our customers have 2 windows servers, one for IIS and one for SQL Server. Deployments are a mostly manual process. I build packages by merging all of our feature branches & sprint branches into a release branch. That branch gets tested. I then build the package using our custom tool (a small .net GUI application that just runs our build steps and zips everything up). I then copy that zip file to our QA server where I feed it into our similarly custom built deploy tool which unzips the package, compares each file to the one on the site, and replaces the live file as needed. Conflicts are rampant as all of our customers have some level of customizations on their sites that do not exist in version control. These conflicts are resolved manually. We also have around 25 versions of our software floating around on ~300 customers at any given time.
We have zero technical documentation. We do not have any monitoring in place. Not a single automated test. Each release, our QA team regression tests the entire system + new features & bugs. Code reviews are a formality & only even happen on bugs. Features currently do not have a code review process.
We constantly get pulled into system down events & other support incidents as our technical support teams (larger than our engineering team) struggle to navigate & troubleshoot our monorepo codebase. We spent all of december and january doing support full time to help them out of the giant hole they were in.
I routinely suggest changes to our process & tools we could be using to make our life easier. My manager seems to agree but he is new to the role and frankly a very weak leader. No ability to push things through. Our old manager who is now the director is still incredibly involved and is the defacto leader of our team still.
Last week I suggested we start using conventional commits as I felt it was pretty low hanging fruit to help us improve our documentation and enable us to eventually produce meaningful changelogs and give our support teams a better starting point when troubleshooting customer issues. Our commits currently are just "JIRA# - fixed bug that caused bad data" and we do not squash anything making the git history virtually useless.
Today we for some reason had a whole team meeting to discuss this where my manager said we needed to all agree on this if we wanted to move forward with it (insanity??). We actually managed to reach a consensus (rare for my team of varying ages) but our director who was in the meeting basically shot it down the entire time because he struggled to see what value this offered and "prefers that we spend our time thinking about things that actually help the business". This guy was an engineer for 20 years and only moved into management over the last 8 or so years. I respect his opinion but this just seems crazy.
At this point I've had him or my team shoot down:
-
Moving our customer prod codebases into version control (apparently impossible to maintain even though we are the only ones making changes to their sites)
-
Automating our build & deployment process (apparently not enough value despite the fact that we have 4 FTEs currently handling all of this)
-
Code reviews on feature branches (who will offer a meaningful code review on new features where only the authoring dev understand context)
-
Uptime monitoring (we hear about it from the customers quick enough currently)
-
Containerizing our application for dev & qa (no real benefit)
-
Feature Flags (incredibly large technical effort to add these to new features)
-
Automated testing ("point to which bugs we would have caught with automating testing")
-
And now these conventional commit messages (I kid you not the biggest negative point boiled down to "what if a change impacts multiple components, you can't just pick a single area of scope")
I love the company, work fully remote, and have a great WL balance. I am starting to lose my mind though at our completely non existent engineering culture. Am I expecting too much? Is this just me going through my 'teenage' years as an engineer where I think I know everything? Would these be deal breakers for you?
Posted Jul 8, 2024, 7:52 PM UTC · edited