Ketterän ohjelmistokehityksen menestystekijät
Stenudd, Jaakko (2020-10-02)
Stenudd, Jaakko
02.10.2020
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi-fe2020100277885
https://urn.fi/URN:NBN:fi-fe2020100277885
Tiivistelmä
Tässä pro gradu -tutkielmassa tarkasteltiin ketterää ohjelmistokehitystä ja ketterän ohjelmistokehityksen kriittisiä menestystekijöitä. Ketterää ohjelmistokehitystä on tutkittu paljon ja ketteriä menetelmiä käytetään ohjelmistokehityksen lisäksi lukuisilla eri toimialoilla. Ketterän ohjelmistokehityksen lisäksi tutkielmassa keskitytään ketterän ohjelmistokehityksen kriittisiin menestystekijöihin, joilla tarkoitetaan projektitiimin ominaisuuksia, toimintatapoja ja edellytyksiä, jotka antavat parhaan mahdollisuuden onnistumiseen. Toisin sanoen, tutkielma pyrkii kertomaan, mitä vaaditaan ketterässä ohjelmistoprojektissa onnistumiseen.
Ketteriä ohjelmistokehitysmenetelmiä voidaan soveltaa hyvin erilaisin tavoin, mutta tyypillisesti ketterä ohjelmistokehitys tapahtuu sprinteissä, joiden aikana asiakastarpeiden määrittely tarkentuu tiiviin kommunikoinnin ja asiakasyhteistyön myötä. Koska ketteriä menetelmiä käytetään erilaisissa projekteissa ja erilaisin tavoittein, myös kriittisten menestystekijöiden painotukset ja tärkeysjärjestykset ovat projektikohtaisia. Siitä huolimatta huolellisen laadullisen tutkimuksen avulla oli mahdollista selvittää sellaisia menestystekijöitä, jotka ovat onnistumisen kannalta kriittisiä kaikille ketterille ohjelmistokehitysprojekteille. Tutkielman tutkimuskysymyksenä on siis: ”Mitkä ovat ketterän ohjelmistokehitysprojektin onnistumisen kriittiset menestystekijät?” Tutkielman tavoitteena on löytää ketterän ohjelmistokehityksen kriittiset menestystekijät ja luoda käytännön avuksi malli, jonka mukaan ketterän ohjelmistoprojektin edellytykset tulisi suunnitella, jotta projektilla olisi parhaat mahdollisuudet onnistua. Tutkielman tavoite pyrittiin saavuttamaan tarkastelemalla kattavasti ensin aiheeseen liittyviä tutkimuksia, jonka jälkeen haastateltiin alalla työskenteleviä asiantuntijoita teemahaastatteluiden muodossa. Teemahaastatteluiden tuloksia analysoitiin teemoittelun avulla.
Tuloksista löydettiin kuusi kriittistä menestystekijää ketterälle ohjelmistoprojektille, jotka ovat tiimin kyvykkyys, johdon tuki, asiakasyhteistyö, kommunikaatio, julkaisustrategia sekä organisaatiokulttuuri. Tutkielman tavoite saavutettiin löytämällä kriittiset menestystekijät ja luomalla edellä mainittu malli, johon organisaatiot voivat peilata toimintaansa ja tämän pohjalta kehittää omaa ketteryyttä sekä mahdollisuutta saavuttaa onnistuneita ohjelmistoprojekteja. Mallin keskeisimmän sanoman mukaan projektitiimin tulee varmistaa ensi kädessä asiakasyhteistyön sujuvuus varmistamalla toimiva kommunikaatio ja keskittyä vain asiakkaalle eniten arvoa tuottaviin toimiin. Tämä vaatii perusteellista vaatimusten määrittelyä projektin alkuvaiheessa sekä tuoteversioiden toimittamista asiakkaalle lyhyin ja säännöllisin syklein, jotta projekti etenee nopeasti olennaiseen keskittyen ja asiakas voi antaa palautetta kehitystyöstä tai vaatimusten muuttumisista. Projektitiimiltä vaaditaan syvää osaamista, jotta projektitiimillä olisi mahdollisuudet vastata nopeasti vaativiin tehtäviin ja vaatimuksiin sekä laajaa osaamista, jotta vältytään pullonkauloilta. Tärkeää on myös projektitiimin kyky edetä kehitystyössä kokeilemisen ja oppimisen kautta, jotta asiakkaalle eniten arvoa tuottavat asiat löydetään. Projektitiimin sekä koko organisaation tulisi vaalia yrityskulttuuria, joka kannustaa työn tekemiseen kokeilunhalun ja oppimishalukkuuden kautta, itseohjautuvaan työskentelyyn sekä matalahierarkkiseen päätöksentekoon. This master’s thesis researched agile software development and the critical success factors of agile software development. Agile software development has been researched extensively and agile methods are used in many different industries in addition to software development. Together with agile software development, this thesis focuses on the critical success factors of agile software development, which refer to the features, practices, and qualifications of a project team that provide the best chance of success. In other words, this thesis seeks to explain what is required to succeed in an agile software project.
Agile software development methods can be applied in very different ways, but typically agile software development takes place in sprints, during which the definition of customer needs is refined through quality communication and customer collaboration. Because agile methods are used in many different kind projects and for different purposes, the order of importance of critical success factors is also project-specific. Nevertheless, with the help of high-quality and careful qualitative research, it was possible to identify success factors that are critical to success for any agile software development project. The research question of the thesis is: "What are the critical success factors of agile software development project?" The objective of the thesis is to find the critical success factors of agile software development and to create a model for practical help, according to which the features, practices, and qualifications of an agile software project should be designed, that the project has the best chance of success. The objective of this thesis was to achieve by first conducting a comprehensive review of related studies, followed by interviewing experts working in the field in the form of thematic interviews.
The results found six critical success factors for agile software project, which are team capability, management support, customer collaboration, communication, delivery strategy, and organizational culture. The objective of the thesis was achieved by finding the critical success factors and creating the above-mentioned model in which organizations can mirror their activities, and on this basis develop their own agility as well as the possibility to achieve successful software projects. According to the key message of the model, the project team must first and foremost ensure the quality of customer cooperation by ensuring effective communication and focus only on the activities that create the most value for the customer. This requires a thorough definition of requirements at the beginning of the project and the delivery of product versions to the customer in short and regular cycles so that the project progresses quickly with a focus on the essentials and the customer can provide feedback on development work or requirements changes. Deep expertise is required from the project team to enable the project team to respond quickly to demanding tasks and requirements, as well as extensive expertise to avoid bottlenecks. Also important is the project team's ability to move forward in development work through experimentation and learning to find the things that create the most value for the customer. The project team and the entire organization should foster a corporate culture that encourages work through experimentation and a willingness to learn, self-directed work and low-hierarchy decision-making.
Ketteriä ohjelmistokehitysmenetelmiä voidaan soveltaa hyvin erilaisin tavoin, mutta tyypillisesti ketterä ohjelmistokehitys tapahtuu sprinteissä, joiden aikana asiakastarpeiden määrittely tarkentuu tiiviin kommunikoinnin ja asiakasyhteistyön myötä. Koska ketteriä menetelmiä käytetään erilaisissa projekteissa ja erilaisin tavoittein, myös kriittisten menestystekijöiden painotukset ja tärkeysjärjestykset ovat projektikohtaisia. Siitä huolimatta huolellisen laadullisen tutkimuksen avulla oli mahdollista selvittää sellaisia menestystekijöitä, jotka ovat onnistumisen kannalta kriittisiä kaikille ketterille ohjelmistokehitysprojekteille. Tutkielman tutkimuskysymyksenä on siis: ”Mitkä ovat ketterän ohjelmistokehitysprojektin onnistumisen kriittiset menestystekijät?” Tutkielman tavoitteena on löytää ketterän ohjelmistokehityksen kriittiset menestystekijät ja luoda käytännön avuksi malli, jonka mukaan ketterän ohjelmistoprojektin edellytykset tulisi suunnitella, jotta projektilla olisi parhaat mahdollisuudet onnistua. Tutkielman tavoite pyrittiin saavuttamaan tarkastelemalla kattavasti ensin aiheeseen liittyviä tutkimuksia, jonka jälkeen haastateltiin alalla työskenteleviä asiantuntijoita teemahaastatteluiden muodossa. Teemahaastatteluiden tuloksia analysoitiin teemoittelun avulla.
Tuloksista löydettiin kuusi kriittistä menestystekijää ketterälle ohjelmistoprojektille, jotka ovat tiimin kyvykkyys, johdon tuki, asiakasyhteistyö, kommunikaatio, julkaisustrategia sekä organisaatiokulttuuri. Tutkielman tavoite saavutettiin löytämällä kriittiset menestystekijät ja luomalla edellä mainittu malli, johon organisaatiot voivat peilata toimintaansa ja tämän pohjalta kehittää omaa ketteryyttä sekä mahdollisuutta saavuttaa onnistuneita ohjelmistoprojekteja. Mallin keskeisimmän sanoman mukaan projektitiimin tulee varmistaa ensi kädessä asiakasyhteistyön sujuvuus varmistamalla toimiva kommunikaatio ja keskittyä vain asiakkaalle eniten arvoa tuottaviin toimiin. Tämä vaatii perusteellista vaatimusten määrittelyä projektin alkuvaiheessa sekä tuoteversioiden toimittamista asiakkaalle lyhyin ja säännöllisin syklein, jotta projekti etenee nopeasti olennaiseen keskittyen ja asiakas voi antaa palautetta kehitystyöstä tai vaatimusten muuttumisista. Projektitiimiltä vaaditaan syvää osaamista, jotta projektitiimillä olisi mahdollisuudet vastata nopeasti vaativiin tehtäviin ja vaatimuksiin sekä laajaa osaamista, jotta vältytään pullonkauloilta. Tärkeää on myös projektitiimin kyky edetä kehitystyössä kokeilemisen ja oppimisen kautta, jotta asiakkaalle eniten arvoa tuottavat asiat löydetään. Projektitiimin sekä koko organisaation tulisi vaalia yrityskulttuuria, joka kannustaa työn tekemiseen kokeilunhalun ja oppimishalukkuuden kautta, itseohjautuvaan työskentelyyn sekä matalahierarkkiseen päätöksentekoon.
Agile software development methods can be applied in very different ways, but typically agile software development takes place in sprints, during which the definition of customer needs is refined through quality communication and customer collaboration. Because agile methods are used in many different kind projects and for different purposes, the order of importance of critical success factors is also project-specific. Nevertheless, with the help of high-quality and careful qualitative research, it was possible to identify success factors that are critical to success for any agile software development project. The research question of the thesis is: "What are the critical success factors of agile software development project?" The objective of the thesis is to find the critical success factors of agile software development and to create a model for practical help, according to which the features, practices, and qualifications of an agile software project should be designed, that the project has the best chance of success. The objective of this thesis was to achieve by first conducting a comprehensive review of related studies, followed by interviewing experts working in the field in the form of thematic interviews.
The results found six critical success factors for agile software project, which are team capability, management support, customer collaboration, communication, delivery strategy, and organizational culture. The objective of the thesis was achieved by finding the critical success factors and creating the above-mentioned model in which organizations can mirror their activities, and on this basis develop their own agility as well as the possibility to achieve successful software projects. According to the key message of the model, the project team must first and foremost ensure the quality of customer cooperation by ensuring effective communication and focus only on the activities that create the most value for the customer. This requires a thorough definition of requirements at the beginning of the project and the delivery of product versions to the customer in short and regular cycles so that the project progresses quickly with a focus on the essentials and the customer can provide feedback on development work or requirements changes. Deep expertise is required from the project team to enable the project team to respond quickly to demanding tasks and requirements, as well as extensive expertise to avoid bottlenecks. Also important is the project team's ability to move forward in development work through experimentation and learning to find the things that create the most value for the customer. The project team and the entire organization should foster a corporate culture that encourages work through experimentation and a willingness to learn, self-directed work and low-hierarchy decision-making.