I am the software lead of a startup which while not struggling, is repeatedly missing goals and commitments to clients. Much of this can be attributed to our CTO.
Some background on her. She is one of those startup founders with a computer engineering degree who never worked any job other than this. One consequence of this is that she has never written code professionally beyond the very beginnings of this company. When she did, she did all her edits in production, didn't use a web framework, didn't know about unit tests, did not know about logging, didn't know about SQL injection, etc. The only non class software project she has ever worked on is this. She makes up for it in sales and leveraging the woman in tech factor.
I was brought in after the first investment to professionalize the software because it could often crash for days on end without her noticing or being able to figure out why and clients were obviously unhappy (and I think the only reason those contracts kept us is because our clients are in a less than flexible industry). I now lead a team of 4 devs.
Here is the core of the problem. We have it so that she needs to approve every feature that goes into production, especially since she often has a role in it, such as writing the text which goes there. Problem is, she just isn't doing it.
We have a substantial number (representing months of effort) of features sitting on Git branches because she keeps promising to review them and just never does. Plenty of bug fixes are stuck in the queue as well.
For example, one thing we wanted to do was implement some kind of logging. It has been stuck in "review" for two months. All the code does is send text notifications when there is a 500 error to the on-call dev (we have a phone we pass around for on call support). Instead, the dev must check the log periodically.
This one is not client facing, just a tremendous waste of developer time. However, plenty of client facing issues are also never resolved. We have one client who wanted to download a table to CSV. She sent the feature request to us, we built it and tested it, and for weeks has sat in the review queue. The client keeps bugging her and me about it.
Another problem speaks to her tech inexperience. Whenever she personally spots a problem, she begins debugging in production. When she inevitably can't find the problem as its written in a language she has never used (I threw out the entire tech stack when I arrived), she calls us.
We use proper tools to debug the issue, but it can easily be days before debug in production is turned off as it must be added to the bug fix and the bug fix must be approved. That is currently the case. Anyone who breaks the site somehow right now can see the IP address of our database server, database names, the libraries we use along with version numbers, and piles of other info. We did a fix on Thursday and she was supposed to review it that evening. It has still not been done despite repeated reminders.
Anyway, a couple days ago one of the major VCs invited me out to lunch this weekend and I accepted. News of all this apparently reached one of our major investors and apparently she is promising him all manner of things and not delivering as well. He straight out asked me if he should replace her.
I declined to answer, saying that it was not my place. But he is insistent on getting my opinion for some reason and wants to have dinner tomorrow. How should I handle this? She clearly needs to be made to step away from the code at least, but I also don't see it as my place to say anything. I don't think she needs to be fired, just moved to a domain she cares about (doing the networking events and women's galas) and away from one she has never seen as more than a burden.