Software process improvement (SPI) has emerged as a critical area for organizations involved in software development. There is now considerable evidence that SPI can provide substantial gains in quality, productivity, and cycle time. Currently, most organizations that embark upon a SPI program tend to use a framework like the Capability Maturity Model for their process improvement. In this article we discuss some of the lessons learned in using these frameworks for software process improvement. First, three critical success factors are discussed. The rest of the lessons have been grouped into three categories – framework related, process related, and SPI management related. For each category we discuss a few key lessons. These lessons are based on the experience of the author in implementing a CMM-based SPI program in a large software organization in India, and helping many organizations in India and other countries (primarily the US and Mexico) with their SPI programs.