Push Gaming

During my time at Push Gaming I have had the pleasure of working as part of the game tech department, an agile and talented team responsible for maintaining and improving bespoke game creation tooling. 

As a department with many clients within push (audio team, translations team, artists, game designers etc…) it was vital that team members were knowledgeable, able to assist others problems and adaptable.

My time at push has been a period of rapid learning and consolidation of my technical knowledge. In particular, learning React and typescript, has been very exciting. As well as a frontend framework I have learned new backend technologies such as Webpack, webpack dev server, webpack module bundlers and webpack plugins. 

Using typescript to create electron applications and exposing backend functionality via interprocess communication. Full stack development using the http methods to interact with a project that uses the webpack dev server.

A valuable experience not before learned at university was interacting with build automations and ci / cd pipelines. This included the following skills. Using software versioning to manage node package dependencies when working on features using snapshots, Node and interacting with the package-lock file. Github hosted packages, using semantic commit messages.

Working with a team has also provided lots of extra experience such as using clickup to track progress on tasks and bug fixes, assisting users of the editor with errors and being able to debug on the fly, interacting with team members on standup meetings, managing my own progress on tasks and providing time estimates to deliver tasks on schedule. I have also had to write code that matches the standard and clean code practices already present in the codebase and outlined by the developer docs. Another skill that I have picked up from working in a team is how pull requests fit into a team's workflow. Creating pull requests after I have finished a feature or a fix, as well as tracking the multiple pull requests from different libraries that a feature may have created, as well as communicating to my team members what pull requests I have open and which ones need reviewing. Opening draft pull requests and reviewing other team members pull requests have all been new learning experiences. Interacting with qa testers and communicating which branches they should use to test my bug fixes / features has also been important and communication when issues are found.

During my time I have been very adaptive, undertaking multiple medium to large tasks. I have had to quickly get familiar with a new and vast codebase. I have performed an investigation into the feasibility of an architectural shift, worked on a prototype game project which required custom / experimental editor support requiring my knowledge of graphics programming, shader and render textures. I have used react flow to create the frontend of  a node based editor. 

Under changing times with the rise in popularity of AI tooling I have cautiously embraced these new technologies. I have found them to be useful in my work to research new api’s / frameworks, bug fix and automate repetitive / tedious tasks to increase productivity. While not relying on ai to make architectural decisions and still choosing to write a large sum of code myself. This ensures I can have an up to date and good knowledge of the codebase and how my solutions work. Keeping code clean and maintaining my ability to quickly make improvements / add features to the code that I have produced. Additionally if / when ai providers change the costing of using ai tools i can stay confident in my abilities and output dynamically regulating my ai usage.