Beyond Best Practices: The Art of Rethinking in Software Engineering

Christian Del Monte
Analyst’s corner
Published in
7 min readFeb 7, 2024

--

In the ever-evolving landscape of software engineering, the ability to rethink and adapt isn’t just an asset, it’s a requirement. Inspired by Adam Grant’s highly regarded book “Think Again: The Power of Knowing What You Don’t Know,” this article explores the critical importance of rethinking in the context of software engineering.

I recently came across “Think Again: The Power of Knowing What You Don’t Know,” an inspiring book by Adam Grant, published in 2021. It is a book that I highly recommend. Reading it gave me some insights that can be applied to software engineering, and I would like to share them in this article.

Adam Grant’s book explores the importance of rethinking for personal and professional growth. An organizational psychologist, Grant argues for the benefits of embracing our mistakes and the critical nature of rethinking as a key skill in today’s fast-paced environment. Through a blend of research and narrative, he shows how individuals, teams, and entire organizations can cultivate a culture of continuous improvement.

In my view, the insights of Adam Grant’s book have significant relevance to the field of software engineering, where the principles of reassessment and intellectual adaptability are especially valuable in the face of rapid technological progress and the need for continuous learning. Below, I outline how several of the book’s recommendations can be effectively integrated into software engineering methodologies: embracing intellectual humility, cultivating an environment of psychological safety, and rethinking established best practices.

Embrace Intellectual Humility

Intellectual humility is about recognizing and admitting what we don’t know, being open to new ideas, and being willing to change our minds in the face of new evidence. It involves a balance between having enough confidence in our own knowledge and abilities to pursue new insights and having enough doubt to question our current understanding and the correctness of our solutions. This mindset is crucial for continuous learning, effective decision-making, and fostering innovation within teams and organizations. Grant suggests that intellectual humility can lead to better leadership by enabling leaders to rethink their positions, consider diverse perspectives, and adapt their strategies in an ever-changing environment.

Applying the principle of intellectual humility in software engineering, particularly in the context of mitigating the risks associated with “sophomore knowledge,” can significantly enhance team dynamics, project outcomes, and individual growth. Here’s how combining these principles can be beneficial:

  • Promoting a Culture of Continuous Learning: Intellectual humility encourages the recognition that no matter how much one knows, there’s always more to learn. This mindset is crucial in software engineering, where technologies and practices evolve rapidly. Encouraging continuous learning helps mitigate the risks of overconfidence associated with sophomore knowledge by emphasizing the depth and complexity of the field.
  • Encouraging Openness to Feedback and Collaboration: By acknowledging that their understanding might be incomplete, engineers are more likely to seek out and value feedback, whether from code reviews, peer discussions, or user feedback. This openness not only improves the quality of the software developed but also helps individuals grow beyond the plateau of sophomore knowledge, fostering a collaborative environment where diverse perspectives lead to innovative solutions.
  • Admitting Mistakes and Embracing Failure as a Learning Opportunity: Intellectual humility allows individuals and teams to admit mistakes without fear of judgment. This attitude is crucial in software development, where errors are inevitable but also serve as valuable learning opportunities. Recognizing and learning from these mistakes ensures continuous improvement and helps avoid the pitfalls of assuming one knows enough.

Cultivate a Culture of Psychological Safety

Psychological safety refers to an environment where individuals feel comfortable speaking up, sharing their ideas, and taking risks without fear of negative consequences, such as ridicule or punishment. It has been mainly researched by Amy Edmondson, a professor at Harvard Business School. She defined it as “a shared belief held by members of a team that the team is safe for interpersonal risk-taking.”

