{"id":475,"date":"2017-09-20T04:15:54","date_gmt":"2017-09-20T12:15:54","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/mobilecenter\/?p=475"},"modified":"2019-02-16T15:30:44","modified_gmt":"2019-02-16T22:30:44","slug":"guest-post-a-mobile-devops-retrospective-part-i-150-apps-later","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/appcenter\/guest-post-a-mobile-devops-retrospective-part-i-150-apps-later\/","title":{"rendered":"Guest Blog | A Mobile DevOps Retrospective Part I: 150+ Apps Later"},"content":{"rendered":"<p><em>Visual Studio Mobile Center is now Visual Studio App Center. <a href=\"https:\/\/blogs.msdn.microsoft.com\/vsappcenter\/introducing-visual-studio-app-center\/\" rel=\"noopener\" target=\"_blank\"><em>Learn more here<\/em><\/a>.<\/em>\n&nbsp;\n<em>This is a special guest post from <a target=\"_blank\" href=\"https:\/\/twitter.com\/gshackles\" rel=\"noopener\"><em>Greg Shackles<\/em><\/a>, Principal Engineer at <a target=\"_blank\" href=\"https:\/\/www.olo.com\/\" rel=\"noopener\"><em>Olo<\/em><\/a>.<\/em><\/p>\n<p>It\u2019s hard to go more than a few minutes before seeing some mention of \u201cDevOps,\u201d whether it be in an article, a conference talk, or a job spec. It\u2019s taken the development world by storm, with every company wanting to say they\u2019re doing it and many hiring dedicated \u201cDevOps engineers.\u201d But, what <em>is<\/em> DevOps? And why should you care?<\/p>\n<p>As a developer, understanding DevOps fundamentals and how the end-to-end process fits together has made it easier for me to put it all into practice. Now that I\u2019ve been going down this road for a while, I\u2019m confident that it\u2019s made me a much better developer and product owner. To give you the same foundation, below is a quick background into what DevOps really is and its role in mobile development.<\/p>\n<p>I love spending my time writing code and building features. At Olo, we build and deliver consumer-facing apps for 150+ restaurant brands, so I won\u2019t stray far into the theoretical. In future posts, I\u2019ll dig into my experiences building out our development pipelines over the years, so you can learn from our mistakes and successes to create your own rock-solid pipeline.<\/p>\n<h3>First, what is DevOps and Shifting\u00a0Left?<\/h3>\n<p>Defining DevOps gets murky, since the conversation all too often turns to tooling, making it easy to mischaracterize the whole movement as simply buying and using a set of tools, or hiring dedicated engineers to \u201cbuild DevOps.\u201d In reality, this misses the spirit and point of DevOps: it\u2019s not about tooling at all, it\u2019s about <em>people<\/em>.<\/p>\n<p>DevOps has four core tenets: culture, automation, measurement, and sharing. These combine and feed into one another, forming a continuous process that expands far beyond any specific tools. Ultimately, it\u2019s about shaping your development culture to embrace automation, measurement, and sharing throughout the lifecycle of your software.<\/p>\n<p>Some organizations call this \u201cshifting left.\u201d Where teams traditionally leave automation and testing until the end of the development process, \u201cshifting left\u201d moves these steps to the beginning. This means testing early and often, so you start each new feature with a solid codebase, not building on top of faulty code, and your team can be more agile. In other words, you\u2019ll focus on the <em>real<\/em> problems, confident that you have proper feedback loops to know how things are going and catch any issues before you run into major problems.<\/p>\n<h3>Why <em>Mobile<\/em> DevOps?<\/h3>\n<p>DevOps\u2014culture, automation, measurement, and sharing&amp;dash;applies to all software development, but <strong>mobile app development amplifies its importance<\/strong>. We all know user expectations are high, and one bad experience can quickly turn an active user into an uninstall. Fragmentation further complicates things: there are thousands of different devices out there, running a myriad of operating systems and versions of those operating systems\u00a0, and you need to make sure your app runs well for any user on any device.<\/p>\n<p>For whatever itch your app is trying to scratch, there\u2019s no doubt numerous others trying to do the same. How do you keep your users from looking for them? DevOps.<\/p>\n<p>Publishing even a single app is hard. At Olo, we build white-labeled ordering apps for restaurants and manage <em>a lot<\/em> of apps. DevOps is critical for us, and automation is absolutely essential. When that new version of iOS or Android comes around each year and we need to release updates, the last thing we want is to have to process each one individually from build to release.<\/p>\n<p>DevOps isn\u2019t a process where you install a tool and check off a \u201cdo DevOps\u201d box. Instead, it\u2019s a process that you chip away at, make mistakes, learn, and improve iteratively over time. It\u2019s easy to feel overwhelmed by everything there is to learn and set up. Rest assured that it took us awhile to get our pipeline where it is today; even now, there\u2019s no shortage of improvements that we\u2019d like to make.<\/p>\n<p><img decoding=\"async\" src=\"\" alt=\"DevOps Processes\" width=\"800\" class=\"aligncenter size-full wp-image-1066\" \/><\/p>\n<p>While we still have room to grow, I can cite countless tangible benefits that we\u2019ve experienced over the years from following these practices. We deliver apps more quickly and easily, and with each release, we have a level of stability and confidence that we couldn\u2019t have achieved before. We\u2019re more collaborative since the entire team is involved throughout the development lifecycle, resulting in a shared sense of ownership. Beyond our speed and overall team culture, we\u2019ve seen something else\u2014<strong>a notable positive impact on our user reviews and user engagement metrics<\/strong>.<\/p>\n<p><img decoding=\"async\" src=\"\" alt=\"\" width=\"800\" class=\"aligncenter size-large wp-image-1055\" \/><\/p>\n<p>In <a href=\"https:\/\/blogs.msdn.microsoft.com\/vsappcenter\/guest-blog-a-mobile-devops-retrospective-part-ii-automation-with-visual-studio-mobile-center\/\">my next post<\/a>, I\u2019ll focus on automation, showing you how we\u2019ve automated our development and deployment processes to set ourselves up for success.\n&nbsp;\n&nbsp;\n<em>Check out <a href=\"https:\/\/blogs.msdn.microsoft.com\/vsappcenter\/guest-blog-a-mobile-devops-retrospective-part-ii-automation-with-visual-studio-mobile-center\/\"><em>Part II of this series here<\/em><\/a>.<\/em><\/p>\n<p><em>If you haven\u2019t already, <a target=\"_blank\" href=\"https:\/\/mobile.azure.com\/login\" rel=\"noopener\"><strong><em>create your Visual Studio Mobile Center account<\/em><\/strong><\/a>, connect your first app, and start shipping better apps now.<\/em><\/p>\n<p><em>Have an account? <a target=\"_blank\" href=\"https:\/\/mobile.azure.com\/login\" rel=\"noopener\"><strong><em>Log in<\/em><\/strong><\/a> and let us know what you\u2019re working on!<\/em><\/p>\n<p><em><strong>About the Author<\/strong><\/em><\/p>\n<p><em>Greg Shackles is an experienced developer, Microsoft MVP, Xamarin MVP, and spends his days as Principal Engineer at <a target=\"_blank\" href=\"http:\/\/www.olo.com\/\" rel=\"noopener\"><em>Olo<\/em><\/a>. When he\u2019s not coding, he hosts the <a target=\"_blank\" href=\"http:\/\/gonemobile.io\/\" rel=\"noopener\"><em>Gone Mobile<\/em><\/a> podcast, organizes the <a target=\"_blank\" href=\"http:\/\/www.meetup.com\/nycmobiledev\/\" rel=\"noopener\"><em>NYC Mobile\u00a0.NET Developers Group<\/em><\/a>, and he wrote <a target=\"_blank\" href=\"http:\/\/shop.oreilly.com\/product\/0636920024002.do\" rel=\"noopener\"><em>Mobile Development with C#<\/em><\/a> to help developers use their existing skills to create native mobile apps.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Visual Studio Mobile Center is now Visual Studio App Center. Learn more here. &nbsp; This is a special guest post from Greg Shackles, Principal Engineer at Olo. It\u2019s hard to go more than a few minutes before seeing some mention of \u201cDevOps,\u201d whether it be in an article, a conference talk, or a job spec. [&hellip;]<\/p>\n","protected":false},"author":42,"featured_media":38034,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[16],"tags":[10],"class_list":["post-475","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mobiledev","tag-guest-post"],"acf":[],"blog_post_summary":"<p>Visual Studio Mobile Center is now Visual Studio App Center. Learn more here. &nbsp; This is a special guest post from Greg Shackles, Principal Engineer at Olo. It\u2019s hard to go more than a few minutes before seeing some mention of \u201cDevOps,\u201d whether it be in an article, a conference talk, or a job spec. [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/appcenter\/wp-json\/wp\/v2\/posts\/475","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/appcenter\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/appcenter\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/appcenter\/wp-json\/wp\/v2\/users\/42"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/appcenter\/wp-json\/wp\/v2\/comments?post=475"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/appcenter\/wp-json\/wp\/v2\/posts\/475\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/appcenter\/wp-json\/wp\/v2\/media\/38034"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/appcenter\/wp-json\/wp\/v2\/media?parent=475"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/appcenter\/wp-json\/wp\/v2\/categories?post=475"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/appcenter\/wp-json\/wp\/v2\/tags?post=475"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}