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