Famous last words.
There ARE counter-examples of successful systems re-built from scratch.
The rewrite might have killed Netscape, for example, but without the rewrite from scratch not only would have Netscape died but there wouldn't be a Firefox or Mozilla Foundation now.
(And I'd argue that it wasn't the rewrite that killed Netscape: the rewrite was necessary. What killed Netscape, and would have killed it even without the rewrite, was that the then all-mighty Microsoft decided to get into the internet game for real and build a good-enough browser. It's ironic that this good enough browser was IE6, which we know view as the worst impediment to web progress).
Also, didn't Frederic Brooks say "prepare to throw one away"?
Also, if we're going to link Joel articles from the decade before last, let me add this one which is merely ten years old, and elaborates the ideas from the previous:
All that said, I think there are things to be learned and gained from rewrites.
So to avoid starting from scratch they introduced a new language/compiler? Hrm... I question the scalability of this solution, what if every company decided to do this instead of biting the bullet and doing a rewrite?
Not phrases that usually go together.
And BTW, on IE6, the lack of competition resulting from the killing of Netscape was why MS can get away with stagnating IE for 5 years in the first place.
On the contrary, if any browser killed Netscape, then it would seem to be IE5. (Scary, eh?)
Assuming everything works as planned.
It's kind of rare that you see a company actually make that mistake now. But I guess Digg did.
I feel like I've come across a couple "bad" implementations of some concept (as I see it anyways), and thought the best solution would be to start over and redo it.
Are there scenarios where starting from scratch is a good idea? How do you know?
(As an aside, I don't think starting from scratch will revive Digg. I think its time has passed...)
Heck, there are companies that still run DOS "servers". Engineering black holes. They suck developer time in and bend all infrastructure around themselves.
When the new hire Steve shows up and deletes the whole thing and uses the time-tested model of the wheel, he is not a villain, and anything to suggest otherwise is poor management philosophy that will drive Steves away, leaving you with a bad project, bad management and bad engineers (AKA 99% of every project ever). Even if by doing so Steve introduces bugs in the two-wrongs-make-a-right consuming code (which is simply a bug) and isn't polite enough to discover this on his own. The flexibility and resources to make systematic improvements like these which combat cruft and maintain or repair feature velocity are why QA - automated or otherwise - exists.
Honestly though, I don't think the article really means to cover such a scenario. There are many times that engineers decide to replace rather than understand a system which is complex-for-a-reason, this is written specifically with that in mind.
I regularly see this as I use/develop against/contribute to Drupal - a marvelously complex-for-a-reason(usually) piece of engineering that happens to be written in PHP - a language with a community that still celebrates simplicity-at-whatever-cost. "Nevermind that the theme/cache/localization/form/whathaveyou system accounts for what I need, it's more than what I need and I don't trust code more complex than I (or any single person with a single use case for that matter) could have written."
He doesn't make that clear, but it's the only sense I can make of the article given his degree of experience.
So I doubt that applies at all.
And a Digg-type site is not that hard to build. It's light-years away from the complexity of a web browser, for instance.
But yeah, overall I agree. Why would they rebuild the same product? That's already failed.
The question is, which will be faster?
Right now, it's written to run on an old OS, with old versions of old languages. We absolutely HAVE to update this stuff as it's just stupid to continue programming in the dark ages (no code completion, no jump to definition, printf debugging).
But is it better to refactor the code and rewrite it slowly, or just scrap it, lose all of the old terrible design decisions, and move on.
You ask the question "Why do you think you'd make the design decisions correctly this time around?" Well, we didn't write the first version. It was given to a vendor that totally botched the job and it's our responsibility to fix it.
There might also be security issues. I've found that's sometimes a good rationale - if I've got code that will only work in PHP 4.1, and it's gotta work for the next 5 years, probably rewriting ('wholesale refactoring') is a much more prudent choice, even though it's "a complete rewrite". There will be no security patches for the underlying language - building on a platform with known and 'never-will-be-fixed' security holes isn't a good long-term strategy.
Yes, you lose "conceptual integrity" and your UX may be inconsistent in the transitional time, but those are small prices to pay.
What exactly do you think you're building?
I take "from scratch" to mean "we are totally rethinking everything!
Look - lets not b fucking morons. The ONLY thing bought was digg.com the name which has a PR/publicity pull.
You will fail - digg has sucked and will suck and even the cult of personality around kevin rose evaporated, like milk, immediately after joining Google.
The fact is that the word digg and kevin rose have represented only one thing - the desire to extract fame and fortune from outdated and poor thought out ideas.
I wish you only failure.
The second thought was that ground-up rewrites are almost never a good idea to begin with. You end up throwing out whatever's good about the old property along with all the bad, and risk turning off the members of whatever user base you have left (who presumably stuck around because they saw something they liked in the old version).
I suppose the population of Digg users is probably small enough at this point that the new proprietors aren't worried too much about whether they stay or go, though...
For a complex system, like an OS or a browser.
This is a bloody social news site, as trivial an application as it gets.
One man can write a half-decent one in a week.
And for ramping it up, even the scaling roadblocks and tricks are old news by now to the web building community in general.
I'm gonna have to disagree with you there. It's a fairly complex transactional system.
> One man can write a half-decent one in a week.
No, one man can write something that resembles a social news site in a week, but building a good one that scales takes a bit longer. :)
> And for ramping it up, even the scaling roadblocks and tricks are old news by now to the web building community in general.
That one I'll agree with. Their initial scaling problems should be fairly well understood.
That totally depends on your available toolset and experience.
That's either ignorant or boastful (or both). Any decent programmer will admit that they can't build a good and scalable anything in a week from scratch.
If you count your "toolset" as an entire framework that does what you want already, then sure, maybe it's possible. Otherwise you're just being foolish.
It wasn't noticed before launch because we echoed the v3 popular stories into the beta version of v4.
Digg was never paid for stories hitting the frontpage. And for all the flack it gets for this myth, it should have been.
And im certain promoted stories did exist, I remember them clearly marked as that.
They were ads that were pieces of content. Digg was in front of this trend with promoted tweets / stories.
I hope the site works better than the survey.
Clearly, they are taking the "mobile" approach, it just doesn't suit me very well
Mobile news? Are people that attention deficient?
Please don't use your phone while doing this.
Stop quoting Silicon Valley insiders and relegate them to a corner of the site if you must place any emphasis on "tech". They did a lot to ruin Digg with the endless self-promotion. Acknowledge Reddit like they never did and take inspiration from subreddits, but make them easier to discover. Reddit has yet to do this and it is a noticeable deficiency on their part.
I dunno if that's worth $500K, $500K can buy a fair bit of PR, but it's something.
Who are these groups? I'm (re)starting development of my own social news site, and I'm looking for a userbase to cater to.
Gaia Online - (http://www.gaiaonline.com/)
Obviously that number will drop off real quick, but still.
It's not that much of a loss for Betaworks considering if they do it right they'll start building a huge company if not they've lost $500k and may make a fair amount of that back from the traffic.
The rewrite didn't work right; old users were angry and new users didn't appear.
But maybe this will be better, who knows.
It just seems there's enough baggage for people to dismiss the new digg offhand if it isn't named something else. What do you guys think?
Good luck, chaps