Keith Grant


I have worked at Canon Medical Research Europe (CMRE), formally known as Toshiba Medical Visualisation Systems Europe (TMVS), for almost 8 years. In this time, I have moved from Graduate Software Engineer to Acting Software Team Lead.

At CMRE I Have worked on both framework and application teams, with the projects being a mix of legacy and new codebases. Primarily the work has been in C++, however there has also been a fair amount of JavaScript, and more recently I have been spending more and more time with Typescript and other Web Technologies.

Working in the field of Medical Imaging has required a good understanding of 3D mathematics, performance issues and the ability to create stable, testable and well documented code to meet various international regulatory requirements.

Joining an existing long running project, I have helped the team to a more agile approach to working. Migrating the team to modern tools, which allow a more agile project process to minimize overhead for developers, and improved visibility of our work for customers.

As well as continuing with actual development, the move to Senior Software Engineer allowed me to participate more in high level discussions and to take more responsibility for specific areas of the application. As well as providing me with the opportunity to influence wider design decisions, it also provioded the opportunity to be a source of guidance and support for the junior engineers working with me.

Working in medical imaging, every step of application development has to take into consideration the various regulatory requirements of the target markets. This leads to a very structured approach to software development which values testability and traceability so that we can be confident that our software is suitable for use without having a negative impact on patient care. Moving from framework to application development provided an interesting contrast in priorities.

My first role at TMVSE was in the Framework support and maintenance team, where I provided support to our customers in Japan. The work on this team varied a great deal. The codebase was very large and had a lot of legacy code in it. Working on a such a large and complex codebase straight out of University was daunting, but also enjoyable. The team was small enough that every had to pull their weight, so I was very quickly getting involved in fixing complex bugs, and adding new features. However the rest of the team were also very supportive, and were always willing to talk over code changes, and discuss different approaches. The example set by my teammates has really stuck with me, and has greatly influenced my approach to working with others up to the present day.

I spent a long time working in kitchens, starting as a dishwasher and then moving on to working as a Chef. Starting from the bottom has really helped shape the way I work even after moving to software development. I understand the importance of teamwork, and how if people work together well then everyone wins. No one person is more important than the goal you are working towards together. If you want to lead a team, then you have to bring that team with you to get where you want to go. Even in the notoriousiously fast-paced, high stress environment of a busy kitchen, the best teams I was a part of were those that worked together towards the common goal. As my career progressed, I found the parts I enjoyed most were the opportunities to mentor the younger members of staff, and to pass on the skills and knowledge I had learnt. Even now after being out of the industry for nearly 10 years, the thing I am most proud of is the successes of the young people I helped to train.

Atlassian Tools (Confluence/Jira)

I have mainly worked in C++, with a growing use of JavaScript and TypeScript over the last few years. However I have also used a number of other languages such as Python, Groovy, Perl and C# when necessary. I would not claim to be an expert in any of these, but I do feel that a good programmer should be able to turn their hand to most languages, and select the right language for the problem they are trying to solve.

I have spent a lot of time in my role as Acting Software Team Lead modernising the teams process, and a big part of this was switching to using Jira/Confluence/Bitbucket for a more integrated workflow. I have experience as a project level admin on these tools, and have been able to use them to automate much of the work that was previously carried out manually.

The Computer Games Technology course is aimed at producing technically capable software engineers. It has a strong focus on programming skills and covers OpenGL, AI, algorithms and data structures. It also encourages students to work collaboratively both within their own degree program and providing cross disciplinary projects where students from the animation, sound engineering and games degrees work together to create small games.