Ben Selby profile picture

Ben Selby

Software Engineer

Open Source, Process, Technical Leadership, Automation, People

Love building distributed teams, writing in Go, building CLI dev tools, engaging with other engineering teams, and learning new things


May 1, 2019 · 11 min read My aim with this blog is to document how I like to run my teams, and note the various things I’ve seen during my career. When meeting new people, there is a tendency to cover old ground (I’m skilled at this), which is useful in the sense you have a common understanding, but it can be time consuming. A few times recently I’ve wanted to provide substantial opinions, but the communication format doesn’t lend itself well to that style.

Running pa11y in Jenkins for accessibility testing

Apr 24, 2019 · 5 min read The best thing about being a software engineer is all the learning you can do. I’m now working on a web based product where accessibility is critical to the success of the team, and therefore I’m in full learning mode at the moment. Web #a11y is my new passion it seems. Don’t get me wrong it’s like day 4 of learning, but what a new world I find myself in!

Software engineering team structures

Apr 20, 2019 · 8 min read This post aims to outline a useful structure for software engineering teams. This feels like a fairly standard structure, or at least with the teams I’ve had exposure to. The main principles here are: to keep communication flowing; accountability is defined and understood; and the ability to scale horizontally when your teams become saturated (and for this to be easily quantified). For the purpose of this article, a team is going to be a product based software engineering team.

Feature Toggling

Mar 19, 2019 · 8 min read As mentioned previously, we are documenting a whole bunch of stuff at my current gig. Documenting what tools and languages we should be using for our new products and platforms, but also what techniques we should be using. Techniques is an interesting area to be documenting, because how far do you go? Taking a step back, I’ve always wanted to be a conference speaker, ever since I saw my boss do a talk at PHPNW back in 2008 / 9.

Why teams are important

Mar 8, 2019 · 7 min read After talking about communication recently, it felt natural to follow up with a post about Teams. The beginning I love teams. I love my teams. I love building teams. I love working in teams. I love to see what a team can deliver, and grow, and evolve, and have each others back. I would describe myself as a team player, first and foremost. I don’t like to be isolated. I like to have a home to anchor me.

Technology Radar

Feb 10, 2019 · 7 min read It’s all of a buzz at my current job at the moment. Change is in the air. Stacks. Tools. Paradigms. The way we work. The way we deploy. The way we communicate. There is a lot to take in, and a lot to learn. Recently, I was one of two people who presented to our Project Management Office (PMO) on what was happening in our department. The main aspect of this presentation, and my life at work at the moment, was the Technology Radar.

The software development pipeline

Jan 14, 2019 · 4 min read Pipelines. They are very important in software development, in my opinion. If you do not get your pipeline right, you likely have problems within your team(s). So, what is a pipeline? Well, think of it has a conveyor belt in a factory. The software development pipeline is a conveyor belt. From projects, to requirements, to building/testing, to deploying, and to everything in between. Those processes/items are moving along the conveyor, ideally in a smooth fashion.

Squashing commits

Oct 2, 2018 · 6 min read I recently got involved in a project where I contributed a patch to an inflight feature branch. I then raised a Pull Request into the feature branch, so I could annotate the code in the GitHub PR to explain why I had done it a certain way. After a bit of back and forth the PR was merged into the feature branch. Later, I found that the feature branch I had worked on had been merged into master, but the entire branch was squashed down into one commit.

Development environments

Sep 19, 2018 · 7 min read It works on my machine We have all heard it, and secretly, we have all probably said it too. Setting up your development environment really is a thing. About 10 years ago, I remember spending about two weeks getting a full ISP platform up and running on my host machine. There were a lot of moving parts I didn’t understand in my first week. I was fairly junior at the time, and this was the first time I was doing development, to this level, on a Linux platform.

SugarCRM deployment process

Aug 26, 2018 · 11 min read SugarCRM is a Customer Relationship Management system for both Enterprise and small business. I’ve worked on SugarCRM for around 6 years, and this post is going to cover off how we release/deploy the software on a 2 week cycle. The Aim As with any software, the aim is to have an automated release process first and foremost. We wanted this process to be simple and allow for a completely automated release to our staging platform on a nightly basis.

Team communication tools

Aug 6, 2018 · 9 min read In a previous post I talked about communication, and what it’s like as a remote engineer. I also hinted at the tooling I prefer, and outlined what I look for. This post is going to cover off why I prefer Slack for team chat/communication. Spanning a 10 year period I’ve used: IRC, Google Wave, XMPP in various forms, Skype, GTalk and Google Hangouts, Slack, Microsoft Teams and Workplace. Slack is a clear winner for me, although at the time Google Wave blew me away.


Aug 1, 2018 · 7 min read It’s cliched to say, but communication really is key, and yet it’s one of the common issues folks seem to raise in departmental or company feedback. “Communication isn’t great”. However, this is both a top down, and a bottom up issue in my opinion (and everything in between). Top down like to send out update emails, but the flow of communication is one way. Do I reply, reply all, face to face?