Più di quanti siano gli sviluppatori di software. Ognuno di noi è diverso e spesso giochiamo ruoli diversi in momenti diversi.
Si può tagliare la torta in molti modi diversi in base a diversi criteri: Piattaforma, scopo, lingua, ruolo. Ecco alcuni dei ruoli che svolgo: Negli ultimi due giorni ho: progettato parte di un'applicazione, scritto del codice, partecipato ad una revisione del codice, testato qualcosa che ho scritto, identificato un problema in qualcosa che qualcun altro ha scritto, progettato un database, progettato l'aspetto e la sensazione dell'interfaccia utente, esplorato i requisiti con gli utenti, messo a punto le prestazioni di un'applicazione, cercato la causa di un fallimento del programma, scritto parte di un manuale utente, fatto da mentore a qualcun altro. In una grande organizzazione, molti di questi lavori possono essere fatti da specialisti. A volte una persona deve farli tutti.
Per quanto riguarda lo scopo: scrivere software per controllare una linea di produzione è diverso dallo scrivere software per prevedere il tempo, o scrivere software per controllare un giocattolo, o scrivere un sistema di Enterprise Resource Planning, o scrivere un sistema di telecomunicazioni, o scrivere un sistema operativo, o scrivere un sistema di contabilità per una società multinazionale.
Metti tutto questo insieme e calcola le possibili combinazioni ed è un gran numero.