Regla del noranta-noranta

De la Viquipèdia, l'enciclopèdia lliure

En programació d'ordinadors i enginyeria de programari, la regla del noranta noranta és un aforisme humorístic que diu: «El primer 90% del codi ocupa el 90% del temps de desenvolupament. El 10% restant ocupa l'altre 90% del temps de desenvolupament».

La regla és atribuïda a Tom Cargill de Bell Labs i va ser popularitzada per la columna de Jon Bentley de setembre de 1985 Programming Pearls a Communications of the ACM.

Reflecteix tant la duresa del repartiment de temps per a la part fàcil i difícil d'un projecte de programació, i la causa de l'endarreriment a molts projectes (és a dir, l'error que es comet en l'anticipació de les parts difícils).

Que el temps total de desenvolupament sumi 180% és una al·lusió irònica a la notòria tendència dels projectes d'enginyeria a sobrepassar significativament els seus calendaris originals.

Una regla general relacionada avisa els enginyers que el temps requerit realment per a completar un projecte s'aproxima millor agafant l'estimació més estricta possible i duplicant-la, o multiplicant-la per Pi.

La regla del noranta-noranta és una instància del principi de Pareto.

Variacions[modifica]

Ja que els percentatges no sumen 100, l'aforisme de Cargill a vegades es confon amb una errada tipogràfica. La versió «corregida» de la regla se cita a vegades com:

« El primer 90% del codi ocupa el primer 10% del temps de desenvolupament. El 10% del codi restant ocupa l'altre 90% del temps de desenvolupament. »

Una altra variació és:

« El 90% del codi ocupa el 10% del temps assignat, i el 10% del codi restant pren l'altre 90% del temps. »

El somni dels programadors és identificar aquest 10% del codi i optimitzar-lo per a versions posteriors del programari.

Una variant menys comuna canvia tots els percentatges a 90%.

« El primer 90% del codi agafa el 90% del temps de desenvolupament. L'altre 90% del codi pren l'altre 90% del temps. »

És a dir, fer que el projecte funcioni ocupa més temps i més codi de l'esperat.

Enllaços externs[modifica]