The “software factory” with repeatable processes is the status quo today in developing software. Is this scenario ideal for achieving business goals? Is it something companies should settle for? If the goal is merely to survive, then the software factory paradigm is adequate. But if the goal is to build successful applications that contribute to business growth, then something more is needed.
Once upon a time, writing software was an individual’s task, destined only for those who proved worthy and possessed the wisdom and power to overcome insurmountable obstacles in their path to glory. In this time, the fingerprints of the craftsman were easily identifiable in the finished product. But that time is gone. The art evolved into an industry, and tools were created to make the life of the craftsman easier and more productive. The problems that software could solve became greater, while the computers got smaller. And when these problems became too big for an individual, software development became a team sport.
This has been a good thing. Project management has flourished, collaboration tools have proliferated and processes have been created that ensured adherence to standards, to the point where remote teams can now work together on distributed projects and deliver them quickly and effectively.
But in this process of standardization, which followed in the footsteps of mass production in manufacturing, something was lost. With an ever-increasing demand for new applications, as well as for maintaining the existing ones, scalability (in the sense of being able to produce enough software) became more important than creating the right software. In an effort to become less dependent on artisan-developers, following repeatable processes became more important than getting the best outcomes. And in desperation to reduce costs, paying the lowest amount for a unit of work became the only unquestionable metric. The “software factory” became the status quo.
Companies need to perform at the highest possible level, and mass-production simply won’t do. What’s needed are high-performance development teams.
So just what is a high-performance team?
A high-performance team is one that bucks the “software factory” trend and ensures consistent delivery of business value in the projects it delivers. To do this, each high-performance team embodies five distinct components that contribute to the delivery of value. These are: talent, skills mastery, autonomy, a Lean frame of mind and vision/shared purpose.
Let’s consider these components individually, and how together they contribute to a more effective outcome in software projects.
Seems obvious, doesn’t it? When building a team of software developers, everyone wants to draw from a deep talent pool and look for developers with the best skill sets. But the mass-production concept has led many companies to overlook this crucial factor. After all, with a market that always grows faster than the overall economy – not to mention the high turnover rate – why should companies care about talent? Ostensibly, it is much more expensive to attract and keep the best talent then to live with the rotation of low-cost, adequate professionals.
But companies that want to build business-critical applications can create high-performance teams only by recruiting the best and brightest developers around, and then focusing on retaining that talent with a culture and path for professional development that inspires them to stay. This means looking to the best technical and engineering universities for potential recruits, bringing them into the fold early and creating an environment that breeds passion, enthusiasm and growth.
Talent is a great place to start, but it’s just the beginning. The next step in constructing a high-performance team is skills mastery. The tendency for too many companies is to create a factory-like atmosphere, which emphasizes developing software repeatedly, following prescriptive processes and specs. This instills the idea that an individual could be replaced at any time by someone else, leaving little room for passion in the work.
Malcolm Gladwell, in his 2008 book Outliers, repeatedly discusses the “10,000 hour rule,” which essentially states that to truly master a skill, you must practice a single task for 10,000 hours. But there is a catch that may go unnoticed: you have to be passionate enough about that task to want to practice it for 10,000 hours. Most of the “outliers” mentioned by Gladwell reached 10,000 hours even before starting their professional careers. More than anything, it’s about starting early and learning fast; and nobody does that without passion.
Companies can facilitate mastery by promoting a culture of continuous learning and passion in developers’ daily tasks, and introducing concepts like Agile methodologies and PDCA (Plan-Do-Check-Adapt) cycles that constantly push their ability to adopt new techniques and perfect old ones. In doing so, they can ensure that developers are constantly mastering the techniques that will turn them into seasoned, multi-skilled practitioners and make them essential contributors to high-performance teams.
Communication also plays a crucial role in skills mastery. Emphasizing direct, daily communication between team members and short cycles of feedback reinforces the skills that have been learned and helps identify where improvements can be made. Highly skilled teams will be highly productive teams, contributing to the overall goal of high-quality software and consistent value delivery.
Giving professionals the room to work autonomously can bolster the team’s commitment to each other and to a project’s success. It instills a sense of reliance and trust in each team member, helping each person to identify their own unique strengths and understand their roles within the team. This will ultimately give each person a sense of responsibility and ownership over the project’s outcome.
The best high-performance teams usually include developers that have worked together for years and understand each others’ strengths and work styles inside and out. But this kind of camaraderie takes time to develop. It can be achieved only by instilling teams with the independence and freedom to develop their own dynamics and a high level of trust between members.
That doesn’t mean, however, that high-performance teams should be completely free from oversight. They need to be held accountable to the metrics defined at the outset of each project to ensure they’re delivering against agreed-upon goals. The key to autonomy is expecting (and trusting) that the team will come up with solutions to the problems that will inevitably arise, rather than waiting for a solution (or decision) from above. Coaching and mentoring play a much more important role than oversight when developing high-performance teams.
Lean frame of mind
It’s been shown time and again that teams operating with a Lean mindset will generate considerably less waste and deliver greater value in each development project. That’s what the Lean mentality is all about.
When a project is executed using Lean principles, developers are aligned with the business goals of the organization and are able to prioritize development and features accordingly. Lean emphasizes a collective problem-solving mentality and a commitment to continuous improvement, ensuring that each new iteration will contribute greater value to the company’s business goals. Using Lean in conjunction with Agile development methodologies (emphasizing fast delivery of high-quality software) results in an unbeatable combination.
But the greater benefits come when Lean is applied not only to a project (which, some would argue, is an inappropriate use of the term), but across the organization itself and is infused in every part of its culture, where it serves as the driving force of the high-performance team’s ability to generate value. Lean isn’t a quick fix or something that can be learned in a week, and it requires a long-term commitment from the organization.
Vision and shared purpose
The last components of a high-performance team, the ones that tie it all together, are shared purpose and a guiding vision. These are the values that make what developers do each day meaningful. Without these, jobs are just jobs, something developers get paid to do. When there’s something bigger for professionals to believe in, then a whole new level of potential is unleashed, if for no other reason than simply because it attracts people that share the same goals by nature, and give them a reason to get better. Apple and Google have mastered this, but they don’t have a patent on it.
If we put all these qualities side by side on a scale, going from totally inherent to the individual, to totally dependent on the organization and its leadership, the order would be: talent, skills mastery, autonomy, lean mentality, vision and shared purpose. Teams with these five attributes are able to perform far above “good enough” and evoke awe in those who count on them to get things done.
Why high-performance teams matter
In an industry that often emphasizes cheap and “good enough” as measures of success, the high-performance team concept seems counter to the status-quo, especially when it comes to outsourcing. But time and again, companies that leverage high-performance teams have seen significantly higher returns from their development investments, as projects contribute greater value to the business on a more consistent basis.
When you’re seeking to strengthen your development efforts, either internally or externally, make sure you look for signs of high-performance teams. They can be more difficult to spot than the easily quantifiable metric of “dollars per hour,” but you’ll reap the benefits of quality, productivity and value every time.
Leonardo Mattiazzi is vice president of International Business at Ci&T. With Ci&T since 1997, Mattiazzi has spearheaded several of the company’s critical business units, including Professional Services, Sales, Marketing and Software Products. Mattiazzi has been an active proponent and driver of Ci&T’s transformation into a Lean organization. He has become a prominent industry thought leader on the topic of Lean as both an application development principle and a cultural organizational tenet. He has helped to facilitate and grow the company’s emphasis on high-performance teams, whose talent, shared purpose and commitment to skills mastery promote continuous innovation and generate high-quality results for Ci&T’s clients.