Introduction

Hi, I’m Alexander, a senior software engineer at Liberis. I work on the data platform team - we provide ways for engineering teams to build data products in a scalable and sustainable way, and we provide and maintain self-serve tooling for the business that allows discovery, governance and quality assurance of data published by engineering teams and non-engineering teams alike.

I’m very lucky that I’ve recently had the opportunity to take on some Engineering Manager responsibilities. At most tech companies, as you move beyond senior-level engineering, one of the important choices you make is working out if you want to stay on the ‘Individual Contributor’ track or not. At Liberis, our progression framework places Staff Engineers at the same Seniority level as Engineering Managers. Not everyone wants to be a manager, so engineers should be able to progress in their careers without having to manage people. Taking on aspects of the EM role has let me identify if I want to do this in the long term, either temporarily or permanently.

Below, I outline what my week looked like as a senior software engineer with some engineering manager responsibilities. Read on to discover what working as a senior software engineer (with engineering manager responsibilities) at Liberis might be like!

Monday, 3rd February 2024

Location: In Office💡

We are a hybrid company, and I am usually in the office 3 or 4 days per week. I tend to like going in on Mondays as it starts the week off nicely for me.

As a team, our ‘in-office’ day is currently Thursday. My last day in the office varies, depending on if I have software architecture or product discussions, or if I am pairing with another engineer and writing code in person.

Arrival time - 08:45

The first ~45 minutes of my week usually consist of catching up on information such as messages and meeting invites from last week. Then I think of my plan for the week and what I want myself and the team to accomplish. It’s important to have an idea of this - even if it changes midway through the week.

09:30

Meeting with a fellow engineer on another team, Adam Hoar, about how to tackle a new reporting requirement in their team, including integration with some new tools recently published by our team. We discussed ownership, data-as-product thinking, and how to integrate with our tooling. We also discuss some high-level thoughts about how to design data models for analytical consumption, and how that differs from operational data design.

10:00

Standup! Triaging new issues that came in over the weekend, general update on what we’re planning to do today and this week as well as discussing any blockers. We found that a couple of tickets we’d triaged and refined last week weren’t clear enough, based on discussions with our users, so decided to clarify those before putting them on the backlog.

10:30

Make a coffee and then communicate some information to the team about individual goal-setting for the upcoming half.

At Liberis, every engineer works with their Engineering Manager to set individual goals for each half.

10:45

Review a PR from another team! A small change to update to new package versions, ensuring we’re keeping our services secure and up to date.

11:00

I met with a team member one-on-one. We discussed using the training budget for some advanced training on GCP. We are in the process of migrating or rebuilding many of our older services, data pipelines, and new services to GCP, so having advanced knowledge of its capabilities and limitations is extremely useful.

We get £1000 per year for Learning & Development at Liberis and are encouraged to use it!

12:00

Lunch! Waka near the office does good Peruvian Japanese fusion food 🍣

13:00

Incident writeup from a minor incident last week, where we had degraded performance on our legacy analytics stack. This includes a root cause analysis as well as short-term and longer-term mitigation suggestions. I started writing this last week, so needed just under an hour to finish this off and publish it. The learning for this was that one of our servers comes under significant load during spikes due to PowerBI refreshes - so we both increased server capacity and tweaked the schedules to even out the load so we don’t have the same in future.

13:45

Interrupt engineer handover - where we hand over on-call responsibilities in our team from our current engineer to the next engineer in the rota.

14:00

Job specification review with our VP of Engineering, in preparation for a hire in the Data Platform Team. We are hiring for a senior software engineer - data platform. if you have read this far and are interested, please visit our careers page!

14:30

Project scoping with our risk team. We’re onboarding them to Liberis’ new analytics stack, built around BigQuery and Looker, so we discuss with them how to approach working with them, and what migration problems to tackle first with them. The Data Platform team will use the outcome of this meeting to work out what items to refine and execute on so that the risk team can successfully self-serve analytical data on our new platform.

Risk is one of the most prominent users at Liberis of analytical data, both for forecasting our risk assumptions and how that affects the business, as well as looking back at nearly 20 years of data to infer insights - so their requirements are complex.

15:30

State of Production. Each platform team has the opportunity to discuss what new changes to the platform have been released and are upcoming. Engineering as a whole will then discuss recent incidents and the learnings that result from post-mortems.

16:30

Popped some music on and then wrote some unit tests on a side project (an on-call pay calculator) that I’m working on. It’s the lowest priority of all my work at the moment, so I put the occasional 30-60 mins in whenever I am not too busy. It’s great because it’s Test driven, the scope is very clear, and it’s a nice way for me to keep my C# skills sharp.

17:00

Head home from the office. Another benefit of being in on a Monday is that I usually get a seat on the central line on the way back home…

Tuesday, 4th February 2024

