LeadDev London 2024 (Day 1)

In what is fast becoming an annual tradition I recently switched on my Slack out-of-office, packed up a bag with plenty of room left for some conference swag, and got on the train to the Barbican for LeadDev London 2024 (see my review of 2022 day 1 and day 2, and 2023 day 1 and day 2). As with last year, this is a one-track conference focused on leadership and engineering management, with a separate one-track conference at the same time, StaffPlus, focused on Staff+ engineers. I only have a ticket to LeadDev, so I only got to see those talks.


What Do You Want From A Team Meeting? A Decision Or A Team?

Most teams will have a team meeting on a regular schedule. Once a week, every two weeks or once a month the team gets together to discuss the day’s big issues. This can be a difficult meeting because it doesn’t have a defined agenda, and is open-ended.

Other meetings either drive a project forward, solve a specific problem or implement a specific process. They might have a varying agenda, but the overall goal of the meeting is (hopefully) clear, and there is a point when the meetings will stop. Barring the team disbanding, this is not true for team meetings.

A common pattern, and one I am certainly guilty of, is asking people what issues they would like to discuss, and perhaps sharing a few updates from around the business. When you get to the end of the agenda you just say “Thanks everyone” and go back to your desks.

The problem with this is that you are encouraging people to just bring existing problems to the table, and then only if you manage to get the culture to be non-threatening enough that they feel comfortable with sharing their issues with the group.


Balancing Standardisation With Innovation

In my earlier post Sustainable Software Development I talked about how to build software that can be maintained and improved over the long term, and how to run teams that can work without burning out. In this post, I want to expand on one area of this - how to maintain innovation while using standards to reduce diversity in your code base.

Snow-flake applications, which have unique characteristics compared to others in your estate, take a significantly outsized amount of time to maintain. This extra complexity requires specialist knowledge in your developers, and the time taken to context switching between applications is increased. You also don’t benefit from the economies of scale, where you can apply improvements across many of your applications simultaneously.

Historically, sharing code across applications would be done through shared libraries, but the modern software development landscape is more complex and many companies are moving to Platform-as-a-Service models (PaaS). This is where the infrastructure used to run an application is more than just a server with a CPU, some memory and a disk. Instead, it is a whole ecosystem of APIs, developer tools and a platform for running code. Whether internally developed, or purchased from an external company, PaaS systems are chosen because they abstract developers away from much of the drudgery that previously they would have had to work through, but this also constrains them to only using services provided by the platform.


Pimoroni's Interstate 75W

I’ve previously written about my attempts to get metrics about my house into Prometheus and to visualise them with Grafana. This project has gone well, and I can measure everything I want to apart from water usage - please let me know in the comments if you have a suggestion on how to do that! The one thing that’s missing is a “glanceable” display. My Grafana dashboards work well when I’m at my computer, but they’re not so great when cooking in the kitchen.


Sustainable Software Development

When you’re in the zone it can be hard to think about the future of the code you’re writing, but the time you’re spending writing it is just a fraction of its lifespan. Code may be written once, but it will be edited a few times, perhaps copied once or twice, and likely executed many hundred, if not thousands or millions of times. You as a software developer will (hopefully) have a long and productive career in software development, as will the team you work with. And finally, you also do your work on planet Earth (hi to any readers on the ISS), and without it you’d really struggle.

When creating or modifying an object or system that we intend to last for a long time, it is crucial to consider sustainability. This includes factors such as the sustainability of the source code, your or your team’s ability to work on it for an extended period, and the software’s impact on the environment. All of these aspects are significant and should be carefully considered.

If you’re working in a scrappy start-up, fighting for survival, then the long-term maintainability of your code will not be important to you. In most cases though, code can be expected to last for a significant time, and the cost of maintaining it will significantly outweigh the initial cost of writing it.