Learning Numerical Software Development at NAG
My name is Philip Maybank and I came to work at NAG for 6 months on placement from PhD study in Statistics at the University of Reading. During my PhD I did a lot of coding / programming to generate results for my thesis (i.e. for my own use). In doing a placement at NAG I wanted to learn how to write code that can be used easily and effectively by other people. I also wanted to learn about how numerical algorithms are used in industry. NAG proved to be an ideal place for me to pursue these goals.
I worked as a Numerical Software Developer in NAG’s Oxford office. I was given a fairly broad brief to explore how algorithms developed in a nascent field called Randomized Numerical Linear Algebra (RNLA) could be incorporated into the NAG Library. My work was split into two phases; firstly, reviewing the academic literature and identifying the most important / useful algorithms, then writing and testing code for the NAG Library.
Towards the end of my placement I also became interested in writing software for Bayesian computation, the area of Statistics that I am specializing in for my PhD. Even though my placement is over now I am still exploring how NAG products and the skills I learnt at NAG could contribute to better software for Monte Carlo sampling.
In terms of the working environment I found a real pleasure in being able to focus on tasks without interruption and to get really stuck into moderately lengthy projects. There were very few meetings or urgent emails to reply to. At the same time, the other developers were very helpful whenever I got stuck with something – which was frequently – whether my problem was understanding matrix factorization, debugging code, or learning about the idiosyncrasies of Fortran.
I also appreciated the healthy work-life balance that is fostered at NAG, and the time that is set aside for enjoying people’s company, for example, at lunch, the weekly coffee and cake and the occasional pub trip.