Sono convinto che lo sviluppo del software sia essenzialmente un processo creativo. Credo anche che questo sia il caso per tutti i livelli, dall'architettura alla codifica.
Cosa mi fa pensare così? Per dirla in breve, perché uno sviluppatore di software dovrebbe creare qualcosa di nuovo, non solo copiare cose esistenti. È molto più che afferrare la tua cassetta degli attrezzi e ottenere lo strumento giusto per un lavoro, anche se sicuramente aiuta ad avere una buona cassetta degli attrezzi.
D'altro canto, quando consideriamo lo sviluppo del software dal lato della gestione del progetto, è auspicabile dividere un progetto di sviluppo in piccole attività e assegnare a ciascuna attività un determinato momento in cui è previsto che venga completato. (So che c'è il concetto di punti storia, ma non credo che faccia una grande differenza nella pratica: alla fine della giornata, ci si aspetta che uno sviluppatore arrivi dopo un certo periodo di tempo.)
Da una prospettiva di gestione del progetto è chiaro che queste attività dovrebbero essere piccole. A seconda di chi chiedi, un compito ideale dovrebbe essere qualcosa tra 30 minuti e un giorno.
Ora ecco il mio problema: trovo difficile essere creativi di fronte a un limite di tempo per un lavoro, anche se si tratta di un limite flessibile basato su stime o punti della storia. Più breve è il limite di tempo, peggio diventa. Spesso sento di essere molto più produttivo (perché ho la libertà di essere creativo) quando faccio solo ciò che penso debba essere fatto senza pensare troppo ai tempi pianificati per ogni attività. Alcune attività potrebbero richiedere molto più tempo del previsto ma la qualità sarà più elevata e, nel complesso, il progetto sarà probabilmente terminato in precedenza.
Questa è solo la mia percezione personale o è un problema generale. Se quest'ultimo, cosa si può fare al riguardo?
Modifica
Dopo aver letto i primi commenti e risposte, ho ricordato (ancora una volta) che il termine creatività non ha la migliore reputazione in ingegneria. Essendo creativo non intendo fare cose non necessarie che non forniscono alcun valore aziendale. Quello che intendo è risolvere i problemi in modi nuovi o non standard.