Experimentation. It certainly provides value, but must be watched closely. Wait, there’s a new WordPress plugin! I’ll come back to this… Constantly trying new ideas and never landing on a consistent approach becomes a cancer for a project. If left untreated, it creates project delays, technical debt, and reduces velocity.
Experimenting is critical to the success of a project. It ensures that we find the best technology, the best approach, and the best design for the product. Constantly searching for new technologies, new approaches, and new designs becomes Shiny Object Syndrome (SOS). There are ways to combat Shiny Object Syndrome without squashing experimentation.
Experiment in the right context
Is this a one-off solution or something that affects the larger scope the project? Always ask yourself this question prior to experimenting. One-off solutions should be implemented as just that, a one-off solution. Don’t spend excessive time experimenting as the R&D costs will never pay off. In these cases, find a solution and run with it. At the same time when experimenting with a solution, make sure you are not building a Rube Goldberg machine to feed the dog.
Always time-box experimentation
When you have a problem that impacts the larger scope of the project, put a time-box around the time you spend searching for a solution. Spending 2 weeks may be acceptable within the context of a project, but spending 2 months is likely excessive. Pick a time-frame that makes sense within the larger scope of the project. In agile terms this is often called a spike and allows time for a team to wrap their arms around a problem.
Experiment early on
Once a team has attained a high velocity and has a stable approach to the problem being solved, the benefit of experimentation may decrease.
I know we’re releasing next month, but I think we could benefit from changing our architectural approach to CQRS.
There are maintenance benefits to code consistency and a consistency of approach. It often makes sense to continue the same approach for the current project, but experiment on the next project.
Innovate with appropriate technologies
Innovation is critical to help companies achieve better return on investment from their software investments, but make sure your innovation isn’t misusing a technology.
I know! I’ll use the microwave to melt this aluminum.
Each technology has a sweet spot, an intended use. This is where the technology shines and increases your ability to succeed. Used the wrong way, a technology can hinder a project, or worse, create issues that are only found once the project is released.
Experimentation can make your project a shining success, but make sure you follow these tips and avoid shiny object syndrome.