Panel Discussion: Code Quality

This ad is not shown to multipass and full ticket holders
React Summit
React Summit 2025
June 13 - 17, 2025
Amsterdam & Online
The biggest React conference worldwide
Learn More
In partnership with Focus Reactive
Upcoming event
React Summit 2025
React Summit 2025
June 13 - 17, 2025. Amsterdam & Online
Learn more
Bookmark
Rate this content

FAQ

Quality code is characterized by its functionality, ease of readability, and maintainability. This means the code works not only on a developer's local machine but also for its intended users. It should be easy for all team members, including new ones, to understand, contribute to, and refactor without fear of breaking the system.

Testability is a significant indicator of code quality. Code that is easy to test tends to be well-organized and clear. High testability allows for easier maintenance and debugging, ensuring that each component functions correctly both individually and within the system.

A style guide ensures consistency in coding practices across a development team, which is crucial for maintaining code quality. Consistent code is easier to read, understand, and maintain, regardless of the team size. It also helps avoid issues in code reviews and reduces the cognitive load when developers switch between different parts of the codebase.

Integrating quality considerations throughout the development process helps prevent technical debt and ensures the software is built to standards from the start. It reduces the need for extensive refactoring and leads to more stable and reliable software, improving user satisfaction and reducing maintenance costs.

Pull requests are crucial for maintaining code quality as they allow for peer review before changes are merged into the main codebase. This process helps identify potential issues, ensures code adheres to established standards, and encourages knowledge sharing among team members.

Developers new to coding should start by learning to write and understand unit tests, as this practice introduces them to the basics of software testing and its impact on code quality. Engaging in code reviews and examining how experienced developers handle testing and refactoring can also provide valuable insights.

John Papa
John Papa
Angie Jones
Angie Jones
Jason Palmer
Jason Palmer
Anna Backs
Anna Backs
39 min
10 Jun, 2021

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Discussion on quality in JavaScript projects with insights from John Papa, Angie Jones, and Jason Palmer. Insights on identifying and measuring quality in code development, emphasizing testability and clean coding principles to maintain high-quality code. Recommendations for evaluating code quality through the 'seven D's,' emphasizing design, development, documentation, testing under adverse conditions, demos, deployment, and review processes. Emphasizing the importance of understanding the user for each test to avoid testing the implementation. Highlighting the importance of creating separate pull requests for distinct features to ease the review process. Emphasizing the importance of full CI, CD, and staging server testing for confident production deployment. Addressing challenges when switching to a company with anti-quality culture. Highlighting the importance of demonstrating quality through practical experiences. Discussing the balance between quality and business goals, especially in startup environments. Discussing the importance of automated rules for code consistency and structural integrity. Incorporate refactors into feature development, avoid viewing code quality as a separate task. Advocate for sustainable pace in development, prioritize quality and thorough testing efforts to ensure reliable software deployment.

1. Discussion on Quality in JavaScript Projects

Short description:

Discussion on quality in JavaScript projects with insights from John Papa, Angie Jones, and Jason Palmer.

Thanks for having me. I'm Anna, and joining me here are three awesome people to discuss quality. We have John Papa, who is a professional web and mobile developer and currently works as a developer advocate for Microsoft. He's also very active in the open source community and is also active on the podcast Real Talk JavaScript. We also have Angie Jones with us, who is a principal developer advocate at ApliTools and specializes in test automation strategies and techniques. She is also a very creative inventor and volunteers with Black Girls Code. Last, but not least, we have Jason Palmer here with us, who is a Jest core contributor and the creator and maintainer of JestJUnit. He is also an engineer and technical product manager at Spotify, where he focuses on infrastructure, CI, CD and test automation. Matthew already said we're going to talk about quality. Quality is indeed a topic that is discussed a lot, and where many people have many different opinions. But I would like to start and talk about what quality actually is. What are aspects of quality that we should consider? And I'd like to make a round, and let's maybe start with Jason.

Jason, what do you think quality actually is when it comes to JavaScript projects? I think that there's a lot of different ways to look at it. But at the end of the day, if people outside of your team can easily contribute to your software, and you're confident that it's not going to break, and if you're able to continuously deploy to production, so you make a commit to the main branch, and that's able to go directly to production, and you're confident about that, you know you've done a good job. So that's at least when you know you've developed something of high quality. Yes, if you can leave the office Friday afternoon, just push to prod shortly before and then leave for the weekend, that's definitely a good feeling you can do that.

