Earlier quoted context omitted.
Personally, I see the CTO's job as being the one to advocate pristine, perfect code at the expense of business objectives. The reason is simple: if they don't, nobody else will. Of course the business side of the organization is always going to be pushing for more features at the expense of code quality. Why? Well, they're not the ones who will take the blame for code sucking. If you give in to them too many times an…
The CTO needs to be part of the executive team, so they don't have the luxury of ignoring the business objectives. The CTO should be able to make a business case for investing in quality engineering. Quality engineering has benefits for the business, but they are not always worth the price. Engineers are the only ones who can advocate for pristine code without tradeoffs, and I would argue that great engineers care en…
What it really means to be a CTO
21–29 of 29 posts
Re: What it really means to be a CTO
#22Earlier quoted context omitted.
Personally, I see the CTO's job as being the one to advocate pristine, perfect code at the expense of business objectives. The reason is simple: if they don't, nobody else will. Of course the business side of the organization is always going to be pushing for more features at the expense of code quality. Why? Well, they're not the ones who will take the blame for code sucking. If you give in to them too many times an…
The CTO needs to be part of the executive team, so they don't have the luxury of ignoring the business objectives. The CTO should be able to make a business case for investing in quality engineering. Quality engineering has benefits for the business, but they are not always worth the price. Engineers are the only ones who can advocate for pristine code without tradeoffs, and I would argue that great engineers care en…
Yes! This broad view is what separates our tech leads from the brilliant individual contributors. They are the folks who instinctively reach for broader context in every engineering tradeoff they make, instead of seeing the code as an end unto itself.
Re: What it really means to be a CTO
#23I sorta disagree. Sometimes being CTO is about instituting technical leadership from scratch. There have been a couple times where i've worked with a company (as a contractor) and helped them in a CTO role. This has ended up with a need to scrap everything and start again. That decision was acceptable because of the complete lack of any technical experience in house (100% outsourced, multiple vendors) who had very di…
I'm calling bs on this. You have to keep the train moving. That keeps the cash coming in. You can't stop the train. So, you have to take what you have and somehow -- that's what you are being paid for and hopefully you have the chops -- manoeuvre the beast into a better state. This is fscking hard, especially when you have to get the darn thing under test. And it's invariably massively undervalued by most biz managem…
Look at Windows Phone 7.
Re: What it really means to be a CTO
#24Anyhow, the decision was quite clear a rewrite was in order. The original code base received a little love here and there to make it work, but in the end we replaced it all and the company ended up selling for a little shy of 8 digits.
While you may not be able to just scrap it all, there is no reason you can't do things the right way behind the scenes and then relaunch the right way over time. I think a good CTO or leader should recognize what will be better for the company, and perhaps at times that does indeed involve maintaining what you have - but if it is indeed broke; it's also in your best interest (as well as the company's) to fix it.
Re: What it really means to be a CTO
#25Re: What it really means to be a CTO
#26Bottom line is that you base your strategy on what the company needs, not on some abstract notion of a good CTO. The only consistent objective is to make yourself as superfluous as possible by creating a balance between engineering quality and business objectives that maintains itself without constant management interference.
Re: What it really means to be a CTO
#27"one of Seattle’s most impressive companies, I Can Has Cheezburger? " - Really? Does that say more about Seattle, or the Web at large? (Or was this just a joke and I missed the point?)
I found it kind of weird that the guest post on this guy's blog was his friend talking about how great the blog's owner is.
Re: What it really means to be a CTO
#28This reminds me of Joel Spolsky's Things You Should Never Do ( http://www.joelonsoftware.com/articles/fog0000000069.html ). It's old advice, but still as relevant as ever.
It's relevant, but he didn't really mean it to be taken at face value. Because of course it just isn't true (even though people keep repeating it a lot, for some reason). The world is full of tons and tons of successful, large-scale software systems (from apps to languages to databases to OSs) that were not only "rewrites" of older systems, but had to be written because the original system had incurred too much techn…
What I took away from the article is this: whenever you're thinking of rewriting from scratch, there's a better way - incrementally replacing the code. It's not as fun, and it feels worse, but it ends up with much better code. I'm pretty sure this is nearly always true.
Joel outlines the reasons, but the most important one, imo, is this: you're not going to do a better job. You think you are, because you see that the code is a mess and think you're better than the people who designed it. And you're probably right (or at least, you know more.) But a system that has years of work on it is not something you can whip up again from scratch - you're going to miss all the same things they missed the first time, when they were designing it, and either recreate all the bugs, or make your new system a mess.
Incremental improving is nearly always the saner solution.
Re: What it really means to be a CTO
#29Earlier quoted context omitted.
It's relevant, but he didn't really mean it to be taken at face value. Because of course it just isn't true (even though people keep repeating it a lot, for some reason). The world is full of tons and tons of successful, large-scale software systems (from apps to languages to databases to OSs) that were not only "rewrites" of older systems, but had to be written because the original system had incurred too much techn…
I'm not sure about that. What I took away from the article is this: whenever you're thinking of rewriting from scratch, there's a better way - incrementally replacing the code. It's not as fun, and it feels worse, but it ends up with much better code. I'm pretty sure this is nearly always true. Joel outlines the reasons, but the most important one, imo, is this: you're not going to do a better job. You think you are,…