Yazılım geliştiricilerin yazılım geliştirme esnasında çok karşılaştıkları, birbirine benzer sorunları çözmek için deneme yanılma yoluyla elde ettikleri genel çözüm önerileridir. Bir algoritma ya da kod olmadığı gibi dilden de bağımsızdır.