Angie, what do you think? Yeah, I definitely agree with that. I think the key here is, one, that it works. That's very obvious. But that it works for your users, right, not your own local machine and only the various happiest of paths. But, you know, it works for your users, and a key part of what Jason said is that the team members are able to contribute to that. So that means we're able to read it, we're able to refactor if needed. No one is scared to touch certain modules, and that's when you know you're in bad shape, when it's like, oh, I don't want to touch that. So those are the characteristics I feel of quality code. Yes, definitely. If just everybody, even new team members, can just participate in it.

2. Insights on Code Quality and Testability

Short description:

Insights on identifying and measuring quality in code development, emphasizing testability and clean coding principles to maintain high-quality code.

John, what's your take on quality? First, I think that the characteristics, that's the key word, I think Angie just mentioned. This is one of those topics where it's hard to describe code quality, but you know it when you see it, and you absolutely know it when it's not there. So it's easy to spot those kind of things, but it all comes down to what Jason and Angie said is more about, does it work? Does it meet the business needs? And I look at the long term viability of a project as being a big sign of code quality. If the project lives for the term it's supposed to live, for example, once it goes live, we all know there's issues and maintenance and things to work on, which is where we get to the contributions that we all talked about here. That's got to be something that keeps the project moving. The sign for me of really bad code quality is when people start talking about, wow, we just deployed this thing, we have an update. It's too hard to update it. Let's just redo it from scratch. And that happens far too often in the business world out there. And I want to say that it's really evident without even looking at the code when it's of poor quality. And I think we all can attest to situations where we've used some product as an end user and you just know that what's underneath here is not of quality. You can see it even from the outside. Yeah, definitely. You can easily spot bad code, but is there also a way to spot or measure good quality code? You're nodding. Feel free to just elaborate on that. Yeah, there's lots of, you know, clean coding principles and things like that, that are out there that kind of gives us all some direction on how we should go about developing good quality code, you know? As far as like, you know, things are not too big, or too long, or too abstract. You know, there are these certain principles that I followed throughout my career and that's typically led to good quality code. Other ways I think is, how testable is your code? Right? And I feel like that's one that's glossed over quite a bit, but it gives so much insight when you think about your coding from that angle. Whether you practice TDD, which is test driven development, or if you test your code after you've written it, that's fine too. That is legal. But how testable your code is, is a really good indicator I've found in how well it's written. Yes. 100% I've met this experience as well. I agree 100% on testability. And spam calls. So, I agree 100% on testability there. One thing I really like about Sign for Code Quality is when things become testable, I hear a lot of folks say I can't write code that's testable. And I do a lot of coaching sessions with them and a lot of times we'll ask, why? Like, why isn't it testable? What it really comes down to quite often is the code is, as you mentioned Angie, too long. What's too long? I think that's subjective. But when your code is doing multiple things, when a function, for example, is doing seven things and you've got tons of comments explaining what all the ifs and thens and switches and for loops are doing, that's a great sign for maybe these things should be separate because then I can test each individual thing on its own instead of wondering where in this long journey did something go wrong.

