I work for a company that builds software. At Redgate, we are constantly debating what to build and how, and more importantly, how to structure something that is easy for our customers to use. There's a lot that goes into the process of building software, way more than I thought was important a decade ago. Today, even when I don't like the decision or the final result in a product, I know our process often produces good results.
Recently Netflix started a new series on how they make decisions for their software. It's interesting in that they note that of all the ways they can make decisions, most of these involve few people. This leads towards their premise of using lots of A/B experimentation for helping to make decisions, and I look forward to future parts of the series that might explain the weight that they give to the results of A/B testing versus the opinions of developers and management.
How do you decide what decision makes the most sense for your business? I often see technology professionals being very passionate about how or why something should be implemented. I also think that sometimes we lend more weight to the passion of the arguer, rather than the merits of the particular thing being examined. It's easy to give in and go with the group, or not care, about many software decisions.
For me, I've learned to try and give feedback, justify this with some rationale, and then trust the process. No matter how "right" I think I am, we are a team, and if the decision is made to go a different way, I support that. I've also learned that building software involves a lot of tradeoffs, especially with regard to the prioritization of work. There's always more work to do than can be completed by our staff, no matter what the size of the team.
I find the process of building commercial software to be fascinating and I've learned a lot in the last few years about how to make the process successful. I've also learned what Netflix talks about. A small group has a very limited viewpoint and it's worth gathering more data whenever possible to ensure you make a decision that has a positive impact on your software.