Monday morning: a new day and a new week. I’m in the office by 08:50 and I’ve already hit the ground running, dashing out to buy a bouquet of flowers. The engineering team has nominated one of our BAs, Alice for an Immersive Legends Award. She’s earned herself some well-deserved recognition – and the Amazon gift voucher – because she’s a rock star!
Following our weekly stand-up, I’m introduced to our newest recruit. He’s a fellow Backender who’s has been allocated to the Shaun delivery team with me. I’ll be helping get him settled in, so I extend his introduction to the rest of the team, as well as the other developers in Wallace and Gromit – you may be noticing a pattern of team names – before getting him set up with our local development environment. The process has become so much easier with Docker and Docker-compose; all he has to do is clone our GitHub repos and run a script to build the necessary containers and spin them up and hey presto, he’s up and running in under 30 minutes! The bulk of time is spent importing our database but we’re soon going to have Docker images for pre-populated MySQL2 containers also, so watch this space!
10:30 – time for pull request duty. I can see a refactor PR open to add a new Duck type. Being Ruby on Rails developers in our backend, we’ve recently finished a coding book club in our Hackers Boudoir sessions – a weekly skills development session – on Practical Object-Oriented Design in Ruby by Sandi Metz. Sandi is an excellent writer and unlike other coding books, I found this one to be really accessible and very engaging. We now treat POODR like a bible and it’s making all of us think more carefully on when to use inheritance over composition and where we can introduce Duck typing.
11:30: Having whet my appetite for more programming theory, I pick up the next club book read, Implementing Domain-Driven Design by Vaughn Vernon. We selected this book because we’re looking to move into microservice architecture. Our product and code base is growing to a size where we think this is warranted – not to mention the team itself which is likely to double in size over the next year, following our recent investment!
It’s 12:30 and time for lunch. On today’s menu: yoga! At least twice a week, I use our lunch hour to pop down the road to Wild Wolf’s Yoga for a quick sesh; it’s such a beautiful studio and the sessions really help clear my head from a busy morning and get me ready to tackle the afternoon.
By 14:25 I’m working away again, still buzzing on my post-yoga high, when a calendar reminder informs me of our Backend, State of Play meeting in 5 minutes. Once a fortnight, the entire back end team gets together to discuss code base, suggested improvements and questions that would have come to light since our last SoP. On today’s agenda: GraphQL implementation questions. We made the decision a few months back to implement GraphQL, which we will be doing for all new features and when we update existing ones, while having our old REST endpoints running in parallel, slowly becoming deprecated. It’s been such an exciting time learning GraphQL. Recently we’ve implemented edges and nodes, which I thought was a really clever solution. Now we’re onto tackling pagination and batching. There’s a lot of great discussion on how to proceed, so I best get back to the meeting!
I’m back at my desk within the hour and I’ve got some GitHub emails about requested changes on my PR. I take a look and there are, in fact, some suggested improvements on my implementation of sorting that I added to our new management feature. They are really elegant and using SQL are far more efficient than the ActiveRecord querying I was doing – it’s a nice catch from the team. My SQL has recently seen great improvements, in no small part thanks to peer programming and the PR comments I’ve received. I apply the changes and push back up for re-review.
How is it four thirty already!? The last thing I have planned for today is sprint tickets. I’m currently working on creating a new GraphQL mutation, allowing our clients to assign certain teams to specific objectives. I’ve been working on this ticket for the past few days now and have had some good whiteboarding sessions with my teammates on how a refactor of our current implementation will make this addition far smoother.
I plug my headphones in and dive back in until home-time.