Live data from Hacker News

"How hard can it be to implement?"

answers.37signals.com

41–50 of 102 posts

Re: "How hard can it be to implement?"

#41

Earlier quoted context omitted.

> I trust the competence of the 37s dev team. I don't, in large part because this shouldn't be a complicated problem to solve.

Yes, in your armchair analysis that takes into account none of the issues that they've dealt with in getting where they are today, any past architectural decisions that make this particular feature difficult to implement indicate incompetence. Your confidence probably serves you well (let me guess, early 20s?), but in this case you literally don't know what you're talking about.

> (let me guess, early 20s?),

No.

> but in this case you literally don't know what you're talking about.

I don't need to know what exact decisions they made to be able to tell that they were poor decisions. Easy things should be easy, and when they're hard, they're hard because of incompetence somewhere in the process.

FWIW, I've worked on a site extremely similar to basecamp (but with far more traffic, at least according to Alexa). I'm not speaking from inexperience: if this problem is hard for 37signals, it's because of failures of the implementation, not because the problem is intrinsically hard. Engineers who don't recognize that are not ones whose competence I would put trust in.

Re: "How hard can it be to implement?"

#42
if I were to sum up the counter-reaction to a lot of folks here who think that the claimed difficulty is too high:

You're right, under the right conditions. Namely: small site, early in lifecycle, and a perfectly normalized and non-sharded/non-partitioned database.

But I suspect it's more complicated because:

1. they have a ton of traffic

2. they want to maintain a seamlessly perfect UX everywhere

3. their database is denormalized, sharded and/or partitioned

plus possibly:

4. it's gotten at least a little crufty with age (shrug, it happens)

Re: "How hard can it be to implement?"

#43
post #5

Earlier quoted context omitted.

Why is a transaction necessary? Just change the one field project_id in the table todolists to point to the new project. Because the messages point at the todolist_id instead of at the project_id you don't need to modify anything else.

You're imagining files belong to comments, comments belong to items, items belong to lists, lists belong to projects, and changing the list's foreign key re-parents the whole hierarchy. Now consider that Basecamp allows comments on messages, todo items, and milestones. What does your schema look like now? Add a feature to show a user all recent comments across all of his projects. What does your query look like? How…

I don't see how this is a problem. The todolist messages still point to a todolist instead of at a project. Can you elaborate?

Re: "How hard can it be to implement?"

#44
post #30
post #24

Earlier quoted context omitted.

37signals don't use sharding. They use one database server with enough RAM to load the db into memory

One database server for the whole of basecamp? Edit: I found this: > With that in mind, we went looking for an option to host the Basecamp database, which is becoming a monster. As of this writing, the database is 325GB and handles several thousand queries per second at peak times. 325GB RAM?! But now they have multiple servers. Read more: http://37signals.com/svn/posts/2479-nuts-bolts-database-serv...

HP sells servers with up to 64 cores and 2 TB of memory. Considering the car that DHH just bought himself, they should be able to buy/lease several of them.

Re: "How hard can it be to implement?"

#45

Earlier quoted context omitted.

Yes, in your armchair analysis that takes into account none of the issues that they've dealt with in getting where they are today, any past architectural decisions that make this particular feature difficult to implement indicate incompetence. Your confidence probably serves you well (let me guess, early 20s?), but in this case you literally don't know what you're talking about.

Are we really taking cheap shots about age now? This is not how an argument is won and not how we do things around here. Your point stands on its own without ageism.

Fair point, but this type of hubris is far more common (and more forgivable) in youth. Is it ageist to recognize this fact?

Re: "How hard can it be to implement?"

#46

Earlier quoted context omitted.

Yes, in your armchair analysis that takes into account none of the issues that they've dealt with in getting where they are today, any past architectural decisions that make this particular feature difficult to implement indicate incompetence. Your confidence probably serves you well (let me guess, early 20s?), but in this case you literally don't know what you're talking about.

> (let me guess, early 20s?), No. > but in this case you literally don't know what you're talking about. I don't need to know what exact decisions they made to be able to tell that they were poor decisions. Easy things should be easy, and when they're hard, they're hard because of incompetence somewhere in the process. FWIW, I've worked on a site extremely similar to basecamp (but with far more traffic, at least acco…

Should you implement something with an array or a linked list? That depends. Should it be fast to locate an element in the middle? Or should it be cheap to add another element regardless of the size? Ideally, both, but you weigh the pros and cons and choose one. And even if it is the right choice, you might still run into situations where the other choice would have been better and people will comment that your decision was stupid.

Re: "How hard can it be to implement?"

#47
post #25

In the same vein, I highly recommend the article "How many Microsoft employees does it take to change a lightbulb?". This was features in Joel Spolsky's "The Best Software Writing 1" ( http://www.amazon.com/gp/product/1590595009?ie=UTF8&tag=... ). Link to article: http://blogs.msdn.com/b/ericlippert/archive/2003/10/28/53298...

Nice affiliate link. ;-)

Re: "How hard can it be to implement?"

#48

Is there really no simpler way to solve this problem? "Moving a message needs to move all of the message's comments, and all of the comments' files, and all of the comments' files' versions." Why can't you just change some top level reference in the database? I'm imagining a Projects table and a TodoLists table. Each TodoList has something like a projectID foreign key right? Why can't you just change that and automat…

Also, even if there was a good reason for that strange database scheme, they could have simply specified "ON UPDATE CASCADE" on their foreign references, and the database would have taken care of the nasty details. That's what databases are good at. (Or did their ORM prevent them from doing so?)

So this is more an example of "How to make simple tasks difficult" rather than "Even simple tasks have their pitfalls".

Re: "How hard can it be to implement?"

#49

Earlier quoted context omitted.

Are we really taking cheap shots about age now? This is not how an argument is won and not how we do things around here. Your point stands on its own without ageism.

Fair point, but this type of hubris is far more common (and more forgivable) in youth. Is it ageist to recognize this fact?

It is irrelevant and very disturbing for the discussion. So it may not be exactly ageism, but it is definitely inappropriate.

Re: "How hard can it be to implement?"

#50
post #30

Earlier quoted context omitted.

One database server for the whole of basecamp? Edit: I found this: > With that in mind, we went looking for an option to host the Basecamp database, which is becoming a monster. As of this writing, the database is 325GB and handles several thousand queries per second at peak times. 325GB RAM?! But now they have multiple servers. Read more: http://37signals.com/svn/posts/2479-nuts-bolts-database-serv...

HP sells servers with up to 64 cores and 2 TB of memory. Considering the car that DHH just bought himself, they should be able to buy/lease several of them.

Are these x86 servers? Or do you mean a single chip with 64 cores?
Post reply on HN