Software Developer Success: Soft Skills & Testing

3 hours, 34 minutes CC
Software Developer Success: Soft Skills & Testing

Course Description

You need more than technical skills to have a solid and successful career. Gain tips on critical soft skills such as ramping up quickly in new roles, estimating project timelines, building authentic connections, and advocating for yourself. Explore practical techniques for working with legacy code, including refactoring and test-driven development. Get a 360-degree tour of what it takes to build a long-lasting career!

This course and others like it are available as part of our Frontend Masters video subscription.

Preview
Close

Course Details

Published: September 17, 2024

Learning Paths

Learn Straight from the Experts Who Shape the Modern Web

Your Path to Senior Developer and Beyond
  • 200+ In-depth courses
  • 18 Learning Paths
  • Industry Leading Experts
  • Live Interactive Workshops
Get Unlimited Access Now

Table of Contents

Introduction

Section Duration: 6 minutes
  • Introduction
    Francesca introduces the course by discussing the importance of preparation and opportunities in the software engineering field. This course covers topics such as making a good first impression, ramping up quickly in a new company, working with legacy systems, handling project execution problems, and getting promotion-ready. - Slides: https://software-developer-success.my.canva.site/ - Exercises: https://melted-pilot-e8b.notion.site/Software-Developer-Success-05fc5c7e2c9543059954d20890bfd213
  • Ramping Up in a New Role
    Francesca emphasizes the importance of asking questions as a new engineer and recommends requesting to shadow or pair program with a more experienced engineer to learn about the company's coding norms, testing processes, PR (pull request) process, deployment pipeline, and company-specific gotchas.

Developer Growth Essentials

Section Duration: 22 minutes
  • Time Estimation
    Francesca discusses common time estimation problems and provides strategies for handling them. She discusses the importance of communication, gathering more information about the assigned task, and improving estimation skills to avoid missing deadlines.
  • Self Assessment & Career Growth
    Francesca discusses the importance of creating feedback loops to ensure personal growth. She emphasizes the need to proactively seek feedback from managers and provide specific questions to ask, such as how to improve performance or take on more responsibility.
  • Surfacing Your Accomplishments
    Francesca discusses the importance of advocating for oneself in order to climb up the career ladder and secure promotions. She recommends creating a "brag doc" to document and showcase your work and achievements, as well as regularly communicating successes to managers.

Opportunities and Networking

Section Duration: 1 hour, 1 minute
  • Getting Opportunities
    Francesca discusses the role of building relationships and trust with others, as connections often increase opportunities. She also shares a story about an engineer who, despite being talented, did not receive career growth opportunities due to his inability to collaborate and build trust with his manager and teammates.
  • Story: Growing through Getting Opportunities
    Francesca shares a personal story about how building trust and strong relationships led to career growth and opportunities. By consistently delivering outstanding work and fostering good relationships, she earned her manager's trust and was assigned to more projects, leading to a promotion and continuous growth in their career.
  • Story: Deciding What to Build
    Francesca shares their personal experience of falling into the mental trap of believing that good solutions speak for themselves. The lesson emphasizes the importance of understanding the needs of the users and involving them in the design process to create effective solutions.
  • Software Engineering is More Than Code
    Francesca shares her experience with a project that was failing to spark adoption. To solve this problem she actively listened to individual engineers, uncovering their concerns and pain points.
  • Guide to Building Relationships
    Francesca discusses the benefits of building connections early on, such as having support during difficult times and gaining valuable information. She also shares a personal story about how active listening transformed their socializing skills and helped them form authentic connections. She explains the concept of active listening and its role in understanding and making others feel heard.
  • Building Relationships Q&A
    Francesca answers student questions regarding how to manage the early days in an office as a software developer. She discusses the importance of balancing building connections with colleagues and focusing on job responsibilities. She also provides advice on how to handle difficult team members and how to make the most out of one-on-one meetings.

Building Authentic Connections

Section Duration: 29 minutes
  • Active Listening
    Francesca explains that active listening involves not only hearing what someone is saying, but also attuning to their thoughts and feelings. She also provides tips for practicing active listening, such as filtering out judgment and using tactics like mirroring and labeling emotions to encourage further sharing.
  • Authentic Connection Exercise
    Francesca guides the participants through an authentic connection exercise. One person starts by giving a short summary of their journey into tech, and the rest of the participants take on the role of questioners. The goal is to ask questions that help understand the person's experience and feelings about their journey, creating a sense of authentic connection.
  • Francesca's Story
    Francesca takes on the story sharer role for an authentic connection exercise. She discusses her motivations for transitioning into tech, their passion for coding, the resources they used to learn, and their experiences with building projects collaboratively.
  • Authentic Connections Reflection
    Francesca wraps up a communication exercise and reflects on the key takeaways. She emphasize the importance of genuine connections, active listening, and creating a safe space for others to share.

Test Driven Development

Section Duration: 1 hour, 27 minutes
  • What is Quality Code
    Francesca discusses what is considered quality code and the importance of writing maintainable code. She covers tactics such as using descriptive naming, avoiding code duplication, and adding test coverage.
  • Writing Tests Exercise Setup
    Francesca introduces the Gilded Rose exercise, which involves working with a legacy system and making changes safely with tests. The goal is to add a new feature to the existing code without breaking any existing functionality.
  • Writing Tests
    Francesca introduces the exercise and sets up the local environment for coding. She writes unit tests for the shop's default items, such as checking the name, sell-in value, and quality value of items in a shop. Francesca also demonstrates how to group tests using describe blocks.
  • Specialty Item Tests
    Francesca continues writing tests to check the quality of the shop's specialty items.
  • Refactoring Without Breaking Tests
    Francesca refactors the code in order to prepare it for a new feature. She uses a technique called "seam" to safely inject the new code without breaking existing functionality. She also demonstrates how to use the debugger to identify and fix a problem in the code.
  • Refactoring with Deleting Code
    Francesca demonstrates how to refactor code by extracting handlers for different items into a separate object. She also discusses best practices for deleting code and the importance of understanding the existing codebase before making large refactorings in a production environment.
  • Conjured Items Tests
    Francesca continues refactoring the code by extracting the handlers for different items into separate functions. She also introduces a new item called "conjured" and writes tests and code to handle its specific behavior.
  • Testing Q&A
    Francesca answers students' questions regarding Jest as a recommended testing tool for JavaScript and TypeScript, best practices when using if/else blocks, and options for refactoring the previously written tests. An overview of some key takeaways from the Gilded Rose exercise is also provided.
  • Why TDD & Tips for Learning
    Francesca provides a recap of the benefits of test-driven development (TDD), such as safer code changes, simpler solutions, and fewer bugs. She also discusses the importance of collaboration between engineers and QA teams and provides tips for learning and practicing TDD, including breaking the habit of pre-planning code and starting small with unit tests.
  • Working with Existing Code
    Francesca discusses techniques for understanding and working with existing code. She also provides tips such as walking through the code line by line, using console logs and debuggers, and commenting out code to identify the source of a problem.

Wrapping Up

Section Duration: 7 minutes

Learn Straight from the Experts Who Shape the Modern Web

  • In-depth Courses
  • Industry Leading Experts
  • Learning Paths
  • Live Interactive Workshops
Get Unlimited Access Now