People, process, and technology are the essential components of any organizational analysis. When it comes to software development, people are more important than either process or technology.
According to Frederick Brooks, author of The Mythical Man Month, “the quality of the people on a project, and their organization and management, are much more important factors in the success than are the tools they use or the technical approaches they take."
Project management and software development processes are rooted in industrial engineering. Charles Gantt (the Gantt Chart) was a protégé of Frederick Taylor, the father of scientific management. Waterfall development methodologies share principles with Henry Ford’s mass production line.
Until the 1980s, computing was expensive. Developing software was tedious, complex, and time consuming. In 1972, an IBM 360 mainframe computer rented for about $200,000 per month and required a climate-controlled environment the size of a small house. Yet, this giant machine only had 1/1,000th the processing power of an iPhone 5S.
Mainframe software was created by typing each line of code onto a 3¼” x 7¾” punch card. When the stack of cards was ready, the programmer would take them to the systems operator to run. Hours later, the paper output would be retrieved.
In this era, structured, sequential processes using specialized resources executing discrete tasks made sense:
- Business analysts created detailed requirements documents that described “what” was needed.
- Systems analysts translated the requirements into design specification that described “how” the application should work.
- Programmers used the design documents to write the software.
- System testers ensured the code follow the design.
- Finally, user acceptance testers ensured the program met their requirements.
Over the past 30 years, computing has undergone revolutionary changes. Processing power has grown exponentially and costs have plummeted. These changes created the ability to build and modify software in days or weeks, instead of months or years.
In today’s software development environment, industrial-based processes are counter-productive. Strict, linear processing and segregation of skills constrains creativity and productivity. Lean production and blind drawing games easily demonstrate the shortcomings of these old paradigms.
Treating people like industrial-inputs breaks the connective tissue needed for people to effectively work together. Capers Jones’ research indicates that over 60% of software errors are introduced in the analysis or design phase. Issues introduced at the beginning of the project are often caused by poor communication and misunderstanding. Substituting fact-to-face communication with written documentation is ineffective and inefficient because 93% of communication is non-verbal.
“We don’t need an accurate document, we need a shared understanding.” — Jeff Patton, author of User Story Mapping
According to the Scott Ambler & Associates’ Comparison of Software Development Paradigms, modern development methodologies (Lean, Iterative, and Agile) substantially outperform traditional methodologies. Capers Jones’ shows that Waterfall projects have nearly twice the number of code defects as Agile. In other words, development frameworks that put people ahead of process are more effective.
So how do we value people over process and tools?
- Treat people with respect. In too many organizations, people are viewed as production widgets. People are not widgets. They are individuals with strengths and weaknesses. When people are respected they are more committed, productive, and generate better long-term results.
- Trust the team’s ability to deliver. Focused, well-managed teams deliver successful projects. Empower the team. Give them end-to-end control over project delivery. Remove obstacles from their path.
- Build a cooperative team. Too often, the team is pitted against itself: business vs. technology, testers vs. developers, and the project manager vs. everyone else. Actively build teams with a shared identity and a goal. Provide incentives that place the team’s success over individual self-interest.
- Set achievable and time-boxed expectations: Similar to individual performance management best practices, set clear, achievable, and time-boxed expectations for the project team. With these expectations, the definition of success is clear. When outcomes are clear, the team is more likely to succeed.
- Create an environment that fosters direct collaboration and communication. Human beings communicate most effectively when they talk face-to-face. Co-located teams have a better-shared understanding and can resolve questions more quickly.
- Minimize external oversight and governance. Excessive external control does not improve project outcomes; it disempowers the team, dissipates accountability, adds cost, and is drag on productivity. Employ the minimum amount of external oversight needed to govern the project and portfolio.
- Select tools and processes that enable the team. Select tools and processes that promote collaboration and create an efficient development value-chain. There are many project management, development, testing, and continuous integration tools and processes. When selecting tools and processes carefully evaluate their effect on the team.
Putting people ahead of process and tools is methodology agnostic. Agile methodologies place people and interactions before process and tools. However, projects executing waterfall methodologies can also be people-centric. Putting people first is a management decision. It requires letting go of control. It requires trust. In the long run, people-centric cultures will be more successful.
© 2016, Alan Zucker
Ambler, S. (2014, May 26). Modern Software Development Strategies are More Effective. Retrieved November 1, 2015, from http://scottambler.com/modern-software-development-strategies-more-effective.html
Bartolo, A. (2011, August 8). [INFOGRAPHIC] Data Center Evolution: 1960 to 2000. Retrieved November 1, 2015, from http://blog.rackspace.com/datacenter-evolution-1960-to-2000/
Brooks, F. (n.d.). The mythical man-month: Essays on software engineering (Anniversary ed.).
Is Nonverbal Communication a Numbers Game? (2011, September 30). Retrieved October 30, 2015, from https://www.psychologytoday.com/blog/beyond-words/201109/is-nonverbal-communication-numbers-game
Lean Simulations.”: Lean Project Management. Web. 17 Nov. 2015. http://www.leansimulations.org/2014/04/lean-project-management-pen-and-paper.html
MIPS Equivalents. (n.d.). Retrieved October 30, 2015, from https://www.frc.ri.cmu.edu/~hpm/book97/ch3/processor.list.txt
My Current Top 10 Favorite Quotes -. (2012, October 9). Retrieved November 1, 2015, from http://www.leadingagile.com/2012/10/favorite-quotes/
System/360 Model 195. (n.d.). Retrieved October 30, 2015, from https://www-03.ibm.com/ibm/history/exhibits/mainframe/mainframe_PP2195.html
Warmly, R. (2015, March 17). An Epic List of Great Team Building Games. Retrieved November 1, 2015, from http://wheniwork.com/blog/team-building-games/
Image Courtesy of: http://www.click2learn.gr/Upload/images/TEAM/Team-736.jpg