The Early Years [1985-2009]

Young Ed Spencer

I had an entrepreneurial start in life. Growing up in a village in England (population: 2000), I developed an obsession with computers that led to my first business venture aged 13. I built computers for the people in my village, helped people with their software difficulties, and built out a network for a company that originally hired me to clean swimming pools.

As the world progressed to broadband in the late 90s, our small town was left behind as the economics of laying new infrastructure didn't add up. I started a small group of like-minded people determined to break free of 56k modems, securing a dedicated T1 connection that we would distribute via high-gain wireless antennas - a nascent technology at the time. After piecing the business case together we presented it to British Telecom, who, surprised by the demand, agreed to roll out DSL after all while I went off to college.

There I met a great friend with whom I set up a new business, initially partnering with a local mobile phone retailer to build their e-commerce site while we honed our PHP skills. Later we progressed to Ruby on Rails and then Ext JS, all the while aquiring new clients with bigger projects and bigger paychecks. Eventually we visited San Francisco, where a 3 month vacation turned into a permanent stay in our new adopted country.

Sencha - Senior Software Architect [2009-2012]

Palo Alto Office

The same week I landed in San Francisco, the Ext JS team was relocating there from Florida. At the time I had been blogging about EXT JS and releasing a few open source projects with it, so we agreed to get dinner together. One thing led to another and before I knew it I'd joined the team as a Senior Software Architect (a ridiculous title indeed for a 24 year old kid).

It was a fun few years - we were located in a 10,000 sqft office space in downtown Palo Alto, 2 blocks walk from my new apartment. We were 10 or so people when I joined, though we grew quickly and attracted a lot of talent.

Aside from the innovation we were doing with Ext JS, we also built Sencha Touch, which back then was the only way to build mobile web apps that felt native. We regularly hosted meetups in our little office space, and it felt like we were a little mini-locus of the progress the web was going through at the time. Leading innovators in the space like Ryan Dahl (of Node JS fame) and Guillermo Rauch (of Next JS fame) would drop by, and I got to work alongside people like TJ Holowaychuk and Tim Caswell on the design and architecture of Connect, which eventually morphed into the architecture of later versions of Express JS itself.

Eventually I was bullied into becoming a manager, which was my first taste of that sin. Management (or admin, as it should better be thought of) is a necessary evil in our industry. It's nowhere near as fun as engineering itself, but at a certain point it becomes clear that you can have a bigger impact by helping others be more effective than you can by writing code yourself, regardless of how good you (think you) are at it. I got to hire some amazing engineers, which was rewarding.

In the end we killed the company by trying to reinvent every part of the product in version 4. Version 4s of things often seem to have this problem - Android v4, iPhone 4, Ext JS 4 - it's a dangerous number, and there are some strong reasons why this happens. I'll write about that one day.

C3 AI - Senior Software Engineer [2012-2015]

Title inflation wasn't quite so pronounced at C3 - now I was still Senior, but a mere Engineer rather than an Architect. The older I get, the more this feels like it was always the right word. Most of what I worked on was the UI for a bunch of products we were building to help residential and commercial companies reduce their energy usage.

I think part of the reason they hired me was because I was pretty good with Ext JS, and they'd been using it in a few of these consumer-facing web apps they were building. Ext JS is a terrible fit for that, so I started out by ripping that all out and replacing it with super basic stuff - Underscore, Backbone and jQuery. This reduced the file size by about 95% and made the apps much faster. Eventually, we built too much framework and not enough app. I'll write about that one day too.

One day one of our number had the crazy idea of moving (back) to Florida. C3 allowed 4 of us to go out there and set up a new engineering office - the first one outside of the Bay Area. It lasted a year before the business decided it wanted all its engineers where it could see them, and our little project was shut down. By now, though, my friend Nick was at Palo Alto Networks, and he convinced me to join him there.

Palo Alto Networks - Principal Software Engineer [2015-2021]

The longest time I spent at any one company was at Palo Alto Networks. It was the only big company I had ever worked for, with thousands of employees instead of dozens. I worked on a product called AutoFocus, which was a threat intelligence platform that ingested millions of malware samples and allowed security researchers to analyze them.

Most of the work I did there was on the UI, which was a React app. Being part of a small team inside a large company was a fun experience - I got to ship a bunch of features at a rapid pace, and be surrounded by a dozens of other teams doing the same thing. I learned a lot about how to build software at scale, and how to

As had been the case at Sencha, I got bullied into management once more. This time I started to develop some clear ideas about what makes software engineering teams go fast or slow, and was given a fairly free hand to make my new team work the way I thought it should. We went from a release every 3 months, which would take 2 weeks of manual testing followed by a multi-hour manual deployment process to CI/CD to production, where we'd ship dozens of times a week without even thinking about it.

I got to learn a lot from my boss on how to put some science around how I approached engineering management; this made me a much better manager, but given the choice between Jira and coding, I know which one I'd rather do. Steve Jobs once said: "The best Managers are those Engineers who reluctantly took the job temporarily because they knew no one else would do it as well". I've found there to be some truth to that in that managers with a strong engineering background have a clear advantage over managers who don't (doesn't mean we want to do it though).