QnA

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Panel Discussion: Future of React
React Summit US 2024React Summit US 2024
39 min
Panel Discussion: Future of React
Watch video: Panel Discussion: Future of React
Kent C. Dodds
Shruti Kapoor
Mark Erikson
Eli White
Mofei Zhang
Theo Browne
Tom Occhino
7 authors
We're going to be doing a future of React panel discussions. React 19 is in RC stage and we're excited to hear when it will be stable. The React compiler is here to stay and is the future of developer experience and tooling. React 19 brings exciting features like RSCs and consolidation of the framework. React's commitment to community and innovation is commendable. The React team values feedback and actively engages with the community. React's future includes supporting the community and enabling smooth migrations. There's a need to teach underlying concepts and educate AI systems. Teaching and adapting to React can be challenging. The React compiler changes default re-rendering behavior. Collaboration with Next.js and Vercel has been valuable for React's development. Appreciation for the community and partnerships with Vercel and Microsoft.
React 19 Panel Discussion
React Summit 2024React Summit 2024
27 min
React 19 Panel Discussion
Ryan Carniato
Evan Bacon
Sathya Gunasekaran
Tim Neutkens
Brooks Lybrand
5 authors
The Talk revolves around React 19 and the React compiler, highlighting its new APIs, optimizations, and impact on frameworks like Next.js. The React compiler has undergone multiple iterations, resulting in improved performance and alignment with developers' expectations. The integration of React with Next.js simplifies rendering and offers free optimizations. There is excitement about the opt-in approach of React Server Components and the potential of underrated features like suspense and transitions. Overall, React's influence on the JavaScript ecosystem and UI libraries is acknowledged and appreciated.
Fire-Side Chat with Kent C. Dodds
React Summit Remote Edition 2021React Summit Remote Edition 2021
31 min
Fire-Side Chat with Kent C. Dodds
Kent C. Dodds discusses various topics including migrating projects to TypeScript, Next.js and Remix, testing libraries, RTL testing with React Testing Library, integration testing for component libraries, testing design systems, writing tests, communication resources, and the popularity of Hooks in React development.
Scaling Fast – Engineering Lessons From ~15 Years of Tech Startups
React Advanced 2024React Advanced 2024
27 min
Scaling Fast – Engineering Lessons From ~15 Years of Tech Startups
Hey, we'll discuss scaling fast and engineering lessons learned in the last 15 years of tech startups. Scaling involves three things: business, team, and tech. Business scalability relies on sales and customer acquisition costs. Engineering is a tool the business uses. Scaling the team is vital as tech problems are often people problems. Team structure affects architecture and product development process. Organize teams based on purpose, not technology. Spend less time being blocked by other teams. Ship features without getting blocked. Own your own mess. Focus on product engineering partnership. Build faster using feedback cycles. Build appropriate solutions for your use case. Let go of ego and experiment with different approaches. Engineers own their own mess. Avoid work in progress. Finish the work and focus on fixing it later. Have a conversation before writing code. Scaling the tech is easier than you think. Pick an off the shelf design. Save innovation for core parts. Pick existing solutions. Focus on solving the problem. Don't waste time trying to predict future scale. Scale will surprise you. Do what works for your business. Push back on unnecessary complexity. Understand the cost of ideas. Modify the situation to fit existing design. Architecture is like a dependency graph on your code. Reduce architectural complexity by organizing code based on what it does. Use vertical models and avoid creating excessive dependencies. On the client, use vertical modules. On the back end, consider a service-oriented architecture. Start with a monolith and transition to microservices if necessary. Use folders instead of microservices when you have a small team. Use vertical models and contract or type-driven development to define clear APIs and interfaces. Avoid highly interconnected code and duplication. Focus on data structures to avoid complexity and the need for translation layers. Building translation layers can lead to slow user experience. Vertical teams aligned with vertical code allow for fast problem-solving, full control of features, and efficient data handling. Understanding the entire domain enables faster development with fewer bugs.
Next Generation Code Architecture for Building Maintainable Node Applications
Node Congress 2023Node Congress 2023
30 min
Next Generation Code Architecture for Building Maintainable Node Applications
Today's Talk focused on code architecture, modularization, and scaling in software development. The speaker discussed the benefits of separating code by domain and using tools like NX to improve productivity and enforce modular architecture. They also highlighted the importance of automating library creation and configuration. Additionally, the Talk covered code scaling and deployment strategies, including caching and automated code migrations. The speaker emphasized the flexibility and scalability of Fastify and the advantages of using a monorepo for front-end and back-end development.
How I Automated Code Changes for 100 Repositories: Getting Started With Codemods
React Day Berlin 2022React Day Berlin 2022
28 min
How I Automated Code Changes for 100 Repositories: Getting Started With Codemods
This Talk discusses automating code changes for Android repositories, utilizing tools like JSCodeShift and Abstract Syntax Tree. The speaker shares a real use case example of maintaining a design system library and making changes to a component. The talk emphasizes the importance of automating repetitive tasks and using the power of abstract syntax tree for code changes. The Q&A session covers topics like source code formatting, TypeScript support, and cultural embedding of code mods. The talk concludes with insights on when automation is worth it and the limitations of code mods for monorepo changes.

Workshops on related topic

Bring Code Quality and Security to your CI/CD pipeline
DevOps.js Conf 2022DevOps.js Conf 2022
76 min
Bring Code Quality and Security to your CI/CD pipeline
Workshop
Elena Vilchik
Elena Vilchik
In this workshop we will go through all the aspects and stages when integrating your project into Code Quality and Security Ecosystem. We will take a simple web-application as a starting point and create a CI pipeline triggering code quality monitoring for it. We will do a full development cycle starting from coding in the IDE and opening a Pull Request and I will show you how you can control the quality at those stages. At the end of the workshop you will be ready to enable such integration for your own projects.
OSZAR »