As engineers, one of our primary responsibilities is to ensure that the systems we build are stable and reliable.
However, despite our best efforts, issues and issues will inevitably arise in production environments. When this happens, it can be tempting to try and patch the problem and move on quickly.
However, recreating production issues locally is a critical step in the debugging and resolution process.
In this post, I'll explain the benefits of reproducing production issues locally.
When working with clients, how teams communicate tells me more about the culture than anything else.
Successful teams should communicate like a team fielding in a game of cricket who work together towards the same goal giving each other support and encouragement.
By sharing information about the batters, pitch, conditions and strategy, a feilding team agree on a plan on how to bowl and position themselves.
A good facilitator seamlessly keeps the flow of conversations fluent and relevant, encouraging people to engage and have equal participation while remaining impartial and patient.
It's a role similar to a conductor orchestrating a choir.
Should you build UI components and then add them to a page or build the page first then break it down into UI components is the chicken and egg of software development?
You've probably heard someone quote Norm Kerths' Prime Directive during a retrospective
Regardless of what we discover, we understand and truly believe that everyone did the best job they could, given what they knew at the time, their skills and abilities, the resources available, and the situation at hand.
In my experience, engineering teams doing their best at that time inevitably end up having to shoehorn features as requirements change or new information becomes available.
In this post, I'll discuss why great products need strong foundations.
Having worked with many clients who struggled to maintain Javascript projects, Typescript was a no brainer when choosing what to use for the project I was leading.
In this post, I'll share what and how I managed the challenges of introducing and using Typescript.
Having used Tailwind in my personal projects, I was already a convert of the utility first approach. When I was given the opportunity to lead a new project at Cambridge University Press, Tailwind was the first tool I reached for.
In this post, I'll discuss why and how using Tailwind worked out for us.
Stencil is a compiler for creating web components that work alone or with web applications written in React, Vue, Angular, Svelte, Ember or anything else you can think of.
Tailwind CSS deserves all praise love it's getting right now as the developer experience is incredible.
In this post I'll show how to create a Stencil web app using Tailwind CSS.
In 2008 the media were reporting on mistakes and delays in marking examination scripts. To ensure they never made the front page of newspapers for the wrong reasons, Cambridge Assessment decided to rethink how they electronically marked examination scripts for millions of students worldwide.
In 2015 I was hired by Cambridge University Press to develop a web application providing digital access to over 35,000 books and 1.5 million journal articles, consolidating several smaller sites. The application would go onto have over 2 million users a day and generate £65 million in revenue per year.
It was a fantastic technical learning opportunity, but it was our culture and approach to product development that would teach me the most important lesson of all.