Professional Experience
Rockstar North
2020 - 2024Designed and implemented player-facing systems and liased with engine programmers / pen and paper designers and production to create ergonomic and scalable systems that allowed content to be developed at a rapid pace, while maintaining a high level of quality
Responsibilities / Key Experiences
-
Performance analysis / Optimisation
Maintained systems that were crucial in enabling the team to reach a tight performance goal and reduce the need for polling functions each frame. Performed many optimisation passes / provided detailed analysis on the results of these optimisations which informed senior members of the design team what areas of our code needed to be improved / required further optimisation. -
Architectural Design Patterns
When working with thousands of other engineers, a major concern of your code is not only its performance, but maintainability and readability. Many of the systems I developed were foundational systems built atop by other systems designers, and as such, extreme care had to be taken when making changes to the API of the system, or when the underlying implementation changed in a way that could not be represented through the service API. Having to deal with these concerns on a regular basis has greatly influenced the way that I architect my code, not only through daily use of some well known design patterns (factory, dependency injection, wrapper, proxies etc.) but in considering modularity and points of failure at the very beginning of the design process, allowing for systems / APIs to grow flexibly, without causing pain to dependents. -
Code Quality Automation
Maintained a tool that periodically performed analysis on our code projects and automated the creation of tickets / bugs to the appropriate owner of the code. This included warnings generated by the compiler, but could also handle input from additional sources, such as third party static analysers (such as ReSharper), which gave us a reasonable approximation of good quality across the various projects we maintained. This experience was quite far removed from the other game development work I performed at Rockstar, but was a great experience for topics which do not appear as frequently during game developmen, such as string comprehension, text-file parsing and very light semantic analysis. -
Soft Skills
Being a part of a large team requires a shift in attitude when compared to working in a smaller group or as a solo developer. Among the most important skills I developed was the ability to communicate the intent of a design, without necessarily getting in to deep technical conversations about implementation details. Furthermore, during several periods throughout development, we were required to push hard to get specific areas of our work polished to a high standard. This often meant jumping in to areas of code that myself and other members of my team were not familiar with or had little experience in, which was a fantastic learning opportunity.
Furthermore, after my promotion to mid-level Systems Designer, we were tasked with scheduling and prioritising incoming work, which would then be confirmed by our lead. Being in a position where I had to make calls on work I would be undertaking in a given period was an excellent way to get a better high level view of the progress of the project, and how my work impacted progress.
Motorola Solutions
2019 - 2020Maintained Pronto software for Police Scotland, implemented an integration between Pronto and a third party vehicle accidents service.
Responsibilities / Key Experiences
-
Maintaining Legacy Code
Pronto has been in use by Police Scotland for many years, and as it has become part of their daily tools, changes to the design in the software are rare and unwanted. We mainted the software using Java and deployed updates to Police Scotland every month. When we would receive feature requests, we had to practice caution ensuring that the change needed would not require additional dependencies, causing issues on officers with older devices, but also not going too far in to "hacking" in a solution with the existing tools at our disposal. Thankfully, we did perform automated and manual testing on the app to ensure no regressions were made release to release. -
Automated Test Development
To ensure that the mission critical software we developed was ready to be deployed to officers, we employed a mixture of automated testing and manual regression testing. Where possible, laborious testing was automated with a DSL developed in house at Motorola Solutions, and for more intricate and difficult to test bugs, we would manually perform these test scenarios as a team. -
Integration with new backend service
During my time with motorola solutions, I implemented a new module for Pronto that integrated with a third-party vehicle accident reporting service. This also required me to create a mock service to test against and verify the module's behaviour, as we were unable to secure access to a test environment from the service provider. -
Soft Skills
Requirements for new features came directly from Police Scotland, as we were a small team of only 6 people, this often meant attenting meetings with Police Scotland stakeholders and being able to translate non technical requirments into actionable / measaurable tasks we could complete within a sprint or milestone.