A brief follow-up to the post I wrote on governance topics.
As we operationalize the cloud, we will eventually get to a place where we have solid policies and process around everything on our governance to-do list and more. However, I think it’s critical, as Sharif put it, to “think like a startup” while we “operate like an enterprise.”
The first thing any programmer learns about managing a development lifecycle is to forget “waterfall.” Trying to nail down 100% of the design before coding is not only a waste of time; it’s actively damaging to your project, as changes inevitably come later in the process, but you’re too tied down with earlier design decisions to adapt. I’m sure no one in this organization doubts the value of agile, iterative coding. We do our best to establish requirements early on, often broadly, refining as we go. We get feedback early and often to constantly guide our design toward harmony with the customer’s changing understanding of the software as it grows.
We should apply the same strategy toward our cloud initiative. Because it’s so easy to build and tear down infrastructure, and because our host and application deployments will be scripted, automated, and version-controlled, we have the luxury of trying things, seeing how they work, and shifting our strategy in a tight feedback loop. Our governance initiative is very important, but it’s also important that it’s not a “let’s decide, then do” process. That’s why I didn’t just ask for people to come back with designs on paper for things like IAM roles and infrastructure. I asked that they try things out and return with demos for the group. Let’s be iterative; let’s be agile. Let’s learn as we go and build, build, build, until we get where we want to be.