{"id":762,"date":"2023-09-12T10:07:00","date_gmt":"2023-09-12T10:07:00","guid":{"rendered":"https:\/\/fde.cat\/index.php\/2023\/09\/12\/slack-behind-the-scenes-overcoming-key-challenges-to-craft-a-seamless-mobile-app\/"},"modified":"2023-09-12T10:07:00","modified_gmt":"2023-09-12T10:07:00","slug":"slack-behind-the-scenes-overcoming-key-challenges-to-craft-a-seamless-mobile-app","status":"publish","type":"post","link":"https:\/\/fde.cat\/index.php\/2023\/09\/12\/slack-behind-the-scenes-overcoming-key-challenges-to-craft-a-seamless-mobile-app\/","title":{"rendered":"Slack Behind the Scenes: Overcoming Key Challenges to Craft a Seamless Mobile App"},"content":{"rendered":"<p><em>By Tracy Stampfli and Scott Nyberg<\/em><\/p>\n<p>In our \u201cEngineering Energizers\u201d Q&amp;A series, we examine the professional life experiences that have shaped Salesforce Engineering leaders. Meet Tracy Stampfli, a Principal Software Engineer for Slack at Salesforce. Tracy works behind the scenes on Slack\u2019s mobile infrastructure team \u2014 an elite group of innovative engineers who ensure that <a href=\"https:\/\/slack.com\/trials?remote_promo=f4d95f0b&amp;d=7013y000002pzGQAAY&amp;nc=7013y000002q165AAA&amp;utm_source=google&amp;utm_medium=paid_search&amp;utm_campaign=ppc_google_amer_en_brand_selfserve_discount&amp;utm_content=slack-pg-ss-all-us-brand_7013y000002pzGQAAY&amp;utm_term=Slack_Exact_._slack_._e_._c_._611662283461&amp;gad=1&amp;gclid=CjwKCAjwv8qkBhAnEiwAkY-ahuqyWXaL8EGBxeJV7tUGmipX-qmYHl9w1vlTROKqtmSk5dKbwXc9mxoCmw4QAvD_BwE&amp;gclsrc=aw.ds&amp;_gl=1*wfng6g*_ga*MTY1MjE3MzQ3MS4xNjY3MjQzMDYz*_ga_HPRCE01J19*MTY5NDgxMzkyOC40NjcuMS4xNjk0ODE0MjcwLjAuMC4w\">Slack<\/a> users enjoy a seamless and high-quality mobile app experience.<\/p>\n<p>Read on to learn how Tracy\u2019s team addresses key engineering challenges, drives feature development, and continuously improves the app\u2019s performance.<\/p>\n<p><strong>How would you describe your team\u2019s mission?<\/strong><\/p>\n<p>My team supports Slack\u2019s expansive mobile app development ecosystem. We build common core components of mobile apps, which spans data synching, networking, and UI components.<\/p>\n<p>Additionally, we\u2019re charged with maintaining the overall app architecture and driving quality and reliability across Slack features.<\/p>\n<p>Ultimately, we serve as Slack\u2019s infrastructure backbone, equipping multiple Slack feature teams with shared resources \u2014 ensuring products are built in a consistent fashion.<\/p>\n<p><em>Tracy explains what keeps her working on Slack at Salesforce<\/em>.<\/p>\n<p><strong>What\u2019s a critical problem that our customers face and how does your team address that?<\/strong><\/p>\n<p>While desktop Slack users enjoy stable Wi-Fi connectivity for long periods, mobile users may be subject to brief sessions, stemming from network connectivity issues as users may be on the move \u2014 switching between cellular networks or losing signals in challenging areas like subways. For these mobile use cases, Slack must be able to efficiently fetch the data that users need within a short period of time.<\/p>\n<p>To address this challenge, my team is enhancing Slack\u2019s ability to efficiently and seamlessly fetch key data under low or intermittent network connectivity conditions. For example, one technique we employ is prioritizing individual API requests, which ensures the most crucial operations take precedence. As a result, as data needs to be fetched, the most critical information is obtained first, improving the user\u2019s experience.<\/p>\n<p>Additionally, we have innovated ways for ensuring that cached data remains constantly updated. This reduces unnecessary data fetching when connectivity may be an issue.<\/p>\n<p><em>Example of measuring whether data returned from APIs is identical to cached data.<\/em><\/p>\n<p><strong>What\u2019s the secret to keeping the data updated?<\/strong><\/p>\n<p>We update the data by developing ways to \u201cversion\u201d objects in Slack. This enables the client to validate with the server if the version of the object it has cached is the most up to date.<\/p>\n<p>How we do the versioning varies by the type of object, requiring work on both client and server to accurately calculate a version and check it. Ultimately, we have seen some really great reductions in data usage.<\/p>\n<p><strong>What was a key technical challenge your team has overcome?<\/strong><\/p>\n<p>My team recognized that our mobile development efforts were saddled with technical debt, lacked consistency when developing features, and often did not meet product roadmap deadlines. To overcome these issues, we led an effort on comprehensively modernizing and revamping our mobile clients, which involved:<\/p>\n<p>Introducing major changes to our codebase<\/p>\n<p>Reducing legacy technical debt<\/p>\n<p><a href=\"https:\/\/slack.engineering\/stabilize-modularize-modernize-scaling-slacks-mobile-codebases\/\">Launching a new feature architecture on iOS<\/a><\/p>\n<p>While we faced challenges rolling out this plan, it was very successful as it strengthened our ability to build features across all our clients and drive faster mobile development, especially on iOS.<\/p>\n<p><em>Tracy shares why Slack\u2019s engineering culture is unique.<\/em><\/p>\n<p><strong>What risks did your team face in implementing your solution for the customer?<\/strong><\/p>\n<p>A primary risk is the high stakes associated with making changes to an app, where disrupting any of its critical functionality, such as networking, could result in serious consequences. In fact, doing so could create a cascading ripple effect across the entire application. We prevent this by leveraging strategies like feature flagging or change toggling, which allows us to control client-side flags from the server. And, if issues arise, we rapidly roll back changes and handle them before customers are impacted.<\/p>\n<p>However, despite these precautions, no process is perfect, which may lead to occasional errors. To deal with these edge cases, we perform hotfixes, especially for production patches that must be implemented before an app\u2019s next version.<\/p>\n<p>Our process also involves a deep dive into the issue itself \u2014 determining exactly what went wrong, why the issue wasn\u2019t caught earlier, and if additional testing could have prevented the issue. This review process remains a focal point for ensuring continuous improvement.<\/p>\n<p><strong>Can you explain how your team drives scale in your organization?<\/strong><\/p>\n<p>Our infrastructure team plays a critical role in managing extreme cases of scale to satisfy increasing demands of our customers, who constantly increase in number. For example, this could include supporting teams using 80,000 custom emoji or users in 20,000 channels, all while ensuring a satisfying customer experience.<\/p>\n<p>Additionally, the mobile engineering team has expanded to over 120 engineers, which introduced scaling challenges of managing a large codebase. Consequently, we must constantly pivot to ensure the codebase remains manageable \u2014 ensuring it supports a growing team in concert with an increasing number of changes being made.<\/p>\n<p><strong>What\u2019s an example of a component you recently built that you are really excited about?<\/strong><\/p>\n<p>Recently, a Slack feature team shared with us that they wanted their feature to function optimally \u2014 enabling users to save data \u2014 even when operating offline.<\/p>\n<p>Anticipating other teams would soon have this need, we created a common component for data preservation and synchronization \u2014 eliminating the need for other teams to independently create their own solution. Any feature can now integrate with that component, indicating which actions should be saved and applied once the app regains connectivity. Consequently, this enhanced the user experience while ensuring code shareability across the feature team organization.<\/p>\n<h3 class=\"wp-block-heading\">Learn more<\/h3>\n<p>Want more Slack stories? <a href=\"https:\/\/engineering.salesforce.com\/iterating-towards-perfection-designing-slack-huddles-new-video-experience\/\">Check this blog out<\/a> to learn how Slack engineers build new features like Slack huddles.<\/p>\n<p>Stay connected \u2014 join our <a href=\"https:\/\/careers.mail.salesforce.com\/w2?cid=7017y00000CRDS7AAP\">Talent Community<\/a>!<\/p>\n<p><a href=\"https:\/\/www.salesforce.com\/company\/careers\/teams\/tech-and-product\/?d=cta-tms-tp-2\">Check out our Technology and Product teams<\/a> to learn how you can get involved.<\/p>\n<p>The post <a href=\"https:\/\/engineering.salesforce.com\/slack-behind-the-scenes-overcoming-key-challenges-to-craft-a-seamless-mobile-app\/\">Slack Behind the Scenes: Overcoming Key Challenges to Craft a Seamless Mobile App<\/a> appeared first on <a href=\"https:\/\/engineering.salesforce.com\/\">Salesforce Engineering Blog<\/a>.<\/p>\n<p><a href=\"https:\/\/engineering.salesforce.com\/slack-behind-the-scenes-overcoming-key-challenges-to-craft-a-seamless-mobile-app\/\" target=\"_blank\" class=\"feedzy-rss-link-icon\" rel=\"noopener\">Read More<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>By Tracy Stampfli and Scott Nyberg In our \u201cEngineering Energizers\u201d Q&amp;A series, we examine the professional life experiences that have shaped Salesforce Engineering leaders. Meet Tracy Stampfli, a Principal Software Engineer for Slack at Salesforce. Tracy works behind the scenes on Slack\u2019s mobile infrastructure team \u2014 an elite group of innovative engineers who ensure that&hellip; <a class=\"more-link\" href=\"https:\/\/fde.cat\/index.php\/2023\/09\/12\/slack-behind-the-scenes-overcoming-key-challenges-to-craft-a-seamless-mobile-app\/\">Continue reading <span class=\"screen-reader-text\">Slack Behind the Scenes: Overcoming Key Challenges to Craft a Seamless Mobile App<\/span><\/a><\/p>\n","protected":false},"author":0,"featured_media":0,"comment_status":"","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":"","footnotes":""},"categories":[7],"tags":[],"class_list":["post-762","post","type-post","status-publish","format-standard","hentry","category-technology","entry"],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":738,"url":"https:\/\/fde.cat\/index.php\/2023\/07\/25\/iterating-towards-perfection-designing-slack-huddles-new-video-experience\/","url_meta":{"origin":762,"position":0},"title":"Iterating Towards Perfection: Designing Slack Huddles\u2019 New Video Experience","date":"July 25, 2023","format":false,"excerpt":"By Genevieve Cuevas and Scott Nyberg In our \u201cEngineering Energizers\u201d Q&A series, we examine the professional life experiences that have shaped Salesforce Engineering leaders. Meet Genevieve Cuevas, a Senior Director of Mobile Software Engineering for Slack at Salesforce. In her role, Genevieve leads Slack\u2019s Virtual HQ team, where she innovates\u2026","rel":"","context":"In &quot;Technology&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":745,"url":"https:\/\/fde.cat\/index.php\/2023\/08\/08\/what-is-slacks-secret-for-enhancing-accessibility-to-empower-people-with-disabilities\/","url_meta":{"origin":762,"position":1},"title":"What is Slack\u2019s Secret for Enhancing Accessibility to Empower People with Disabilities?","date":"August 8, 2023","format":false,"excerpt":"By Sommer Panage and Scott Nyberg. In our \u201cEngineering Energizers\u201d Q&A series, we examine the professional life experiences that have shaped Salesforce Engineering leaders. Meet Sommer Panage, a Senior Manager of Software Engineering for Slack at Salesforce, where she focuses on accessibility initiatives. Sommer and her team maximize the accessibility\u2026","rel":"","context":"In &quot;Technology&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":792,"url":"https:\/\/fde.cat\/index.php\/2023\/08\/08\/what-is-slacks-secret-for-enhancing-accessibility-to-empower-people-with-disabilities-2\/","url_meta":{"origin":762,"position":2},"title":"What is Slack\u2019s Secret for Enhancing Accessibility to Empower People with Disabilities?","date":"August 8, 2023","format":false,"excerpt":"By Sommer Panage and Scott Nyberg. In our \u201cEngineering Energizers\u201d Q&A series, we examine the professional life experiences that have shaped Salesforce Engineering leaders. Meet Sommer Panage, a Senior Manager of Software Engineering for Slack at Salesforce, where she focuses on accessibility initiatives. Sommer and her team maximize the accessibility\u2026","rel":"","context":"In &quot;Technology&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":793,"url":"https:\/\/fde.cat\/index.php\/2023\/11\/14\/future-driven-dev-empowerment-slack-svp-tackles-new-ai-and-automation-challenges-head-on\/","url_meta":{"origin":762,"position":3},"title":"Future-Driven Dev Empowerment: Slack SVP Tackles New AI and Automation Challenges Head-On","date":"November 14, 2023","format":false,"excerpt":"By Rukmini Reddy and Scott Nyberg In our \u201cEngineering Energizers\u201d Q&A series, we examine the professional journeys that have shaped Salesforce Engineering leaders. Meet Rukmini Reddy, Senior Vice President of Software Engineering for the Slack platform. Her team\u2019s goal is to empower developers, enhance productivity, and push the envelope of\u2026","rel":"","context":"In &quot;Technology&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":590,"url":"https:\/\/fde.cat\/index.php\/2022\/06\/02\/meet-the-team-of-problem-solvers-pushing-boundaries-to-see-how-massively-we-can-scale\/","url_meta":{"origin":762,"position":4},"title":"Meet the team of problem solvers pushing boundaries to see how massively we can scale.","date":"June 2, 2022","format":false,"excerpt":"Welcome to the new hub for all things Salesforce Engineering! This site is where you can get a behind-the-scenes look at how we build business-critical software at scale, take a peek at how we contribute to the open source community, meet some of our technical employees, and learn more about\u2026","rel":"","context":"In &quot;Technology&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":729,"url":"https:\/\/fde.cat\/index.php\/2023\/06\/27\/simplifying-oauth-2-0-how-slacks-new-external-authentication-feature-boosts-developer-productivity\/","url_meta":{"origin":762,"position":5},"title":"Simplifying OAuth 2.0: How Slack\u2019s New External Authentication Feature Boosts Developer Productivity","date":"June 27, 2023","format":false,"excerpt":"In our \u201cEngineering Energizers\u201d Q&A series, we examine the professional journeys that have shaped Salesforce Engineering leaders. Say hello to Nupur Goyal, Staff Software Engineer at Slack. Nupur\u2019s core platform team at Slack helps developers increase their productivity and efficiency \u2014 empowering them to create cutting-edge applications that integrate with\u2026","rel":"","context":"In &quot;Technology&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/fde.cat\/index.php\/wp-json\/wp\/v2\/posts\/762","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fde.cat\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fde.cat\/index.php\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/fde.cat\/index.php\/wp-json\/wp\/v2\/comments?post=762"}],"version-history":[{"count":0,"href":"https:\/\/fde.cat\/index.php\/wp-json\/wp\/v2\/posts\/762\/revisions"}],"wp:attachment":[{"href":"https:\/\/fde.cat\/index.php\/wp-json\/wp\/v2\/media?parent=762"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fde.cat\/index.php\/wp-json\/wp\/v2\/categories?post=762"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fde.cat\/index.php\/wp-json\/wp\/v2\/tags?post=762"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}