It's been a while since I last updated my blog. As I'd like to share more in 2020, I thought that a good first post might be to update you all on what I've been working on the last 5 years.
2014/2015: SocketPlane -> Docker
2014 was a fun year riding the waves of Software Defined Networking (SDN). I ended a 7 year stint at HP to go to Red Hat and work on Network Virtualization in OpenDaylight project. Brent, Madhu, John and I co-founded a startup called SocketPlane which aimed to take what we'd learnt about network virtualization in OpenStack and apply it to the emerging world of containers. We went to the valley, got funding and set out to build the future!
I'd always wanted to do a startup, so I could now cross that off my bucket list. In hindsight it's not something I'd recommend as it was probably the most stressful experience of my life.
We launched a tech preview of SocketPlane at the end of 2014 and were already talking with potential big name customers. In early 2015 we were torn between a Series A or potential acquisition by Docker. After much deliberation we decided to go with the latter. I like to think that we might hold the record for fastest exit (4 months).
On entering Docker, we were starting from scratch as the goal posts had moved. We were tasked with building an overlay networking solution that would work with Swarm (Docker's orchestration play) that followed the "batteries-included but swappable" philosophy. Essentially creating a new API layer to sit between the engine and it's networking drivers. I decided that now would be the perfect time to move in to Product Management.
The big highlight of that period (aside from the acquisition) was the Docker 1.9 release, where all of our work was finally made available to the Docker community. I also spoke at DockerCon EU 2015 where I demoed our overlay networking solution across multiple geographies using Minecraft.
2016/2017: PM -> Engineering
One of the big challenges I faced as an "Open Source PM" the views of enterprise customers and partners (that I was representing) were vastly different to that of the OSS community. To add to the challenge, engineering had their own roadmap which I had little say in. Being remote made matters 10x worse. I gave up on Networking, thinking that was the problem, and got involved in other projects. Next, I blamed time zones, and started working only with the EU team on Docker for Mac/Windows and Docker Compose. Eventually, I burned out.
Burnout recovery for me was taking some time off to understand what was wrong. In this case, it was that I wasn't set up for success in my PM role. On coming back I quit PM, mid-way through 2016, and headed back to an engineering role with the Docker for Desktop team.
This was when I started to get back in to Systems Programming:
- I created a 9P library in C# with a view to simplifying how file sharing was working in Docker for Desktop.
- I worked on better HTTP Proxy handling in the Docker Daemon and in Docker for Desktop
- I made progress towards porting MobyLinux (now LinuxKit) and RumpKernel to run on Raspberry Pi
- I contributed to LinuxKit
- I added the UI to DataKit CI and helped run LinuxKit CI
- I started to simplify the Docker Desktop CI setup - moving Mac/Windows testing on to VMware, using Packer to standardize test images and writing tooling to provide fresh VMs for each test etc...
At the end of 2017, I moved away from the Desktop team in to a newly formed Engineering Services group which was chartered with improving overall product quality.
The highlight of the 2016/2017 for me was getting to work with the folks from Unikernel Systems. They are some of the smartest and most humble folks I've had the pleasure of working with and I learned a lot from them!
2018/2019: IC -> Manager
Work on the tools team at Docker might not have been the most technically challenging, but it did have high impact, and I was in good company which was what made it fun. For the first time in a long time I felt ready to step up in to a leadership role and I finally got that opportunity in August 2018. It was to be a trial by fire.
To give you some idea of the scale of this trial, when I started managing the team I had 2 direct reports - at the end of 2019 I had 12 direct and 3 indirect. During that time went through 2 CEOs and 1 CTO. The team's scope expanded as I picked up Release Engineering, System Test and eventually Infrastructure too. If that wasn't enough of a challenge, I kick-started a full overhaul of the way that we intended to build, integrate, test and release our enterprise product with a view to being able to escape the 6 month release cadence that had haunted us the last 3 years and release whenever we were ready.
In spite of everything that happened during that time, and a couple of missteps along the way, we absolutely crushed it. I grew a lot both professionally and as a human being during that time and I relished in watching my team rise to the challenge and grow too.
On the other hand I suffered a lot from Stress and Anxiety during this period - at it's peak I ended up in hospital in SF with heart attack symptoms. That was really the kick in the arse I needed to do something about it. I opted for self-help: I took a little time off, read some books and made some lifestyle changes. I'm still learning what works for me but I feel I've improved.
The year ended with the sale of Docker's Enterprise business to Mirantis. I could see that integrating the two companies was going to be a mammoth task and I wasn't the right person to lead my team through it - I wasn't motivated and I didn't think I could handle the additional stress. So, with a heavy heart, I decided to leave to seek a new adventure for 2020.
What's next for 2020?
At this point it's unclear exactly what I'll be doing in 2020, but I'm actually quite OK with that. If you have ideas, comments or suggestions feel free to let me know!