A culture of psychological safety in software engineering is crucial for promoting an environment where team members feel safe to take risks, speak up with ideas, concerns, and questions, and admit mistakes without fear of blame or retribution. This culture can significantly enhance the software development process and outcomes in several ways:

  • Encourages Innovation and Creativity: When software engineers feel psychologically safe, they are more likely to propose innovative solutions and creative ideas. The knowledge that their contributions will be received positively, even if they deviate from the norm or initially fail, encourages out-of-the-box thinking, which is essential for technological innovation.
  • Promotes Open Communication and Collaboration: Psychological safety enables open communication, where team members can share knowledge, feedback, and suggestions without fear of negative consequences. This openness enhances collaboration, as individuals are more willing to combine their expertise and work together to solve complex problems, leading to higher-quality software.
  • Facilitates Learning from Failures: Software development often involves trial and error, and a psychologically safe environment allows team members to admit and discuss mistakes freely. This openness not only helps in quickly addressing and rectifying errors but also turns them into learning opportunities for the entire team, contributing to overall improvement and growth.
  • Improves Team Dynamics and Morale: Teams with high psychological safety have stronger bonds, higher morale, and lower stress levels. Team members are more engaged, motivated, and committed to their work and to each other, leading to increased productivity and better project outcomes.
  • Enhances Risk Management and Problem-Solving: In an environment where it’s safe to speak up, team members are more likely to raise concerns and potential risks early on. Early identification of issues allows for proactive solutions and adjustments, reducing the likelihood of major problems down the line and ensuring smoother project execution.
  • Supports Diversity and Inclusion: Psychological safety is key to creating inclusive teams where diverse perspectives are valued and leveraged. In software engineering, diversity can drive innovation and lead to the development of products that better serve a wide range of users. By promoting an inclusive environment, teams can benefit from the broad array of ideas and experiences that diverse team members bring to the table.
  • Accelerates Adaptation and Change: Teams that feel safe are more adaptable and open to change, qualities that are especially important in the fast-paced world of software development. Whether it’s adopting new technologies, methodologies, or pivoting project direction in response to user feedback, a psychologically safe team can navigate these changes more effectively and with less resistance.

To foster a culture of psychological safety in software engineering, leaders and managers must actively encourage open dialogue, demonstrate appreciation for diverse viewpoints, show empathy, and lead by example in admitting their own mistakes and vulnerabilities. Such an environment not only improves the well-being and satisfaction of team members but also drives the success and innovation of software engineering projects.

Rethink Best Practices

Adam Grant criticizes the concept of “best practices” for creating an illusion of finality that can stifle innovation and prevent organizations from adapting to change. He argues that labeling a practice as “best” suggests an endpoint has been reached, leaving no room for improvement. Grant highlights the danger of adhering to practices built for a bygone era, especially as the work landscape becomes more dynamic, unstable, and unpredictable. Instead of clinging to outdated best practices, he advocates for a continuous search for better practices that can adapt to evolving work environments​​​​​​.

In the context of software engineering, Adam Grant’s criticism of “best practices” highlights the potential pitfalls of relying too heavily on established methodologies without considering the dynamic and rapidly evolving nature of technology. This perspective can be applied in several ways to software development:

  • Continuous Learning and Adaptation: The technology sector is known for its fast-paced evolution, with new programming languages, frameworks, and tools emerging regularly. Viewing “best practices” as immutable can hinder a team’s ability to adapt to new technologies or methodologies that could enhance efficiency, security, or user experience. Software engineers and teams should remain open to learning and integrating new approaches, even if they deviate from the current norm.
  • Innovation Over Conformity: Relying solely on “best practices” can stifle innovation by discouraging experimentation and creative problem-solving. In software engineering, novel solutions to complex problems are often necessary to achieve optimal results. Teams should be encouraged to explore alternative approaches that challenge the status quo, potentially leading to breakthroughs in functionality, performance, or scalability.
  • Customized Solutions Over One-Size-Fits-All: Software projects can vary greatly in terms of requirements, scale, and user needs. Applying “best practices” without considering the specific context of a project can result in inefficient or suboptimal outcomes. Engineers should evaluate practices within the context of their specific project, adapting and tailoring approaches as necessary to meet unique project demands.
  • Iterative Improvement: Software development is inherently iterative, with the need for constant revisions and improvements based on user feedback and changing requirements. Viewing “best practices” as a final destination can hinder the ongoing process of refinement and optimization. Adopting a mindset of continuous improvement encourages teams to seek out and implement enhancements, even to established procedures.
  • Embracing Change and Uncertainty: The landscape of software engineering is one of constant change, with emerging technologies, shifting market demands, and evolving user expectations. A fixation on “best practices” may render teams less agile and less capable of responding to these changes effectively. Cultivating an organizational culture that values flexibility, quick learning, and responsiveness to change is crucial for maintaining relevance and competitiveness.

By questioning and reassessing “best practices” in light of the unique challenges and opportunities presented by each project, software engineering teams can promote a more innovative, adaptive, and resilient approach to development. This aligns with the broader ethos of software engineering as a discipline that thrives on constant evolution, creativity, and problem-solving.

Adam Grant’s insights from “Think Again: The Power of Knowing What You Don’t Know” are a compelling reminder of the benefits of intellectual humility, psychological safety, and rethinking best practices. By adopting these principles, software engineers and teams can navigate the complexities of technological advancement with greater agility, creativity, and resilience. This shift in mindset not only improves individual and team performance, but also drives the entire field toward innovative solutions that meet the nuanced demands of the digital age.

--

--

Christian Del Monte
Analyst’s corner

Software architect and engineer with over 20 years of experience. Interested in data lakes, devops and highly available event-driven architectures.