The engineering set-up was a big mess, created by the VP of R&D (let’s call him Men), who had a stellar resume with a Ph.D. and an MBA, but no practical experience building software.
- Nobody knew git branching, so for the same codebase, everyone had their own repo, and would force push into a central repo for integration.
- On top of this, everyone created separate repos for prior versions of the software. One codebase ended up being cloned into 30 repos (that were not even forks of each other) across the team. 🤯
- The code that went into production wasn’t built from source control, so unintentional changes would frequently leak into production with nobody noticing. 🤯
- Individuals “owned” individual code files, and there was no code review.
- Men, the VP, insisted on personally QA’ing every change as they went into production.
- Setting up a development environment would take 2-3 days and a bunch of manual clicking, so nobody kept their dev environments up-to-date, causing configurations wildly inconsistent with production.
Despite having PM as my official title, I knew more about a modern engineering process than anyone else on the team.
One change at a time, I convinced, taught, negotiated with, and sometimes fought the team, and eventually revamped the engineering process to a point where we could finally produce software in a consistent manner.
Men, the VP, offered occasional support, but more often than not, was pushing back on the changes. His objections didn’t appear to come from a place of reason, and he didn’t offer much in terms of alternative solutions. Those few months remain the most painful of my career. Our fight eventually boiled over in an email chain that copied the entire company. Three weeks later, Men was gone.