Once had a stint at a startup. The CTO position was filled because there was a vacancy. There was one candidate willing to work the position at a loss and I assume he built his CV around that.
Dude had a significant degree in field where programming was utilitarian and not the main discipline. Yet he proclaimed a lot. Mostly about his hate for boiler plate. And any program he didn't write. Never got stable code from him and we lost the few opportunities we had because of his code not being properly tested and failing at the crucial moments. And to top it off he was a genuinely dislikable person but only after knowing him.
Yeah, just one anecdote. But one that actually cost me. However, I observed the startup scheme. (Which is to come up with ideas in the hope of finding an investor who is stupid and hands you over millions. FYI such investors last a very short term and gambling on finding one is naive.)
I now rank code as follows:
- Does it make money? / Does it serve a common good purpose?
- Is working with the guy or the team that wrote it a nice experience?
- Is it and the systems built on it stable and does it perform?
- Is there a business need to change it?
- Can it be isolated?
- Can it be replaced by a standard library?
- Is it maintainable? Is UML usable / understandable / up to date?
- Is it clean?
When I write code I try to do so as clean as possible. That always translates into maintainable, stable and performing code. However, the kind op programmer that writes clean code is very rare indeed and so, over time, my expectations from others lowered significantly. I do appreciate good stuff and I show my appreciation.
As for CTOs, I'm sure there are good ones around but I don't hold my breath. Abstracting technical stuff up to C-level is hard and anyone can call consultants to let them do their work. Bitching a lot about obvious issues is showing a lack of leadership. Come up with a solution or at least a proposal for a solution.