As of yesterday, I am no longer the product architect at Revivio. I’m still at Revivio, and my title still says architect, but organizationally I am now a developer with the same responsibilities as other developers instead of having a more diffuse kind of technical responsibility for the entire product. This is actually a very welcome change for me, and one I had asked for a while ago, but the time didn’t seem right until now – when we actually have a product out and are far enough into planning the next set of projects to know where my skills are most needed.

There are a lot of things I could have done better as an architect. I could have done more to document some of our control and data flows. I could have done more to address some of the “bad coupling” that always causes pain in a complex product. I could have done a better job of streamlining the process of turning ideas into actual product enhancements. I could have gotten out of my office more, set a better example, been a better mentor. However, when all is said and done, I believe only one thing really counts:

The product shipped on my watch, and it works, and customers like it.

Not every software architect can say that. Yes, there were a hundred things I didn’t do as much or as well as I should have. There are also a hundred things I could have done to screw it up. There are another hundred ways I could have misprioritized my tasks and responsibilities – all of them worthwhile to some degree, but not all equally – and also contributed to failure. Like anything else in engineering, it’s all about tradeoffs. I did address some of our biggest architectural challenges, I was involved to varying degrees with all of our trickiest code, and I single-handedly fixed some of our hairiest bugs. On the non-technical side, I was involved in hiring and retaining some good people, improving processes and behavior, and facilitating essential communication and decision-making. I might not have been perfect, but I was good enough. More importantly – and this is a subtle but important distinction – the team was good enough with me in that position. Like tradeoffs, “good enough” is what engineering is about.

So now I’ll be in a different position, in a changed organization. We’re no longer in a startup scramble, all working to get the first product out the door. We have a product, and we’re working on several different ways to make it better. It’s a good place to be, both for me and the company, as summer begins. There will be more games to play, but we won the last one and I feel pretty good about that.