What does full-stack application development have in common with ice hockey? Everything. While few are skilled practitioners of both, the parallels within critical success factors are as immutable as they are undeniable.
Consider the following ten (10).
Special Teams (Power Play, Penalty Kill) are essential to success – avoid a “one size fits all” sprint team staffing approach.
Enterprise-level Agile development – whether using Agile Scrums, Scaled Agile, Kanban, or some variation on the Agile theme – invariably includes a wide range of applications. Just as the power play units on a hockey team are selected for their scoring and puck management skills, development teams should be staffed based on the play. The ideal developers for data architecture or infrastructure as a service (IaaS) are likely not the best choices for a functional application. Align and assign talent based on what’s being developed while recognizing the specialized expertise and leveraging the lessons learned, insights, and knowledge of best practices individuals bring.
Processes not worth doing…are not worth doing well.
Avoid the temptation to merely automate the current way of doing business. “Lift and shift” from on-prem environments to the cloud is seldom the right long term answer. Fix and streamline the underlying business processes before mindlessly automating them. Taking advantage of this as a true modernization opportunity will avoid unnecessary work upfront and potentially technical debt down the road: do not perpetuate processes that are of little or no value. Migrating a dumb process is the technological analogy to a hockey team that seeks to perfect the slingshot power play rush – it wastes time, seldom works, and is easily defeated. Don’t waste effort in perfecting a failed or low value process – you’re team is better off abandoning it.
Understand and appreciate the immense value of team chemistry with clearly defined roles.
Just as hockey coaches set and tweak their lines to optimize performance, so should development teams. Find and assign the right position players based on ability and need. Play to the individual’s strengths and avoid roles that expose their weaknesses. Recognize that no software developer or hockey player is great at everything, so assign staff like you would set your lines – with complementary skills and superstars performing in roles where they can do their thing.
Focus on extensibility and maintainability: Think big but act small.
Agile development is not just about speed. It’s about architecting products and apps based on small building blocks that are inherently extensible and maintainable. Concurrent design and development does not immunize developers from the need to architect apps that leverage concepts such as containerization, microservices, mesh architectures, and real-time orchestration. This focus on the small stuff is no different than the most strategic hockey teams who also obsess on the details – board battles, puck management, clean rushes, and rebound control.
Governance is key…don’t just graft a Government-mandated review process on Agile root stock.
The emphasis on concurrent design and development and continuous integration and deployment (CI/CD) in most Agile development paradigms is antithetical to those who take comfort in Government oversight, periodic reviews, and a formal review/approval cycle. Find the right balance of governance without compromising the foundational concepts of Agile development. Reviews have a legitimate purpose, but it’s time to push back against overly burdensome or prescriptive governance models that undermines the goal and effectively transforms Agile development into a classic waterfall model. When you script your superstar players (or most gifted developers), you are not giving them the space to create and drive the play.
Software development is not just a team sport…it’s a contact sport.
There is no substitute for a development team or a line pairing that naturally – almost intuitively – works together. Modify your playbook based on your players and situational reality. Participants understand the brightness of reflected glory and focus on what’s best for the team, not just themselves. They actively collaborate and cooperate based on shared objectives. They share best practices, backstop their team mates, and value the team dynamic. There truly is no “I” in “team.”
Leaders as practitioners…the value of always walking the talk.
Software team leaders and hockey captains share a strong commonality: the good ones model the right kind of behavior and inspire others to attempt and achieve great things. Avoid leaders who have a solipsistic hero mentality, even if they can be game changers. Good leaders know how to effectively encourage without complaining and set a strong example for all to follow. They are skilled but not necessarily the most talented member of the team because they bring something more – the ability to lead, plan, motivate, and inspire. They make everyone around them want to be there and want to do well. They also know how to harness the unique talents of each member of the team without playing favorites. You won’t succeed without them.
Speed matters. Always.
The best Agile development teams work fast and work smart. They kick off to a fast start and don’t look back, setting objectives and continually measure progress to adjust their plans in meeting these goals. Slow and steady does not win the software development race or the hockey game. Streamline processes, empower individuals, leverage tools, and lower barriers (e.g., obstreperous governance bodies who operate at their own glacier-like pace) to improve speed and reduce time to deployment. Have you ever seen a championship hockey team that was slow-footed? Neither have we. The average speed of an NHL player ranges 10-25mph.
Reshuffling the deck does not improve the hand…sometimes you just need new cards.
Talent matters – whether it’s software developers or hockey players. While setting the lines can improve results to a degree, often a team needs new blood who bring proven skills that align with project needs. Don’t be afraid to realistically assess talent needs and identify gaps. Don’t accept the notion of the “perfectibility of mankind” – not everyone can do everything. Keep a lookout and scout for new talent that can improve your game, even if it means you need to lean forward to make it happen. Whether it’s a hockey game against a clearly superior opponent or a difficult software app that has to be developed, starting a game with a team that is overmatched almost never ends well. Work the problem early and set yourself up for success by fighting for the right talent.
Collect, analyze, and adjust based on analytics.
You can’t manage what you don’t measure. Take stock of progress and collect metrics that provide early warning of potential problems and bottlenecks. Use analytics to understand strengths and weaknesses – many of which may be cloaked by results (or lack of results). Analytics are management and decisions tools, not just metrics to be reported because they’re required. There is a reason NHL track individual and team stats.
Practice does not make perfect (despite what your mom may have told you)…but it does make you better.
Invest in professional development, and train every member of the team so they’re better prepared. The best training is live and in person – on the ice or in the computer lab. Make it real and competitive. The best training is also way in advance of gametime so players can apply and practice what they’ve learned. Instill a culture in which practice is expected and valued, and all are expected to participate. Use training to spot weaknesses, instantiate best practices, and show improvements.