On a daily basis, developers are called upon to make decisions about the exact details of how to implement a feature request. For a small feature that takes 1-2 days, there may be a dozen tiny decisions and a few big ones. As developers, we try to anticipate these decisions when discussing the feature request with the client. Even so, we always end up uncovering new decisions that need to be made during implementation. It would be crippling to a team and the product owner if a meeting were required each time this happens. How do you make these decisions yourself? How do you figure out which decisions you can’t make yourself? One strategy I use is to ask myself, “What if it was my money being spent here?”
Asking this question has a positive effect on how I approach decision-making. Here is a list of effects I have noticed when I view a feature as if I was footing the bill.
When I think it’s my money, I take ownership of the feature. I’m invested in the outcome and will go a bit further to do a good job while being careful with my time.
Easier to Make Decisions
I feel more comfortable applying my personal viewpoint when working on the feature. When I can think personally about how I would like it developed, it becomes easier to make decisions, especially the tiny ones. There is cognitive load whenever I’m confronted with a decision to make. Being able to personalize the decision reduces that load.
Leaning towards Simplicity
I’m more naturally inclined to ponder the fastest way I can build the feature out. When I take this approach it leads to less complicated solutions and avoids over engineering. YAGNI (You aren’t gonna need it) comes to mind, especially if you’re thinking about your own money being spent. You can always come back later on, if it turns out you really need it. Most of the time though, it has turned out that we didn’t, so I was ultimately happy to have pushed off some unnecessary aspect of the implementation.
Rethinking the Approach
Being more conservative about your engineering time encourages new lines of thought when making decisions. Is there a smarter way to solve this problem? Perhaps an alternative approach that wasn’t considered? If the decision has complications, I’ll be more likely to step back and reconsider the current approach rather than just pushing on. These are all good things to explore, and they come more easily when I’m thinking about it being my money spent.
Value vs. Effort
Both of the previous points really boil down to comparing business value versus engineering effort. Is the feature worth doing this way? Thinking about it being my money leads to consistent reevaluation as to whether spending so much time on the feature is worth the benefit. Maybe you’ll end up concluding that it’s actually a bad idea and needs to be discussed further. Balancing value against effort is an important skill to develop, and one you’ll be more motivated to do so if you think it’s your money is on the line. Having these sort of skeptical thoughts is healthy for the feature. It’s preferrable to bring this up when the feature is first being proposed but better late than never.
Keep in Mind
There are a few things to consider when using this technique. You should understand both the users and your client’s business. Always keep their motivations, values and goals in mind when thinking about features. If you can’t roleplay with these things in mind, you should lean on your team or client more. Know when a decision is too big for you to decide on your own. When in doubt, checking with the team and then the client is your best course of action. It’s going to take practice. It hasn’t always been easy for me, but I have worked at it over the years, and like any technique, the more you practice it, the better you’ll get.
When you think about every engineering dollar spent as if it were your own, you’ll make better budget-wise decisions on the small scale. Eliminating waste, making your time more efficient, and shipping a better feature should always be your goal. Our personal investment into our solutions leads to higher user and client satisfaction. The next time you need to make a small decision, give this a shot and see if you notice an improvement in how you or your team build features.