Qwasar-Silicon-Valley-Blog-02

Adopting a Growth Mindset: Being a Software Engineer Means You're Okay with Failure

Aug 9, 2023 7:24:24 AM / by Caitlin Carlton

In the ever-evolving field of software engineering, embracing a growth mindset is essential for success. While titles and technical expertise are important, true achievements stem from failures, setbacks, and learning experiences. A growth mindset encourages resilience, creativity, and continuous development of skills, empowering engineers to view setbacks as stepping stones to progress and to contribute meaningfully to the ever-changing technological landscape. Understanding the value of failure and competency becomes crucial within the context of software engineering.

A Fixed Mindset vs a Growth Mindset

A growth mindset, as coined by psychologist Carol S. Dweck, is the belief that abilities and intelligence can be developed through dedication, effort, and a willingness to learn from mistakes. It is the understanding that intelligence is not fixed, but rather malleable, and that individuals can continuously improve their skills and abilities.

A fixed mindset is the belief that basic qualities, like intelligence or talent, are simply fixed traits. It is the belief that talent alone creates success—without effort.

Here’s an infographic:

 

Adopting a Growth Mindset: Being a Software Engineer Means You're Okay with Failure

(FS)

See this as a spectrum - it’s not binary in that you’re either in a fixed mindset or a growth mindset. But many of us grew up in the traditional education system that focused on passing rather than learning, meaning that errors weren’t accepted and thus avoided, effort didn’t always lead to “success” because success was defined by grades not growth, and grades were a competition so the success of others wasn’t celebrated. It’s imperative in this profession to move away from the fixed mindset.

Embracing Failure as a Learning Opportunity

Embracing failure as a learning opportunity is a fundamental aspect of adopting a growth mindset in software engineering. Instead of shying away from failures or feeling discouraged by them, software engineers with a growth mindset approach failures with curiosity, resilience, and a determination to learn and improve.

One of the key fallacies that a growth mindset challenges is the notion of a pass/fail mentality. This binary mindset often focuses solely on the result—whether a project or task is deemed a success or failure. However, a growth mindset recognizes that true growth and learning occur through the process, including the lessons learned from failures. Software engineers who adopt a growth mindset understand that ‘failure’ - delaying a push to production because of one annoying but significant bug that you can’t find or having to re-do parts of your architecture or infrastructure late in a project because of things you didn’t know or anticipate - does not define their abilities or competence. Instead, these are learning opportunities and valuable experiences that help make you a better engineer in the future. Largely, “great” engineers have lived through a lot of software projects, learned from their errors along the way, and become better at anticipating potential problems - but they know those skills only come from continually coding and building, and not giving up.

When “failure” occurs, or rather things don’t go to plan, good software engineers will actively seek to learn from their errors and conduct a post-mortem to seek to understand the root causes and analyze the factors that led to the failure. They view failure as an opportunity for reflection, process, self-evaluation, and identifying areas for improvement. By examining what went wrong and why, software engineers can uncover valuable insights that help them refine their approach, enhance their skills, and prevent similar failures in the future.

Focus on Building Competency Over Job Performance

Part of becoming a software engineer involves developing habits, being disciplined, and maintaining rigor, which can at times, and in the pursuit of excellence, lead to prioritizing flawless performance or predefined benchmarks. This way of thinking can easily bleed over into the evaluation of self and coding abilities. However, a growth mindset emphasizes competency and continuous learning over a focus on perfection - which may seem ironic for the rigor-driven engineer. Recognizing software engineering's dynamic nature, growth-minded engineers view competency as a journey of acquiring and refining skills.

Particularly when it comes to new technologies, tools, languages, or frameworks, professionals in any kind of software development work may feel that they’ve completely failed in delivering a project, product, infrastructure, deployment, etc. Sometimes software breaks because users push it to the breaking point - by usage, demanding better performance, etc. - and it’s in such moments that engineers have to revisit their work and ask, “How could this be improved?”

From a job performance perspective, professionals in such a situation haven’t failed, but they may feel that they also haven’t succeeded. It’s in these moments that it’s crucial to maintain a growth mindset and to realize that it’s very likely that the pathway to better performance first led through where they were and that it’s unavoidable and part of the learning process in engineering.

Every Code Error is a Learning Opportunity

Code failures, errors, or bugs are common, and savvy engineers see them as learning opportunities. By fixing errors, you improve problem-solving and debugging skills to prevent future issues.

The challenge of maintaining a growth mindset doesn’t come when you have 1 or 2 bugs in your code, or a problem you can’t figure out: it comes when you have bug after bug after bug after bug after bug, or one design problem after another after another after another. When your patience wears down is when it can be challenging to embrace these “failures” as learning opportunities.

More experienced engineers have a larger bank of solved problems from which to draw, meaning they may find it less difficult or taxing to solve certain problems. On the other hand, they likely face more complex, interconnected, and more difficult problems, which are equally a learning opportunity for them that may test their patience!

 

Adopting a Growth Mindset: Being a Software Engineer Means You're Okay with Failure

(Mindful by Design)

Start Embracing a Growth Mindset as a Software Engineer

Embracing a growth mindset is not a passive endeavor; it requires conscious effort and deliberate actions. Here are some key strategies for embracing a growth mindset in the field of software engineering:

  1. Embrace challenges and step outside your comfort zone
  2. Seek feedback and constructive criticism
  3. Set goals and track progress
  4. Fostering a culture of learning and growth within teams

Embracing a growth mindset in software engineering requires deliberate strategies and actions. By embracing challenges, seeking feedback, setting goals, and fostering a culture of learning within teams, software engineers can cultivate a growth-oriented mindset. Embracing a growth mindset not only drives personal and professional growth but also contributes to the advancement of the software engineering field as a whole. With a commitment to continuous learning and development, software engineers can thrive in their careers, overcome obstacles, and make meaningful contributions to the world of software engineering.

Caitlin Carlton

Written by Caitlin Carlton