Examples of Problem Solving
From even the early months of my time at Capita I have been a key player in creating solutions to known problems as well as creating solutions to improve the quality of life for both developers and customers alike. The first example of this being that when I started, the logging system for the contact backend would create a log for each process rather than centralise them into one file. This was a huge pain as a developer, and with permission I created a solution that enabled all processes to feed their loglines to a single process which would save the logs in correct time order to a single file. Further improvements I made on this included rotating logs daily and archiving log files to tar files after rotation to save on space.
Another example of achievement in the job role was raising the performance ceiling of our product from handling approximately 40 calls at once per node instance up to over 400 calls at once. To achieve this I created a modified version of our product that enabled me to create mass artificial calls to demand and specification via a WPF application. Using this I could test the system as I worked to debug and optimise. A large portion of this consisted of working in Ubuntu and Asterisk configurations to tweak the system to maximise capabilities.
Due to the nature of the product, deployment of the core backend had to be done manually by hand. To improve on this process I personally picked up a scattering of legacy bash scripts and redeveloped them into a robust series of scripts that the user can interact with to greatly simplify the process of going from a clean OS to a full instantiated server.
I quickly proved myself on my team to the point of working closely with my Lead Developer, experienced contractors, and technical architects, to create solutions to complex problems. A good example of this has been working on the resilience aspects of our core backend, a lot of discussions and idea sharing had to be carried out to consider all aspects and failure scenarios and consequent solutions. I was a key player in these discussions, working to implement the solutions and assisting the testers in writing tests and creating scripts and tools to empower them to do so.
When I came onto the team, the core backend code base didn’t seem to have a consistent form of standard practices unlike the other code bases due to being inherited from a previous team. Over time I made it my personal missions to resolve these differences and encourage team members to follow suit. The code base has now gone from a mix of callbacks, bluebird promises, and blocking code, to a uniform consistent shape of native promises and clean asynchronous implementations.