bio_img_matlab

The MATLAB Blog

Practical Advice for People on the Leading Edge

When and Why to Adopt Software Development Workflows in MATLAB

TL;DR

Michelle 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 adopting for various use cases.
If you only take one piece of her advice, I suggest that it is to use Git Version Control; either using MATLAB's built in, and recently enhanced, git-integration or the more hardcore command-line way.
Trust me! Future-you will thank you.

I am a reluctant developer

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.
I didn't want 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.
I am, and always have been, a reluctant developer.

Drowning in the fire-hose of good advice

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.
Why did it take me so long to start using something I so obviously needed?
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!
I wish I could tell you that these were my only problems. They were not!
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.

Advice from one reluctant developer to another

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.
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.
I like to think of it as 'Just Enough Software Engineering to Perform'

The software development tools you need, when you need them

Michelle has broken her guide down into 3 different use cases:
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 Dependency Analyzer, Build tool and MATLAB Coding Guidelines are either quite new or recently significantly enhanced. As such, even advanced MATLAB users will find something useful here.
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.

Over to you

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!
|
  • print

Comments

To leave a comment, please click here to sign in to your MathWorks Account or create a new one.