Software engineering in practice
This is part of a series of talks on good coding practice and related topics Becky Arnold has organised as part of her Fellowship plan.
Jos Martin, senior engineering manager at MathWorks, gave a talk on software engineering in practice on the 27th of June at the University of Sheffield. I think there’s much we can learn from our colleagues in industry about software development so I was delighted to be able to arrange this talk with the help of Mike Croucher, who put me in touch with Jos. Around 50 people attended and many remained for nearly an hour after for further discussion with each other and Jos.
In his talk, Jos discussed how MathWorks develop and extend MATLAB and the processes they use to develop and test it. He also talked about how quality, time and features of code are a trade off, and encouraged careful thought about what compromises can and cannot be made at the start and throughout a project. That way we can do our best to ensure that the trade off is at least one in our favour.
He also stressed the importance of carefully choosing names, be they variable names, function names, module names etc., to make them as clear as possible. To aid with this, he advocated using the Ronseal approach to naming: “Does exactly what it says on the tin!”.
Further to this, he spoke about trying to minimise surprises in your code for anyone reading it, and how using the obvious approach can make the code simpler and cleaner which makes it easier to maintain. This is particularly relevant in industry where many people may work on the same code, but I can also see advantages to this in academia and in my own individual projects in the future.
He discussed how he runs code review in his group at MathWorks. He makes it mandatory to review any any code that is to be added to the source code and holds the reviewer accountable for any bugs in order to incentivise thorough reviewing. Jos and I also had a useful conversation about code review and the challenges of applying it in academia. A central difficulty I have found in this is that it takes as much time for academics to explain the issue the code is solving as how the code is solving it, which increases the time commitment required. Jos suggested partnering people on reviewing each others projects long-term in order to mitigate this issue.
The talk was highly interactive which promoted discussion, as well as being extremely energetic and funny. Jos said “if nothing else I aim to entertain.” and he certainly succeeded in doing that!
The next talk in this series is on the other side of summer – Rob Baxter, from EPCC, will be giving a talk on big data and machine learning. So if you’re near Sheffield on the 12th of September, come on by. Further info and info on other talks in the series can be found here.