Location: In Office

Arrival Time - 09:54. The central line was very delayed.

10:00-10:30

Standup. We discuss our recent delivery milestone, and the feedback we’ve got from our users from that milestone and decide to prioritise completing an item based on that feedback. We use Linear to track our tech work at Liberis, and it makes organising and executing tech initiatives a breeze.

10:30

Tech managers meeting, where our VP of Engineering discusses anything that we as engineering managers need to be aware of, and we discuss the engineering roadmap at a high level.

11:30

Chat with one of our People team, to discuss career development across engineering and what that means to me as both a manager and an engineer.

12:00

Lunch

13:00

Team backlog refinement - we discuss and refine the next phases of the risk project that we’ve been scoping.

13:30

I write up this post, in between answering the occasional question in the office. I decided to sit on the beanbags while writing this, which was a correct (and comfortable) choice.

17:30

Head home

Wednesday, 5th February 2024

Location: Working from home

Start time: 9:00

The first hour or so of my day is reviewing, merging and deploying a couple of small PRs that have been put up for the project we’re currently working on, where we are helping to decentralise analytical data production across Liberis. Both PRs are good to go, so I merge them. Our pipeline runs in ~7 minutes, so it’s really easy to push a change out before standup (and the perfect length of time to make a coffee between merge and deploy).

10:00

Standup, a short one today as we don’t have many blockers or work items to discuss but do talk about some more general ideas about data modelling and our architecture in general. After standup, I answered some messages in Slack and then did a small investigation task to determine why one of our data pipelines didn’t run as expected.

11:00

Discussing what data is available from our new project milestone with some members of our commercial team, as they’re interested in using that data.

11:30

Team planning. We continued the discussion from standup about data modelling and as a result, decided that the next phase of our current project doesn’t have the correct scope. We discussed as a team what the scope should be and updated our project plan to reflect this.

12:30

Lunch, a bit later than usual today.

13:30

Mobbed with three engineers - Wil Eager (Senior Software Engineer), James Odoch (Senior Analytics Engineer), and James Green (Staff Software Engineer) to review a PR from Wil to a shared company repo that the Data Platform team currently maintain. We discuss if the approach in the PR is correct and end up deciding that some more tests are required. There’s a small optimisation that we can make, but it’s otherwise correct, decide to merge it after a couple of extra tests are written to cover an edge case.

15:00

Finish off writing this post, in between reviewing a PR and discussing any blockers that come up during what the team are currently working on.

I tend to approach PRs and trade-off discussions as the ‘Most important thing to look at’ and will often stop what I’m doing to review a PR or unblock a team member unless I’m working on something more important, or more time-sensitive. Feedback loops should be short, so reducing the time in that loop is really important.

17:00

log off

Thursday, 6th February 2024

Location: In Office

Arrival time: ~9am. Most of the morning pre-standup is answering emails and a couple of admin tasks.

10:00

Standup

10:30

1 to 1 with a team member

11:00

The rest of this day is taken up with Planning and then presenting our recent milestone to the business. It’s a significant change for engineering and non-engineering alike, so our Delivery manager and some of my team, including me, sit down to confirm what the plan for the afternoon is, making sure that we know what we are going to present.

We then have lunch, and begin our presentation, officially launching “Looker at Liberis” as a self-serve platform, with data quality and governance baked in. This is the culmination of a lot of our team’s work, as well as more widespread engineering work, over the last few months, after a lot of feedback and iteration. The afternoon is reserved for in-office “drop-in” sessions for people who might have questions about how to use Looker.

17:30

head home

Friday, 7th February 2024

Location: Working from Home

Start time: 9am

9:00

Spent an hour in the morning thinking about how to tackle the problem for the code I’ll be writing later and sketching it out while I made a coffee.

10:00

Standup, and a little more refinement immediately afterwards for a parallel project that some of our team will be working on. We then mob to start writing some code for that project!

11:00

Quick meeting with a colleague to see how we might use Looker to provide analytics for our partners in the future.

11:30-17:00

Blocked out some time to do some IC work, involving making some data available for analysis by some of our product team. I also took lunch during this block at around 12:30.

The interesting part about this was the choice around tech debt here - we chose as a team to take on some tech debt to make this data available to the team that need it, rather than provide it in a more self-serve way. Tech debt is a tool in every software team’s bag for balancing the speed of software delivery vs maintainability/evolvability, and we decided that speed is more important here, especially because we can deal with the tech debt after delivery without impacting our users. In doing this, I make the team aware that I’ve added an item to our backlog to track this so we can look at it within the next couple of delivery cycles.

17:00

Log off for the weekend

Conclusion

The day-to-day work for a software engineer can vary a lot depending on the company you work for, so I hope that you found this interesting.

We’re Hiring in our Data Platform - please visit our jobsite to see our open roles.