London, England, United Kingdom
At Tewke I had an opportunity to start closing key gaps in my skill set - particularly in the DevOps area - working in a tight-knit software team. Technical highlights: • Building new Helm charts for our API while leveraging already-existing Helm charts to configure and deploy other core backend services (RabbitMQ, Redis, MongoDB) as resilient quorum-based replica sets within our Kubernetes cluster. Gained hands-on experience with monitoring and maintaining these services in production. • Developing Docker images for various workloads including Kubernetes Cron Jobs for tasks such as periodic data retrieval and taking database snapshots. These were managed in a Gitlab container registry via a GitLab CI pipeline. • Developing an integration test suite using Docker Compose to assemble the various services for the test environment. • Managing and maintaining RabbitMQ-based WebSockets. • Designing and executing MongoDB schema migrations including a major restructure of the schema. • Maintaining and tuning a monitoring/alerting system consisting of Grafana and Prometheus.
Working in a startup for the first time I had a chance to be involved in a project in a broader capacity. I was part of a new team formed to work on a green-field project right from the ideation phase. This meant communicating with different kinds of stake holders to gather requirements, defining MVPs, roadmapping, running user demos and workshops, gathering user feedback and data to validate our work while looking for market fit and generally gaining a strong understanding of our problem space. From a technical perspective it involved designing and building out new micro-services and user interfaces from scratch and generally building with a more product-minded approach. I eventually gained large technical ownership of the project and enjoyed gaining some experience in mentorship and generally leading a small dev team. Some technical highlights included: • Abstracting common authentication functionality to a private NPM module. • Experimenting with AWS SNS and SQS for an event-based architecture. • Using the Serverless framework to spin up AWS Lambdas to provide light-weight backend functionality in various contexts. • Gaining a strong understanding of GraphQL and experimenting with some of it's advanced features. • Implementing Sentry in many different contexts to provide visibility. • Using complex SQL queries on our Snowflake data lake to drive decision making in many different contexts. • Other technologies: Typescript, Node, React, Retool, Sequelize, Postgres It was a great hands-on role in which I learned more about the moving parts of a project outside of the dev team and in summary gained a more rounded perspective on software development with an emphasis on product mindedness and pragmatism.
At Ocado I had a chance to see how software can be developed on a large scale with many teams contributing to a single system. Firstly, I worked on a team responsible for a set of micro services as part of a larger distributed system of high modularity, mainly working in Java. I later transferred to a team contributing to a large and complex e-commerce SPA (Single Page Application) written in React. Ocado Technology being such a massive and successful tech company, the main takeaway from this role was insight into what I considered to be the golden standard of technical best-practises. Main technologies used: React, Typescript, Redux, Java, Node.js
The graduate programme consisted of a split week: A day of each week was spent engaged in an academy schedule consisting of workshops introducing us to various industry capabilities such as testing, infrastructure engineering, front-end development, API design, user experience and business analysis. The team of graduate developers later built a dynamic office seating plan for which I made use of Node.js, Dynamo DB, javascript testing frameworks, integration tests in the form of shell scripts, AWS Cognito and React.js. The rest of the week was spent working on agile teams building products for various clients gaining exposure to various tech stacks. The key themes of the role were great mentorship to help take my first steps learning the ropes of web development and the chance to work from the start in teams with a strong focus on Agile practises and quickly become a valuable contributor. Technologies included C#, Typescript, React, Node.js, AWS Lambda and I gained exposure to various testing techniques. A great first role! Took part in weekly office 5-a-side football matches.