{"id":4131,"date":"2026-02-04T09:26:29","date_gmt":"2026-02-04T14:26:29","guid":{"rendered":"https:\/\/blogs.mathworks.com\/matlab\/?p=4131"},"modified":"2026-02-04T09:26:29","modified_gmt":"2026-02-04T14:26:29","slug":"when-and-why-to-adopt-software-development-workflows-in-matlab","status":"publish","type":"post","link":"https:\/\/blogs.mathworks.com\/matlab\/2026\/02\/04\/when-and-why-to-adopt-software-development-workflows-in-matlab\/","title":{"rendered":"When and Why to Adopt Software Development Workflows in MATLAB"},"content":{"rendered":"<div class = rtcContent><h2  style = 'margin: 20px 10px 5px 4px; padding: 0px; line-height: 25px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif; font-style: normal; font-size: 20px; font-weight: 700; text-align: left; '><span>TL;DR<\/span><\/h2><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>Michelle Hirsch, MATLAB Fellow and previously head of product for MATLAB, has <\/span><a href = \"https:\/\/github.com\/mathworks\/MATLAB-Software-Workflows-Adoption\/?tab=readme-ov-file\"><span>written a guide for reluctant developers<\/span><\/a><span> detailing which tools (in MATLAB and otherwise) you should consider adopting for various use cases.<\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>If you only take one piece of her advice, I suggest that it is to use Git Version Control; either using <\/span><a href = \"https:\/\/uk.mathworks.com\/help\/matlab\/matlab_prog\/collaborate-using-git-in-matlab.html\"><span>MATLAB's built in, and recently enhanced, git-integration<\/span><\/a><span> or the more hardcore command-line way.<\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>Trust me! Future-you will thank you.<\/span><\/div><h2  style = 'margin: 20px 10px 5px 4px; padding: 0px; line-height: 25px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif; font-style: normal; font-size: 20px; font-weight: 700; text-align: left; '><span>I am a reluctant developer<\/span><\/h2><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>I never wanted to get into software engineering. Way back when I was working on my PhD in physics, what I wanted to do was physics. There were problems I wanted to solve, phenomena to understand and equations to crunch. Learning how to program was a means to an end. All I wanted to do was get the computer to do what I asked, to help solve the physics. <\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>I didn't <\/span><span style=' font-weight: bold;'>want<\/span><span> to learn about version control, unit testing, coding standards or package management but, 26 years after I started that PhD, these are among the things I've found myself learning and using regularly. Not because I wanted to but because I needed to.<\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>I am, and always have been, a <\/span><span style=' font-weight: bold;'>reluctant <\/span><span>developer<\/span><span style=' font-weight: bold;'>. <\/span><\/div><h2  style = 'margin: 20px 10px 5px 4px; padding: 0px; line-height: 25px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif; font-style: normal; font-size: 20px; font-weight: 700; text-align: left; '><span>Drowning in the fire-hose of good advice<\/span><\/h2><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>I didn't learn git, for example, because I was fascinated by distributed version control systems based on directed acyclic graphs. I learned git because I had reached a point in my programming journey where I needed it; desperately. I had many problems for which git was the obvious solution but it was a long time before I took the plunge and actually learned it.<\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>Why did it take me so long to start using something I so obviously needed?<\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>I remember being overwhelmed with advice from 'proper' software developers. Your problem, they told me, is that you're using the wrong programming language on the wrong operating system and employing the wrong design patterns. You aren't using version control, unit testing, release management or code coverage tools. Your numerics suck, the code is inefficient and you're using the wrong editor. Oh, and the way you name your variables is laughable! <\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>I wish I could tell you that these were my only problems. They were not! <\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>For any one of the many things that I was apparently doing wrong, there was a lot of conflicting advice on what 'right' looked like. <\/span><\/div><h2  style = 'margin: 20px 10px 5px 4px; padding: 0px; line-height: 25px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif; font-style: normal; font-size: 20px; font-weight: 700; text-align: left; '><span>Advice from one reluctant developer to another<\/span><\/h2><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>Like me, MathWorks' Michelle Hirsch was a reluctant developer too. She has spent most of her career designing tools to help us reluctant developers do what we need to get done. For many years she was head of product at MathWorks and is now a MATLAB Fellow and Programming Interface Design Coach.<\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span> <\/span><img class = \"imageNode\" src = \"http:\/\/blogs.mathworks.com\/matlab\/files\/2026\/02\/reluctantDeveloper_1.png\" width = \"253\" height = \"253\" alt = \"\" style = \"vertical-align: baseline; width: 253px; height: 253px;\"><\/img><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>Michelle knows the MATLAB ecosystem better than almost anyone and one of her latest projects is to offer some advice on which MATLAB development tools you might consider using at various stages of your development life.<\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>I like to think of it as 'Just Enough Software Engineering to Perform'<\/span><\/div><h2  style = 'margin: 20px 10px 5px 4px; padding: 0px; line-height: 25px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif; font-style: normal; font-size: 20px; font-weight: 700; text-align: left; '><span>The software development tools you need, when you need them<\/span><\/h2><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>Michelle has broken her guide down into 3 different use cases: <\/span><\/div><ul  style = 'margin: 10px 0px 20px; padding-left: 0px; font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif; font-size: 14px; '><li  style = 'margin-left: 56px; line-height: 21px; min-height: 0px; text-align: left; white-space: pre-wrap; '><a href = \"https:\/\/github.com\/mathworks\/MATLAB-Software-Workflows-Adoption\/blob\/main\/Reproducible_Software.md\"><span>Reproducible Software<\/span><\/a><span>: Ensure that code to solve a specific problem consistently runs and produces the same result<\/span><\/li><li  style = 'margin-left: 56px; line-height: 21px; min-height: 0px; text-align: left; white-space: pre-wrap; '><a href = \"https:\/\/github.com\/mathworks\/MATLAB-Software-Workflows-Adoption\/blob\/main\/Reusable_Software.md\"><span>Reusable Software<\/span><\/a><span>: Enable reuse across contexts and users<\/span><\/li><li  style = 'margin-left: 56px; line-height: 21px; min-height: 0px; text-align: left; white-space: pre-wrap; '><a href = \"https:\/\/github.com\/mathworks\/MATLAB-Software-Workflows-Adoption\/blob\/main\/Production_Software.md\"><span>Production Software<\/span><\/a><span>: Reliably deliver a release whenever needed<\/span><\/li><\/ul><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>In each case, she discusses the various challenges you'll face, suggested solutions and how MATLAB can help. Many of the tools and resources such as <\/span><a href = \"https:\/\/uk.mathworks.com\/help\/matlab\/ref\/dependencyanalyzer-app.html\"><span>Dependency Analyzer<\/span><\/a><span>, <\/span><a href = \"https:\/\/uk.mathworks.com\/help\/matlab\/matlab_prog\/overview-of-matlab-build-tool.html\"><span>Build tool<\/span><\/a><span> and <\/span><a href = \"https:\/\/github.com\/mathworks\/MATLAB-Coding-Guidelines\/tree\/main\"><span>MATLAB Coding Guidelines<\/span><\/a><span> are either quite new or recently significantly enhanced. As such, even advanced MATLAB users will find something useful here.<\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>What I find particularly useful about Michelle's advice is that I don't need to follow all of it. I can pick and choose depending on what problems I currently have and how much time I have to invest.  <\/span><\/div><h2  style = 'margin: 20px 10px 5px 4px; padding: 0px; line-height: 25px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif; font-style: normal; font-size: 20px; font-weight: 700; text-align: left; '><span>Over to you<\/span><\/h2><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>Are you a reluctant developer? Do these use cases resonate with you? Do you agree with all of Michelle's advice? Was there something we missed? Let us know in the comments! <\/span><\/div>\r\n<\/div><script type=\"text\/javascript\">var css = ''; var head = document.head || document.getElementsByTagName('head')[0], style = document.createElement('style'); head.appendChild(style); style.type = 'text\/css'; if (style.styleSheet){ style.styleSheet.cssText = css; } else { style.appendChild(document.createTextNode(css)); }<\/script>","protected":false},"excerpt":{"rendered":"<div class=\"overview-image\"><img src=\"https:\/\/blogs.mathworks.com\/matlab\/files\/2026\/02\/reluctantDeveloper_1.png\" class=\"img-responsive attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"\" decoding=\"async\" loading=\"lazy\" \/><\/div><p>TL;DRMichelle Hirsch, MATLAB Fellow and previously head of product for MATLAB, has written a guide for reluctant developers detailing which tools (in MATLAB and otherwise) you should consider... <a class=\"read-more\" href=\"https:\/\/blogs.mathworks.com\/matlab\/2026\/02\/04\/when-and-why-to-adopt-software-development-workflows-in-matlab\/\">read more >><\/a><\/p>","protected":false},"author":176,"featured_media":4129,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[68,17,138,85],"tags":[],"_links":{"self":[{"href":"https:\/\/blogs.mathworks.com\/matlab\/wp-json\/wp\/v2\/posts\/4131"}],"collection":[{"href":"https:\/\/blogs.mathworks.com\/matlab\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.mathworks.com\/matlab\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/matlab\/wp-json\/wp\/v2\/users\/176"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/matlab\/wp-json\/wp\/v2\/comments?post=4131"}],"version-history":[{"count":1,"href":"https:\/\/blogs.mathworks.com\/matlab\/wp-json\/wp\/v2\/posts\/4131\/revisions"}],"predecessor-version":[{"id":4132,"href":"https:\/\/blogs.mathworks.com\/matlab\/wp-json\/wp\/v2\/posts\/4131\/revisions\/4132"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/matlab\/wp-json\/wp\/v2\/media\/4129"}],"wp:attachment":[{"href":"https:\/\/blogs.mathworks.com\/matlab\/wp-json\/wp\/v2\/media?parent=4131"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/matlab\/wp-json\/wp\/v2\/categories?post=4131"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/matlab\/wp-json\/wp\/v2\/tags?post=4131"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}