This organization self-assessment is designed specifically for product development organizations. It covers four major dimensions: Leadership, Workflows, Infrastructure, and Teamwork. For your organization to operate at an optimal level of performance, you must score high in all four of these dimensions.Skip to Assessment
Without a clear vision, team members will lose focus and motivation. There will be more disagreement and confusion about company goals and appropriate strategy. And they will be more open to looking at other opportunities.
Company leaders should establish a clear and simple vision and present it to the entire company in an all hands meeting. It should express the value the company intends to bring to the customer above all other considerations. The messaging should be concise and understable by all employees.
Strategy is one of those words that is frequently used but rarely understood, even by those who are saying the word. And yet, it is critical to business success.
If your strategy is unclear or too complex, teams will be confused about their goals and how to achieve them.
Many leaders struggle with appropriate communication tools and style in the digital age. There are so many different media available in a company setting, it can be daunting to decide which to use in what context.
A communication from a leader always carries significantly more weight than communication from other team members. As such, leaders must be careful to choose the right medium for the message, and to craft those messages with care.
Is the nature of the communication a regular occurrence or a special occasion? Is the emotional tone of the message relaxed, upbeat, urgent, or somber? These aspects must be taken into account by leaders when communicating to the team.
Team members join organizations at all levels of seniority. No matter what level they join, they will need mentorship from seniors or peers who can model behavior and provide (at least, informal) coaching and feedback.
Without mentors, many team members will struggle to identify their own professional development goals. It is the responsibility of seniors to provide that guidance as an investment in their teams.
Mentorship does not need to be a formal program in order to be impactful. But it should be a central topic of any leadership or strategy discussions for the long term health of the organization.
Delegation is the opposite of micromanagement and it is critical for leaders to learn.
Anyone with more than a few years’ work experience has probably encountered a manager or supervisor who micromanages employees. Few aspects of modern work are more frustrating and demotivating than micromanagement.
For employees to grow and develop as individuals, they must be challenged. They must have goals that are both reasonable for their skills, yet also just slightly out of reach. Like sports, exercise, and artistic pursuits, these stretch goals enable us to improve our ability to perform in a steady and consistent manner.
Micromanagement undermines this ability. It creates in team members a sense of learned helplessness. When a boss is always looking over our shoulder and providing correction before we need it, we learn not to push ourselves too hard.
No one stays in a job role forever. Eventually, leaders are promoted to a higher position, leave the company altogether, or simply retire. Sometimes leaders simply get sick or injured and require extended time away from the office.
When this type of change occurs, it is important to have a smooth plan for succession. Leaders who think ahead about succession have identified candidates for their replacement among their team members. They mentor them and delegate tasks to them with the specific intent of preparing them to someday take over their position.Start Assessment
The overall maturity of an organization can often be inferred from the maturity of their workflow visualization systems.
In product development, speed to market is critical. And yet, in product development, bottlenecks in the workflow are the leading causes of slowdowns.
Because “inventory” in product development (eg, specs, designs, tests, incomplete features) is physically invisible, a healthy and robust visualization system is necessary in order to surface bottlenecks and eliminate them.
The single most impactful thing you can do to increase the speed of your teams is to work on as few things as possible, together.
In the Kanban method, this is reflected in the practice of Work-in-Process (WIP) Limits. A WIP limit is a constraint on the number in-process items that are allowed to be worked on at a given time.
Teams can apply WIP limits to individual steps, or their entire workflow, or both. Counterintuitively, reducing the amount of simultaneous tasks your team is currently working on will increase the speed overall of all tasks.
The concept of Heijunka (pronounced hi-JUNE-kuh) or “leveling” was one of the Toyota Production System’s most important contributions to product manufacturing. Production leveling involved smoothing the flow of work to provide stability and predictability.
In product development, unexpected demand is one of the key contributors to missed deadlines, and sluggish development cycles in general. Interruptions to the schedule can come from anywhere, and it is critical to have a system to triage and categorize unexpected work. Further, planning should include excess capacity to allow for slack time to handle unexpected demand without affecting regularly planned work.
Different types of work exist in product development, from bugs or outages, to fixed date deliverables, to regular ongoing feature development. These types of work do not have a uniform impact on the bottom line.
High performing teams develop explicit policies for different classes of work that enable that work to be triaged, categorized, and handled with efficiency and predictability.
No production system is perfect. To achieve high performance, teams must constantly seek to improve their process, learning from the past and anticipating the future.
Healthy teams incorporate feedback loops into their system. These feedback loops capture data from past performance, identify opportunities for improvement, and experiment systematically with new approaches to see what works and what doesn’t.Start Assessment
With multiple people working on software projects together, it is inevitable that changes introduced by one team member will cause conflicts in work being introduced by another. To address these teams have developed a system of automated code integration and testing, known as Continuous Integration.
Continuous Integration allows teams to be notified immediately when a new build, or integration of completed software, fails a suite of testing protocols. The immediate feedback allows the offending code to be quickly reverted and then fixed without being included unnoticed into the product.
Complex production environments can provide an endless number of ways for bugs to be introduced and failures to emerge. Manual deployment processes rely on humans to follow a scripted process of delivering new versions of a product to production servers. When human developers must remember configuration settings, file paths, and other environment-specific variables, problems inevitably arise.
Automated deployments remove this risk by streamlining the process of deployment and formalizing the variables in source code. It also reduces the cognitive load and fear of change that teams doing manual deployments tend to live under.
Because getting hauled in front of the Senate really sucks.
Manual testing is slow, error prone, and expensive. Since the early 2000s, teams have been employing suites of automated tests to gauge fitness of new versions of software on test environments before those versions are released to customers. Failures in the software are halted and rolled back before anyone outside the company knows.
The principle of fast feedback from lean manufacturing is illustrated here again, whereby automated testing, along with continuous integration and automated builds, enable teams to build, test, and deploy software dozens or even hundreds of times per day.
You data is your business. Managing data and databases is one of most difficult and confounding aspects of software engineering. Database mistakes are notoriously unforgiving, and difficult to undo once damage has been introduced.
High performing teams are able to automate most if not all aspects of data cleaning, migration, and backup. They are able to treat database schema changes just like any other software, with proper automated tests and fault tolerant environments.Start Assessment
High fidelity mockups look really good to executives in a slide deck. But they are merely a form of fiction. Mock-ups lie, both by omission and by assumption. They omit critical details about functionality, and they assume agreement about functionality where there is none.
High performing teams have learned to leverage design component libraries, whereby reusable pieces of interface are stored together along with functional and style specifications. As a result, the developers and designers are able to work within the same medium, reducing the number of handoffs and reducing errors and confusion.
Automated testing, and particular test-driven development, provides three concrete benefits. First, teams are able to build more modular, flexible, and reliable code in the form of small, single-purpose components. Second, suites of automated tests provide insurance against regressions introduced by later feature additions. Finally, and most importantly, they get developers into a state of flow, where the craftsmanship of software engineering allows them to produce high-quality work quickly and reliably, and enjoy the process as well.
Long, detailed requirements documents violate the Lean principle of working in small batches. As a result, assumptions that are misleading or incorrect emerge far later in the development process, and cause far more damage through rework than had they been identified earlier.
Small, simple feature definitions, such as user stories, provide an anchor point whereby a cross-functional team can build a shared understanding of customer needs in simple language, and then design, build and test features iteratively as a unit.
A great indicator of healthy product teams is how quickly a new team member can get up and running and make successful contributions to the code. When a new software engineer starts working with a team, the code should be easy to get up and running on their local development environment. If it’s not, it’s a bad sign.
Automation for new code development access forces a team to isolate and identify dependencies and configuration details that help promote the health of the code overall.
It is widely said, following the lead of IDEO, that successful products are feasible, usable, and valuable. To achieve this, product teams must have a product mindset and always prioritize the needs of the customer over their own intuition and internal disputes.
Further, high performing teams are highly autonomous and self-directed. They can be assigned a business goal and be expected to iterate until they find the appropriate solution.
Gone are the days of large monolithic software programs. Systems like Lambda and Google Functions, cloud-based infrastructure that allow developers to right simple stateless functional components, have changed the way that software is architected.
As a result, high performing teams are able to develop their systems as a set of small, reusable and modular components that reduce dependencies and are horizontally scalable.
Immature teams have no process to speak of. Tasks are assigned by managers without regard to capacity or effort. Release dates are missed, arguments about process are rampant, and morale is low.
More mature teams implement iterations, or sprints, where work can be performed in batches, and flow is more regular. Still higher performing teams gradually abandon sprints and move to a more continuous flow model.