Around a month ago, I had an idea. I was going to uproot my team's way of work entirely. Grand plans for improving test environment creation, build pipelines, automated tests and software deployments were the objects of my DevOps dreams for months. Literally. I would come up with ideas for substantially improving the way we work in my sleep, see if it was possible to get them started to find out I would be trumped by fires. Talk about frustrating!
I could see a substantially better way of doing things in my head while being forced by the whim of the culture and management to fix bugs, add common features and keep the developers at bay. The continuous delivery gods were shining the CD light; I could see it but was being held in the mud.
Until this month.
I've beaten the "beg for forgiveness than ask for permission" drum for a long time but haven't gotten to share a personal tale of putting my proverbial money where my mouth is. This is my short story.
For some background, I'm part of a small team that's in charge of creating test environments for anyone in the software development chain that needs to test and deploy our custom software to production. We are the guys you go through to get your software build on infrastructure.
We have been using a custom tool called Environment Orchestration built by my counterpart that consisted of tens of thousands of lines of PowerShell spread out across dozens of PowerShell modules. It was and still is a fantastic achievement that with just PowerShell, we can run a single command which can completely automate infrastructure provisioning and allocation deployment, but it was getting hard to manage.
We needed a way to minimize our codebase, standardize deployments, build automated release pipelines, automate tests and a whole lot of other tasks freeing us from the mundane work we were forced to do.
The Unapproved Project
Introducing vNext and 300+ hours of work over the last month.
The vision was clear:
- Standardize our applications, databases and general infrastructure deployments
- Require builds for all deployments
- Idempotent Infrastructure as Code
- Get out of the way of developers and move more towards a self-service model
- Build a foundation that would support continuous delivery
This vNext project is a massive undertaking on its own and to make things even harder this plan was never yet approved! Why? Daily priorities, fires...you know the drill. To make it happen was going to require an unapproved skunkworks project, a significant time commitment and risk not meeting other ongoing project deadlines. Unapproved projects and missed deadlines is always a major red flag to management, so I've obviously also got the risk of getting into some serious shit with the boss man as well!
Just Do it!
However, if you have the vision, the balls to go against the grain and the confidence you can pull it off, there's never a reason to not do it. Try to manage deadlines as best as possible during your journey but expect them to be pushed back. Keep going in spite of the relentless pressure to close the next ticket or fix the next legacy bug. Don't let anything get in your way of what you truly believe in. If you're confident in your approach, just do it!
My family has suffered, management doesn't entirely see it yet, and I've been putting in crazy hours, but it's worth it: all of it. If you genuinely care about a project and feel a sense of ownership in it, it will be to you too.
We already see some significant benefits to our new approach, but we have so far to go. Let's just hope this time next month you don't see me looking for another job!
Join the Jar Tippers on Patreon
It takes a lot of time to write detailed blog posts like this one. In a single-income family, this blog is one way I depend on to keep the lights on. I'd be eternally grateful if you could become a Patreon patron today!Become a Patron!