" No Silver Bullet" är en mycket diskuterad artikel från 1986 om mjukvaruteknik av Frederick Brooks . [1] Brooks hävdar att "ingen enskild teknik eller ledningsteknik har en universell metod som ökar med en storleksordning av produktivitet, tillförlitlighet och enkelhet" (den så kallade "silverkulan"). Han hävdar också att "vi inte kan förvänta oss att vinsten fördubblas vartannat år" inom mjukvaruutveckling som vi gör inom hårdvaruutveckling.
Brooks betonar skillnaden mellan oavsiktlig komplexitet och immanent komplexitet . _
En artikel där Brooks ger sina egna reflektioner finns i jubileumsutgåvan av The Mythical Man-Month [ 2] .
Det är mycket viktigt att se skillnaden mellan sido och immanenta svårigheter. Sidokomplexitet avser problem som kan elimineras med utvecklingen av mjukvaruteknik. Inneboende komplexitet är inneboende i mjukvarans natur, varför det alltid kommer att vara svårt att bygga mjukvarusystem:
Silverkulor är inte bara synliga för närvarande, men på grund av mjukvarans natur är det osannolikt att de kommer att hittas överhuvudtaget - det kommer inte att finnas några uppfinningar som kan påverka produktiviteten i skapandet, tillförlitligheten och enkelheten hos programvara i samma sätt som elektronik, transistorer och integrerade kretsar - på datorhårdvara.
Brooks hävdar att de viktigaste framstegen för att bli av med sidokomplexitet redan har gjorts. Bland sådana prestationer nämner han programmeringsspråk på hög nivå , parallell beräkning och integrerade utvecklingsmiljöer .
Samtidigt tror Brooks att den kumulativa effekten av många andra användbara förbättringar kan ha en märkbar ökning av programmerarens produktivitet:
Även om vi inte ser häpnadsväckande genombrott, och faktiskt anser att de är ur karaktär på grund av programmerings natur, finns det många uppmuntrande innovationer som äger rum. Disciplinerade och konsekventa ansträngningar att utveckla, sprida och använda dem kan verkligen leda till tillväxt i en storleksordning. Det finns ingen kunglig väg, men det finns ändå en väg.
Brooks listar de viktigaste uppgifterna som kan ha en betydande inverkan för att bekämpa utvecklingskomplexitet: