81: “How big iOS teams typically operate”, with special guest Carola Nitz
Sep 10, 2020
auto_awesome
Carola Nitz, iOS developer at Netflix, discusses how big iOS teams typically operate. Topics include remote conferences, bug fixing, code organization, navigating codebases, modularity, smaller pull requests, and maintaining predictable state for bug fixing and feature iteration.
At Netflix, the development team follows a regular release cycle of one week for new features and one week for stabilization, allowing for less pressure on feature development and bug fixes.
Netflix ensures high-quality code through a combination of automated tests, manual testing, and bug bashes, with bug fixing prioritized based on severity and impact on the business.
To navigate a large codebase, Netflix developers utilize tools like the View Debugger and regularly review open pull requests, while emphasizing modularity to enable code exchangeability and easier maintenance.
Deep dives
Continuous Delivery and Feature Flags
At Netflix, continuous delivery is practiced with weekly releases. The development team works on new features for one week, followed by one week of stabilization. The release branch is cut and submitted to the App Store for the stable version. This regular release cycle allows for less pressure on feature development and bug fixes. Feature flags are used to hide features in development from users until they are ready for release. By gradually rolling out features and using feature flags, Netflix can gather user feedback and perform A/B testing to assess the impact and effectiveness of features before full release.
Maintaining Quality and Bug Fixes
Netflix ensures high-quality code through a combination of automated tests, manual testing, and bug bashes. Automated tests provide coverage, but manual testing and bug bashes are essential to catch bugs not captured by automated tests. Prioritizing bug fixes depends on the severity and impact on the business. Critical bugs will take precedence, while minor UI bugs may be prioritized lower if there are more pressing feature development deadlines. Regular bug fixing helps to continuously improve the codebase and maintain a high level of quality.
Navigating a Large Codebase
To navigate a large codebase, Netflix developers make use of tools like the View Debugger to understand the hierarchy of view controllers and identify code paths. They also review open pull requests to gain insights into various components and conventions within the codebase. Creating a mental map and regularly exploring sections of the codebase help to orient developers within the complex structure. Having clear interfaces and responsibilities between different components and modules also aids in understanding and maintaining the codebase.
Creating Modular Code
Netflix emphasizes modularity to enable code exchangeability and easier maintenance. By creating clear boundaries between components and using protocols, developers can swap out underlying implementations and make changes without affecting the entire codebase. Examples of modular components include networking frameworks, commonly used UI components, and more. Keeping code changes small and compact, along with incorporating tests, facilitates code reviews and ensures easier integration into the codebase.
Scaling Codebases for Growth
To prepare codebases for future scaling, smaller teams can focus on creating modular code with clear interfaces and responsibilities. Reducing code dependencies and having multiple team members familiar with different areas of the codebase helps mitigate risks when team members leave. Increasing test coverage and utilizing tools like feature flags provide greater confidence for making changes and prevent regressions. Additionally, implementing continuous delivery practices, such as frequent releases and incremental changes, enable iterative improvements and quick user feedback.
Carola Nitz, iOS developer at Netflix, joins John to discuss how larger iOS development teams typically operate, and how smaller teams can prepare their code bases for future growth. Also, organizing remote conferences, balancing feature development with bug fixing, and much more.
Sponsors
Paw: An advanced API tool for the Mac. Paw is a full-featured HTTP client that lets you test and describe the web APIs that you build or consume. Get started for free, or get a 20% discount on your license, at paw.cloud/sundell.
Bitrise: Fast, stable and highly customizable continuous integration. Automatically build, test and distribute your app on every single commit that you make. Get started for free at bitrise.io/swift.