Operator vs. Developer
I’ve been having an extremely difficult time lately at my job as Head of Engineering. I oversee a developer team, a data science team, and a CX team which somehow all are supposed to work towards the goal of Digital Transformation. I am basically battling a question of how can I push and allocate people to desperately needed projects to renew our current platforms or fill in huge holes in our technology coverage of the client journey.
I was beginning to see a bit of light at the end of the tunnel when I was able to convince a team of college kids to help out with my projects in exchange for a nice note on their CV. Honestly, I think I get much more out of them than they do from me, so I make every effort to help them get exposure and have learning opportunities. My other ray of light came when I was able to win an exception to the “no new hires” rule and was able to fill in 2 positions that had left my team in the past 3 months. I was finally going to start working on the projects that were going to turn around the company and make us technology leaders, but then the crashes came.
It was a seemingly normal week which we were supposed to dedicate to mapping client journeys and finally be able to bring the company into the 21st century when suddenly both our key client platforms came crashing down. The trading platform basically was not ready to switch orders to a new exchange and our communication channels started shutting all access to the exchanges, and our forex platform which was supposed to have an operating chance from java to HTML simply crashed to 50% of our clients. It was the ‘oh shit’ moment I realized that my days as the creative intrapreneur would have to be put on hold.
I had to figure out a way to fix our god damned core platforms and I had to do it as quickly as possible if I wanted to actually make something meaningful. First, I tried to do a debrief with all the parties involved and somehow I just ended up much more confused. After a lot of discussions, I was able to learn of different possible causes of the crashes, but nobody could tell me why we could not fix them or stop them from happening. It was extremely frustrating, and somehow my conclusion was always that the system was too old and convoluted. The only way out was a complete rebuild which I sure as hell was not going to get funding for.
So my next question was, why the hell did we let this monster of a platform get so outdated and opaque that it turned into a black box? I’ve been thinking about this question for a while, and although I don’t have a clear answer, there is one comment from a colleague that keeps ringing in my head which he told me while annoyed at my insisting on doing improvements to a newish project we had just delivered the MVP, ‘David, we need to have a finish line so we can move on, otherwise, we will never finish’.
It begs to question when the core systems that had just crashed were “finished”. Now that I think about it all our platforms are “finished” and don’t seem to need any opening, at least no opening until something crashes. If a platform is strategic and is of core importance, it seems strange that it needs to be finished. Maybe when a platform is not strategic it can be finished until it is time to throw out and replace it, but it seemed like we were treating all platforms as non-strategic.
I realize now that I don’t even know which of our platforms are strategic and which ones are not. Also, I figured that those strategic platforms should be continually developed and the non-strategic platforms should just be operated and maintained. If the answer is continual development, I need a developer team rather than an operating team. To be honest, right now all my team is an operating team that occasionally wears a developer hat when needed.
I do have a lot of non-strategic platforms too, so I need to have an operator team too. I just can’t have an operating team in a strategic platform.
Will this fix the problem completely? Probably not, but it will get us closer.


