Experiments are for learners. And programmers, software architects, software craftsmen or whatever you call the guys and girls producing superb code should definitely be learners. I personally agree with what you said on https://medium.com/@ian/the-real-value-of-side-projects-4d30c1ea4283#.eynkkgk7w, that a fair share of this should be done in your own time, but I find it invaluable to allow experiments on business hours, too — but absolutely not in a way that failed experiments find their way into your code base! Experiment in small, implement successful experiments into your product. That’s IMHO better than designing something in your head and on paper only without having tried it out.