Sometimes software performance tricks are found from a methodological and thorough search. Sometimes it requires divergent thinking and courage to try crazy ideas. Sometimes an idea is just the beginning that needs to be followed with a lot of hard work.
How to foster a time period where everyone can try different ideas to improve the performance of the software we're working on? Everyone on the team has at least several months of experience with the software and are very good at it.
Do you agree that divergent thinking will help find ways to improve software performance? Why? Why not?
What techniques will enable us to quickly try out an optimization idea? Is fast coding speed necessary for getting good results from the try-out?
Finally, how much "time" should be allocated to ensure good results without creating the possibility of slacking off?
Is experimentation necessary to prove that "a faster way to do something" exists? (Added 2011-06-07)
- What are your strategies to improve the level of your team in a clever way?
- When do code hacks become bad?
(For bounty purpose only-2011/06/07 the team size is 2-4 developers, no dedicated QA. All code, unit test and performance test done by developers. Because of the nature of the project, profiler result is useful in showing proportional execution time even if it does not reveal a single bottleneck.)