And that's hard.
There is an entire financial discipline in forecasting and budgeting, and I'm not going to get into all of it here. For many of us, budgeting isn't our day job, but it's something that most engineering managers wind up doing at some point. It almost always comes to us phrased as, "So how much money do you need for the next 6 months?"
First response: "I dunno. What do you want us to build in the next 6 months?"
Analysis: Completely true, and totally unhelpful.
More helpful (and still true!) response: "Sure, let's talk about assumptions, priorities, and constraints."
- Figure out one thing that you will use as the basis of growth. This could be number of users, number of logins, number of credit card transactions, whatever. Base everything off that one number (how many devs you'll need, how much your hosting costs will be, etc.), and your budget will stay coherent.
- Separate assumptions. Put them in a separate tab in the spreadsheet, and calculate everything you can from those assumptions. That way when you discover a bad assumption, it's easy to fix.
- Put in all the detail you can think of. No matter how small and silly, put in all the details. Specify your defect tracking system and source control, not a line item for "dev tools". Yes, it will be a very long list.
- Create a summary. Take the subtotals from your detail and use them to populate a summary version of the budget. This is what you'll show people, and then use the details when they start asking questions.
- Add 10% for unexpected things. Something's going to happen that none of us thought of. Give yourself a buffer for that.
I'm an engineer. I spend a large chunk of my day on code, not on budgets. But the budget is important, and I owe it to myself and to my team to do it properly. A budget is a negotiation, and just like any negotiation, the more prepared you are, and the more prepared you look, the better you'll come out of it.
Here's hoping these tips can help other engineering managers get through budgets with as little angst as possible.