Software development success is organization dependent. Which organizations are successful in developing and delivering software? Which projects will be successful? That is a crucial question in an industry with an annual turnover of over 400 billion USD and only a 50% success rate. [bibcite key=”citeulike:4540645″] Is it enough to be agile or is there something else needed?
I was thrilled to read “Agile Principles and Achievement of Success in Software Development: A Quantitative Study in Brazilian Organizations” by Paulo Henrique de Souza Bermejo et al. [bibcite key=”citeulike:13429418″] Why is it so exciting? Because the authors use a novel approach to quantitatively and statistically evaluate what software development organizations do and how that is linked to success.
Three kinds of software development organizations
Practitioners and researchers have spent enormous efforts on determining how to best run software development projects. What if it is not specific projects that succeed or fail? What if we can identify characteristics of organizations where projects tend to thrive instead of merely focusing on individual projects or practices.
As a consultant and agile coach I am often called in to organizations when they face a change or a challenge. Some organizations turn out to be doing all the right things but still being unable to succeed while other organizations face one or more minor hurdle that can easily be overcome with some outside help. Knowledge about the agile ways of working and best practices in software engineering are widespread in the organizations that I work with. Still, there seems to be problems that prevent many of them to be as successful as they should be able to be.
Paulo Henrique and his colleagues surveyed over four hundred software development organizations in Brazil. They found three kinds of software development organizations: [bibcite key=”citeulike:13429418″]
- Successful organizations doing agile. (Cluster 2, n=129)
- Unsuccessful organizations doing agile, but not enough. (Cluster 1, n=132)
- Unsuccessful organizations not doing agile. (Cluster 3, n=148)
Software Development Success Cluster Analysis
|Highly agile orgs|
|Medium agile orgs|
|Low agile orgs|
|Team capacity (F1)||5,5||5,0||4,2||4,9|
|Relationship with external partners (F3)||4,6||4,4||2,8||3,9|
|Communication with customers (F5)||5,1||4,7||3,4||4,3|
|Environmental configuration (F6)||5,3||4,9||4,0||4,7|
|Success in Software Development (F2)||4,8||2,7||3,2||3,5|
So, is it impossible to be successful without being agile? Perhaps. Or perhaps this is simply a limitation of the study. The authors hope they will be able to expand the study to cover a more diverse and international set of organizations.
The success factors
So what are the factors that goes towards software development success according to this study? The researchers originally studied 24 factors which were then grouped using correlation into these six success factors. I am not quite sure what the authors mean by “F6 – environmental configuration” but here are the other factors, though not in the same order as used in the article.
F2 – Success in software development
Defining success tends to be one of the first problems one you want to say something about software development success factors. The authors use on scope, on time, on budget with a satisfied customer as their definition of software development success criteria.
F1 – Team capacity
The team capacity success factor is a combination of a number of other factors including: “agile team communication, the collaboration capabilities of individuals, team communication capability, confidence among team members, the competence of persons, the participation of leaders and the recognition of leaders”
This is basically what you would call “being agile”. The organizations in the highly agile but low success cluster are included here. I have worked with a number of organizations that were doing top of the line software engineering and project management and that would score really high on this factor. They have top of the line processes which are of such high quality that they could be used as textbook material in university courses in software engineering. Still, these organizations are not as successful as they want to be. Every now and then, you will read in the newspaper about this or that failed project. Projects that run so much over time and over budget that they are terminated with no or little visible results. The problem very seldom lies here — with team capacity.
F4 – Culture
The authors have defined culture as the success factor that comprises: openness for negotiations, agility in design decisions, team autonomy and change readiness.
Organizational culture is a discussion that goes back to the heart of many things in software development success. There are cultures that are so repressive and stressful that team members break down and need sick leave or quit the company. This eventually goes back to trust versus control or mission command versus command and control.
F5 – Communication with the Customer
Customer communication is essential to success in agile software development. Some say that without there is no way you can call yourself agile. The authors have included usefulness of documentation, frequency of customer interaction and customer motivation and customer training in this factor.
Communication with the customer is key. Successful IT must be driven by business needs. Yet, I see many organizations that try to make the communication with the customer harder instead of easier every time they run into a problem. Have you ever been in a situation where the person with the need has to take it to a super user who will bring it up in a user forum where it will be documented and sent to “Business IT”. Business IT then analyze it and send it to IT Demand who send it to IT Supply who send it to a vendor where it is eventually given to a developer. Add to this all the different management layers in each of these groups and you will have a whispering game where a simple need that perhaps corresponds to a few lines of code takes weeks just in processing time in all the different layers. What is the chance that this will be successful? In the light of this, it is worrying that many organizations do not take this more seriously. For instance, why do so many companies skip the demos with the users? [bibcite key=”citeulike:10477962″]
F3 – Relationship with external partners
I left this one for last. It is the most interesting one. Interacting with external partners is hard. The authors definition of this factor includes the following concepts: “interaction with external partners, interaction with partners in software development, risk
reduction with external partners and customer training”. I wonder how successful companies will be if they apply traditional vendor management to their relationships with external partners?
It is surprisingly often that my customers ask for my help because they have problems with their relations to their (other) vendors. In software organizations a vendor relationship needs to be managed and nurtured. I think that a key to success in this area is to find the win-win and then run the relationship on that basis. There are many pitfalls here and many ways to fail as a customer. Why don’t you watch the video below where I discuss Lean and Agile Contracts with Jacopo Romei?
The most important factors for success
Looking at the table it is clear to me that the most important factors are those that have to do with culture and external communication. A successful software development organization must have open and honest communication with both customers and suppliers. And that communication must be backed by a culture of openness. I knew that being agile isn’t enough but it is exciting to see how important it is to be business driven and customer focused with the right culture and good supplier relations. What surprised you the most with these findings? (Please comment below.) The biggest surprise for me was how big a difference there was between successful organizations and less successful organizations in how well they treat their partners.
Software development success factors in the light of the trust equation
I have recently written about the trust equation and how it can be used to better understand agile practices and principles. Let’s see if they can be used to understand these success factors as well. A reminder of the trust equation. The trust equation states that:
Software development Success Factors versus Trust Worthiness Factors.
|Team capacity (F1)||+++||++|
|Relationship with external partners (F3)||+||+++|
|Communication with customers (F5)||++||+++|
I think it is clear from the table that the most important success factors are those that go towards trust and especially towards intimacy. This confirms what I learned when I listened to Joe Dager’s podcast on the trust equation. If you don’t agree with my very subjective ratings between the trust equation factors and the success factors, please let me know!
Being agile is not enough. The most successful organizations are those that emphasize an agile culture and have good relationships with customers and suppliers. This is one of the most interesting research papers I have read in a long while. I recommend that you read it. It is published as open access so all you have to do is follow the link.
Bermejo, P., Zambalde, A., Tonelli, A., Souza, S., Zuppo, L., & Rosa, P. (2014). Agile Principles and Achievement of Success in Software Development: A Quantitative Study in Brazilian Organizations Procedia Technology, 16, 718-727 DOI: 10.1016/j.protcy.2014.10.021
- Streetwise vendor: David Kinney from Oak Park, USA. Uploaded by Apoc2400. Via Wikimedia Commons. | CC BY 2.0
- Success or Failure: StockMonkeys.com via Chris Potter via Flickr | CC BY 2.0
Pingback: Guest appearance on Architecture Corner - Greger Wikstrand
Pingback: Introduce Agile - the quick fix to a slow team! - Greger Wikstrand
Pingback: The future of Enterprise Architecture - Greger Wikstrand
Pingback: When cloud services disappear - Greger Wikstrand