Hoe kijk jij tegen softwareontwikkeling aan?

Wat is software, hoe creëer je nieuwe programma’s? Wat is programmeren? Hoe iemand tegen softwareontwikkeling kijkt, bepaalt veel hoe iemand tegen problemen en uitdagingen in de IT kijkt. Voor sommige is falen van it-projecten en kwestie van beter plannen, voor ander zijn projecten inherent de oorzaak aan falen. Sommige vragen zich af hoe je agile kan schalen, andere vragen zich af hoe je schaalbare software maakt.

Agile, lean, scrum zijn populair binnen softwareontwikkeling. Achter al deze methodieken en ideeën  zit een bepaalde visie: softwareontwikkeling is een complex proces. Veel mensen denken nog dat softwareontwikkeling een lineair proces is en dit denken maakt invoering welke lean of agile methodiek tot falen gedoemd is.
Hier onder heb ik wat stellingen gezet. Met welke ben je het meeste eens?

 

Lineair

Complex

Software maken is een lineair proces: ontwerp, bouwen, testen, uitrollen en onderhouden

Software maken is complex proces. Iedere aanpassing kan gevolg hebben voor de hele organisatie

Software maken is vergelijkbaar met bouwen

Software maken is vergelijkbaar met ontwerpen

Bugs zijn nu eenmaal onvermijdelijk, alleen door achteraf veel te testen kan kwaliteit afgedwongen worden

Bugs kunnen voorkomen worden, door de kans er op kleiner te maken

Programmeertaal is maar een middel, kies wat gangbaar en bekend is

De keuze van de programmeertaal heeft grote invloed op het resultaat

Via RAD- of 4GL-tools software maken zou meer gedaan worden

Via analyse-tools software automatisch op fouten controleren zou meer gedaan moeten worden

Ontwerp en programmeren zijn twee gescheiden taken, die door verschillende mensen gedaan kan worden

Ontwerp en programmeren zijn een geheel en kunnen niet los gezien worden

Software is na enige jaren afgeschreven

Voordat we nieuwe software gaan ontwikkelen, moeten we ons afvragen: Hebben we de software wel nodig? Is ons probleem al niet eerder opgelost?

Leesbare code maakt duidelijk wat er gebeurt als de software wordt uitgevoerd

Leesbare code maakt duidelijk wat het probleem is en de resulterende software correct is

Het maken van een beschrijving van alle entiteiten, objecten, rollen in een organisatie is essentieel

Het continu kunnen meten van software en veranderingen in software is essentieel

De essentie van scrum is korte iteraties

De essentie van scrum is samenwerking met de rest van de organisatie

Kunnen voorspellen hoe lang het kost om nieuwe software te maken is belangrijk

Kunnen valideren of nieuwe software het gewenste effect heeft is belangrijk

Programmeren is simpel: if then else

Programmeren is moeilijk

Software zou als lego moeten zijn

Software zou als poëzie moeten zijn

Software kan af zijn

Een functie, feature of user story kan af zijn

Legacy software die ononderhoudbaar is geworden moet je herschrijven of inkapselen (incapsulate) in services.

Legacy software moet je beheersbaar maken door te analyseren, refactoren, testbaar te maken en op te splitsen

Als softwareontwikkeling niet snel genoeg gaat, moet je meer mensen aannemen Als softwareontwikkeling niet voldoende oplevert, moet je onderzoeken of je wel het meest belangrijke doet
Het maken van nieuwe software kun je het beste als project aanpakken Het maken van nieuwe software kun je het beste in kleine stapjes doen
Uitbrengen van nieuwe versies van software is een risico Uitbrengen van nieuwe software moet zo snel als mogelijk gebeuren
Programmeren is een skill Programmeren is een craft
Software gebruik je in om gegevens vast te leggen en opvraagbaar te maken en processen binnen de organisatie sneller, beter en efficiënter te laten verlopen Software maakt dingen mogelijk die voorheen onmogelijk of ondoenlijk waren
Voor veiligheid (security) zijn goede procedures en correct gedefinieerde rollen en toegangsrechten (ACL) belangrijk Voor veiligheid zijn encryptie en software die de gebruiker helpt haar informatie veilig te gebruiken belangrijk

Agile softwareontwikkeling, invoeren van lean, scrum, en vele gerelateerde ideeën slagen pas als je  ten volle van bewust bent dat softwareontwikkeling ook een complex proces is