Hi, Olga⦠@Angel Barrera Sanchez stole some of my thunder. Iāll echo what he said, and add a bit more.
Two concepts that companies would probably say they understand but may not act like they do:
⢠most software products these days arenāt applications ā they are environments running applications. We donāt get paid unless the applications run successfully in their environments. So if you want to continuously integrate/deploy/test your product, you have to be doing that with an environment, and not just an application.
⢠the shape of the platform on which a product is built necessarily affects the shape of the product itself. One easy example of this is how changes in version control historically changed workflow. In principle you could implement the same workflow and cadence on ClearCase, subversion, and git⦠but in history thatās not what happened ā as each new VCS gained traction, teams changed how they built the product. (And this is in addition to the technology that has changed the products directly, i.e. cloud, containerization, etc.).
To me, a successful collaboration requires that all the levels of engineering management have internalized these concepts, and that objectives and incentives are aligned accordingly. Application architecture decisions may have implications for the deployment environment ā the product ā and by extension the dev platform. Those implications have to be taken into consideration from the beginning. Conversely, dev platform decisions and objectives have implications for product development. Conversations between ādevā and āplatformā management (and I donāt even like siloing that way) must be early, often, and always, always with the priority of the product (application + environment) in mind.
Iāve seen this go wrong more often that right. Iāve seen dev managers refuse to allocate resources to help address significant dev platform issues because they were chasing feature release schedules (making the platform issues worse in the process) and sacrificing stability for short-sighted delivery goals. Iāve seen platform teams launch efforts that would benefit the platform itself, while leaving higher-priority problems with real product implications unaddressed. Iāve seen āplatformsā that werenāt so much platforms as an aggregation of platform technologies, each run by a team focused on its own thing and not coordinating effectively with other teams.
I think this all comes down to a coordination/orchestration problem. Orchestration of applications is tricky, but orchestrating people (let alone teams) is downright hard. Orchestrating people involves artful arrangement of incentives to keep everyone āon missionā, and happens at hierarchical levels that ICs donāt always have access to. Iām not a manager, nor do I desire to be. But lacking an āMā on my org chart panel tends to cut me out of the conversations where this orchestration needs to happen.
Hence my original question. ;-)