This document discusses lessons learned from developing the Apache Commons Math library in Java. It provides examples of common math and statistical problems solved in Commons Math, along with challenges faced in implementation. Key lessons include balancing ease of use with good design, handling edge cases appropriately, and making threading and distributed computation friendlier. The goal is to continuously improve the library through community involvement.