When Modern Engineering Clashes with a 'Too Risky' Tech Culture
Many seasoned engineers eventually encounter workplaces where their drive for technical excellence and process improvement clashes head-on with an established (and often stagnant) organizational culture. This often leads to a critical question: is this environment genuinely dysfunctional, or am I simply a bad fit?
The Challenge of Established Dysfunction
Imagine joining a company with a decade of profitability, yet its technical foundation is riddled with issues. The application is a massive 20MB JavaScript bundle, making local development slow with 30-second hot reload times. It's built on a heavily customized, hard-to-understand React implementation with half-baked Redux. There's almost no TypeScript, and the team actively resists converting existing JavaScript. Crucially, fundamental practices like committing package-lock.json are overlooked, leading to 60 critical security vulnerabilities identified by npm audit—vulnerabilities the company deems "too risky" to address. Basic safeguards like Content Security Policies (CSPs) are rejected for the same reason.
Beyond code, the development process itself is barebones: no automated testing (relying solely on overseas manual QA), no continuous integration (CI), and a complete lack of client-side observability. When issues arise in production, the primary method of detection is "customers call us and we fix it." Proposing solutions like Sentry to proactively track errors is met with the familiar "too risky" response. Management reinforces this status quo, explicitly telling engineers not to contribute outside assigned tickets and imposing a "1 PR per day or you'll be let go" metric, dismissing any concerns about technical debt or process improvement.
Bad Fit or Bad Culture?
The initial reaction to such a scenario might lean towards labeling the culture as simply "bad." Indeed, many argue that professionals have a responsibility to advocate for secure, robust, and maintainable software. The dismissal of security concerns, lack of testing, and reliance on customer complaints for incident detection points to significant organizational dysfunction. A manager prioritizing a superficial PR metric over meaningful contributions or explaining decisions often highlights a deeper management problem.
However, another perspective is that the company, despite its technical shortcomings, is profitable and has operated this way for a decade. It may not be inherently "bad," but rather a "bad fit" for an engineer accustomed to modern practices and a culture of continuous improvement. Their way of working, while seemingly inefficient, is successful by their own metrics (profitability, customer retention).
Strategies for Navigating Resistance
When faced with such resistance, several strategies can be employed:
-
The Political Approach: Instead of immediately pointing out flaws, especially when coming from a "big tech" background, it's often more effective to build trust first. Demonstrate competence on assigned tasks, understand existing processes, and then slowly introduce changes. Making allies and building consensus privately, one engineer at a time, can be more successful than a wholesale critique.
-
Data-Driven Proposals: Abstract technical improvements into business value. Frame suggestions like observability or performance enhancements in terms of concrete benefits: potential cost savings, reduced customer churn, increased feature velocity, or direct revenue impact. "This will save X dollars/improve Y metric" is often more persuasive than "this is how modern companies do it."
-
Subtle Influence: If committed to staying for a period, one can work within the given constraints. Focus on delivering assigned tickets while subtly improving the immediate code quality, maintainability, and extensibility within those tasks. This can involve writing cleaner interfaces on top of existing spaghetti code, gradually refactoring small parts, or introducing better practices in new code, potentially laying groundwork for larger improvements down the line without direct confrontation.
Recognizing When to Exit
Ultimately, a workplace where valuable contributions are consistently rejected, where management dictates arbitrary metrics without explanation, and where professional growth feels impossible, is likely not sustainable. Such environments can lead to skill stagnation and burnout. If fundamental improvements are met with blanket rejections and your manager explicitly limits your scope to mere ticket-taking, it’s a strong indicator that your values and the company’s are fundamentally misaligned.
In these situations, the most productive path is often to accept the current constraints, fulfill obligations to the best of your ability (meeting the 1 PR/day if necessary), and actively pursue new opportunities. Trusting your gut feeling about long-term growth and satisfaction is paramount. Finding an environment that values continuous improvement and empowers engineers to make meaningful contributions is key to a fulfilling career.