Podcast 016
[Incomplete]
Advertising, intro
[01:01]
Atwood: So I think we should start by you apologizing to all our listeners for last week.
Spolsky: Ummm.....
Atwood: You've forgotten completely already, haven't you?
Spolsky: What did I do last week?
Atwood: Well you opened with like a spoiler - like you started the show with a spoiler.
Spolsky: [whining] It wasn't a spoiler.
Atwood: From WALL-E. It was kind of a spoiler. There were some complaints and I think it was justified.
Spolsky: But...but...but...but...but...but if you knew the thing I said about that show that wouldn't really ruin your enjoyment. It wasn't like it was some big twist in the plot or something.
Atwood: Uh, a little... it was a little bit.
Spolsky: Alright, alright.
Atwood: I think you should end the show with a spoiler, not start it. That's really the flaw here it's to open with that just gets off on the wrong foot.
Spolsky: You know what I am going to do, I'm just going to spoil the hell out of Dark Knight right now.
Atwood: Oh.
Spolsky: Because I'm mad at that movie.
Atwood: You didn't like Dark Knight?
Spolsky: I did not, especially considering how much I liked Batman Begins.
Atwood: Really, you didn't like, wow, now we have the opposite. I didn't like WALL-E, you did.
Spolsky: Yeah.
Atwood: I liked Dark Knight. It's not my favorite. It's not the number one movie of all time, per IMDB.
Spolsky: Right, right.
Atwood: But it was, I think, very solid. What didn't you like about it?
Spolsky: There was too much stuff going on, there were too many different scenes, too many sets and like a million subplots and plots and sometimes three of them were going on at once it was just like stuffed... overstuffed....
Atwood: It was a very, very long movie. It was almost like two movies in one because they brought out the other villain. I'm not going to say who it was because I don't want to get in trouble like you. But it's like, "wow, they are going to have another villain," all of a sudden, it's like two hours in, it's like how many hours of movie are left?
Spolsky: It was really... exactly... yeah...
Atwood: It was a very, very long, but I thought good, you know, but definitely too long. I think that's a completely legitimate complaint. A lot of movies that I walk out of with no substantive complaints, the one complaint I can almost always make is that they were too long. Either a little bit or a lot, right? And this is the thing with like blog posts, e-mails, anything you do: no one is really ever going to complain that was too short. Even a presentation it was like "it was too short, it should have been much much longer." Nobody ever says this.
Spolsky: There's the old joke:
"The food was awful"
"Yeah, and such small portions"
Atwood: [Chuckles] That's right, so maybe that's a lesson to take away from this is: when in doubt, err on the side of making small [Inaudible]
Spolsky: Ok, well I'm really, really sorry if I spoiled Wall-e for y'all.
Atwood: Yeah. There were a few people that were, kinda upset about it so, I just wanted to mention it.
Spolsky: I don't feel like it's that kind of movie, I really, it's the kind of movie you can go see twice or three times and not lose anything, I don't feel like there was a bit twistiness to it.
Atwood: Yeah, yeah that's fair. So the big news this week on StackOverflow is design.
Spolsky: Yeah we have a homepage.
Atwood: So, I wanna, yeah we have a design that doesn't actually suck now, not like programmer, design, it's actually designer design, which is a big difference.
Spolsky: Who who who who. . What? Where's the where, Who's this designer?
Atwood: So the person that I got his name is Jeremy Kratz, and he'd actually emailed me on something unrelated, some something related to Coding Horror, and I went to his site and I was actually very impressed, I was like "wow this actually looks good", ya know?
Spolsky: [grunts agreement]
Atwood: and he had done a neat little site, it was a system builder recommendation site where, if you wanna build hardware, it would get the current bestsellers off newegg, and synthesize, yeah it was a really cool site, I thought he had a good idea, and he implemented it well, and it looked good and it felt, ya know kinda cool to use, and I was like "wow this is the kind of person that I might wanna have us help with StackOverflow" and he did offer to help, I am paying him to be fair but the usual slave wages that I pay, 'cause everything is, sort of self funded at the moment, and he's also gonna get site credited he'll be the official designer on the site, so he'll be listed next to us with a picture and stuff, so he'll be part of the "team" at that point. But yeah I'm very pleased with what we have, not that it can't be improved of course.
Spolsky: [agreeingly] no
Atwood: and I did.
Spolsky: it looks really good actually, yeah.
Atwood: yeah I posted it on the blog, and got mostly good feedback and just so you guys know, so feedback is a weird thing, particularly feedback on "design-y issues", you tend to get a lot of noise, more noise that usual 'cause, you know enter into the realm of preference, at some level with design right? I mean there's certainly things you can pull out of it, but I did pull some things out of it from the comments like, I reduced the number of colours on the page, I started to agree with people that there was just too much colour on the page, it's a little bit more monochrome, and I agree too it's a little Digg like, which, and I don't wanna sound like one of those people who's like "I don't even watch television", but I really don't go to Digg very often, like at all, so I don't have on the tip of my brain what that looks like, so we are aware of that. The front page is actually gonna be recent stuff not top, so what's on there is a little bit divergent from what we actually have, it's in the ballpark -
Spolsky: Wait, is there a difference between recent stuff and top? The front page is going to be the hot stuff. It's going to be both recent and highly rated.
Atwood: Well no, we might have a tab that takes you to "hot stuff." This is such a weird turn of phrase. [laughs] But for now it's going to be things that happened recently. So if you post a new question or new answer, it'll show up on the home page as, you know, as recent activity. Because one of the focuses of the site is answering things. So we want people to see things that are currently active, that just came out, and actually have a way to answer those really quickly. That's one of the focuses of the site. But we could definitely have a tab for hot or you know highly ranked things.
Spolsky: You could show both, you could show like three of four things that need an answer, and a bunch of things that are hot right now.
Atwood: Yeah, sure, sure yeah the homepage is pretty fluid at the moment, I mean it's one of the things that's going to change probably the most as we go through the beta. But I was very pleased to have that. And I want to also mention some other people that helped me with the design. Tim Almond was very nice in helping me get through some CSS issues with the old bad layout and I really appreciated that, he went through I think two iterations with me on email which was very nice. Also Rob Allen again tried to pitch in with some CSS. And I'm also taking with another designer Nathan Bowers who I may bring in later on just top navigation issues and some other and just get a second opinion on some stuff that I'm not sure we have right yet. But I want to give a lot of these people beta accounts because its so hard to design without actually experiencing the site. Static screen shots - that's the other problem with comments on a static screen shot, is people aren't seeing the rest of the site and I'm not explaining it adequately so they're not able to give the right kind of feedback sometimes. So as we get into the beta I'm gonna start taking the feedback a lot more seriously, obviously, because people will be using the site and will say "based on my usage of the site you should do X or Y", those are usually pretty good reasons to do things. But it feels really good to have a site that looks kinda nice and modern.
[8:09]
Spolsky: Yup.
Atwood: And it's fully integrated now, I think it took like three or four days to get everything integrated.
Spolsky: Cool, it stopped me when I tried to logon again, but that's okay.
Atwood: Oh you lost your cookie?
Spolsky: Yeah, no no, I mean, when I logged on I didn't have any questions, did you reset the database?
Atwood: It's not syncing to your account, oh we reset the database all the time.
Spolsky: Ok, that's why.
Atwood: During development, yeah, we reset the database quite a bit. So one thing we can talk about, and I got some feedback on the podcast that people want a bit more technical issues to dig into. And one we can definitely dig into that cuts to the heart of how our site works is identity. So one thing that is different for us, compared to a lot of other sites is, we will never make you log in and create an account to do things. That's one of the things we sort of took out of Wikipedia was that we wanted to make it sort of egalitarian. Another sort of subtle difference is, on every page when you're viewing say a question page, there's a box at the bottom inviting you to participate. You don't have to click through to another page or do some other thing. There's just a text input box, well actually it's a Markdown input box, a WYSIWYG kinda thing.
Spolsky: Hmm, mmm
Atwood: Or WYSIWYM, what you see is what you mark up [laughs], and it's inviting you to participate-
Spolsky: By answering a question.
Atwood: By answering a question, that's right, that is the unit of work on our site, asking and answering questions. And to do this, and I think this is one of the things, Marco when he criticized the site, didn't get, and it's probably my fault for not explaining it. You can log in one of two ways, either with an OpenID, right, so you have an existing set of credentials on OpenID which protects your password and so forth, and your identity. Or, there's your traditional, like in traditional blog comments, Name, Email, Homepage, ok? So, you can just type in whatever you want there and post an answer. Ah, and, you haven't created an account. And one thing we do that's kinda cool at that point, is, even though you haven't created an account, we will have a record in the database for you so we'll track your reputation score, you can earn badges, you can participate pretty fully on the site. I think we might put a cap on reputation as a non-authenticated user, in other words you have not associated an OpenID with your account yet.
Spolsky: Are you?
Atwood: So anyone could really steal your identity at that point.
Spolsky: Even, I mean, it's not even protected with a cookie?
Atwood: Well it is protected with a cookie, what I mean by that is, anyone could type in Joel Spolsky, right? That doesn't mean they're Joel Spolsky.
Spolsky: Yeah, but then you...
Atwood: Yeah, but once you attach an OpenID there's sort of an additional layer of security around that. And, as you pointed out - and this is the technical discussion I wanted to get to is - it's pretty much all centered around cookies at that point, because what other way do we have to track what people are doing?
Spolsky: Right.
Atwood: It's pretty much all cookies. For example, you managed to clear your cookies. Um, there's no effective way for me to get your identity back. Say you have reputation and badges, you could probably email me and I could somehow give you the cookie.
Spolsky: Don't even suggest this, because they will. [laughs]
Atwood: Yeah that's true I guess. But the site is gonna kinda warn you. We have sort of a nav-bar at the top, that'll pop up that'll say "hey stuff happened", um, and one of those things it'll remind you of is if you start to get reputation and badges of a certain amount and you have not associated an OpenID with your account, we'll remind you that, "hey look, until you associate an OpenID, we have no way, you could potentially lose all this stuff you've earned on the site, if you don't associate an OpenID with your account." So that's the only nagginess there will be and it's only once you get enough reputation. 'Cause certainly there's going to be a lot of users that just drive by, maybe give one response ever,
Spolsky: [grunts agreement]
Atwood: And eventually those people will be cleaned out of the database. We do have a way to de-normalise and attach just name, email and homepage to the records. Then of course users who never post an answer or a question, don't actually... nothing is created in the database for those users. That's one of the architectural changes we're making. Initially we were creating a record for every user that came to the site. Then I got really nervous about that, because I thought about 'bots and I thought about all the other people who come to our site anonymously maybe one time and never come back.
Spolsky: It's also a big hit on the database.
Atwood: Yeah, huge hit on the database.
Spolsky: Yup.
Atwood: So that's what Jarrod's working on actually at the moment. And I think that's actually the only blocking element on the beta at the moment, is getting the anonymous stuff working.
Spolsky: You may wanna ultimately set it up so that many of the things on the home page are cached as static files that the web server can serve quickly without going to the database.
Atwood: Sure. There's a whole another layer of optimisation we are going to do. The way I look at this, first make it fast without caching, in other words make it as fast you can without going the traditional methods of caching. And then, if that's not fast enough, or as you want to improve performance, then add the caching.
Spolsky: Yeah.
Atwood: So, that's what we're also going to do during the beta, is figure out where we can cache, and how we can cache and all those sort of things. But, the place I got this advice on the smooth ramp to accounts - where there's like no forced login - we put off forced login as long as humanly possible. Is Jan Miksovsky - he used to work at Microsoft - he has a blog called "Flowstate", I'll have to link it. And he had a great post on this that I really believed in, he really convinced me this was the right thing to do, was to let people do stuff on your site, and have this tenuous relationship early on where they don't have like a login, they just type in just a few tiny little things and remember their preferences, and remember who they are, as long as you can. And then just sorta roll them over, it's almost like a single or double click affair. For us it's like "oh 'OpenID', type in your OpenID, do the OpenID auth" and then bam, you're done. And then you get to, of course, fill out your profile if you want to, but at minimum we'll have your name and email, because those fields are required to do anything on our site. But I really enjoyed his perspective on that. And I think a lot of sites get this wrong, they have the "login wall". You hit the login wall really early.
Spolsky: Well, one of the things, much as I love OpenID - and the only OpenID provider I've tested is MyOpenID (obviously) - but much as I love them, there is one problem there which is: that seems to, that makes the wall higher, because actually signing up for an OpenID, it's a little bit complicated and there are sort of too many steps.
Atwood: Yeah. I think that's something that's just going to have to get better over time. I think that the ecosystem around OpenID is just going to have to improve.
Spolsky: It's never going to get as good as if you just, if we had our own native accounts, and you gave somebody that had all this collected, basically they have the cookie, and they've provided a name and email address, and a web site, and they've started to earn reputation and you could give them a button that just said "Wanna to make an Account? Just give me a password". And that's it, you know, even better: "e-mail me a password": a button that you push and it e-mails you a password. And you can go in there and you can change it, or.
Atwood: Right.
Spolsky: And, um, that's always going to be less friction than creating an OpenID account somewhere. And so we may have a problem for people who don't want to convert because of the OpenID barrier being higher. They don't want to convert to being logged in [garbled] real members.
Atwood: Right. Well, hopefully that's the kind of stuff we'll get out of the private beta, is that there's a lot of pain around OpenID, like people being confused, they can't create accounts, a lot of push-back, then we'll see. I mean I certainly leave that open. But that is, to me, one of the attractions of OpenID (both from the user's perspective and from the coder's perspective): if you can amortize this cost of the OpenID across 10 sites or 20 sites, or however many sites use it, it's really not that bad. But you're right; if the only thing you ever do for OpenID is StackOverflow then sure, it's a bummer. It's just another stupid thing you have to do, but it's the amortization of that across 10-20 sites that makes it worthwhile. Then from a coding perspective it's great, because we don't have to store passwords. If you can get out of the business of storing passwords, everyone's life is so much better, right? And you get choice right? There's a third party there. But part of the complexity is: there is a third party. In a traditional site, there's only two parties--you and the site. The site gives you a password, and you--you know. Granted, there's a third entity here so there's going to be a tiny bit more complexity. But it's the kind of thing I want us to grow towards as well. I think it's ultimately a better medium- to long-term solution for the world, so I want to push it a little, but not to the point that there's a lot of complaints and a lot of push back. And, of course, I'll consider having the traditional password stored locally as well, so we'll see. It's not written in stone by any means at this point. That is one of the things that Marco did not get unfortunately, that there are two ways to log in, so if you say, "Hey, you know what? I don't ever want to create an account," you're fine. Just don't expect to get a huge reputation number, and you'll be fine. And that's how your old discussion site worked right? Well you can create accounts on your old site, right?
Spolsky: For the longest time, you couldn't create accounts, it was just all based on whatever name you typed in. There was no way to own your identity. As soon as we switched over to FogBugz 6, that gave you the ability to make an account and basically claim an identity. Then you got a little orange checky-box next to your name that said, "this is a known person" as opposed to an anonymous person.
Atwood: Yeah, I have that data. And another thing people were concerned about--and I think you were right to bring this up earlier--was that if people see our site has tons and tons of .NET content, they're going to assume it's a .NET site. So I do think that's a risk, because I got that feedback just off the design that I posted.
Spolsky: They already think that we're just .NET people.
Atwood: [Chuckles] But I think that there's actually a number of programmers that will be drawn in that aren't .NET.
Spolsky: Yeah.
Atwood: So in practice, I don't think that's actually true even thought that may be the perception. I think there's a lot of other programmers from other backgrounds that are going to hopefully participate in StackOverflow. It's meant to be non-denominational. Are we going to start out then with just the content from the beta? Is the outcome of the beta then to generate "seed data"?
Spolsky: Uh, makes sense to me. You know what, I was talking to some people about this at lunch today, and I talked about, when I opened up that site, the .NET Questions site a long time ago, it was the same day that I opened I think four other sites if I'm not mistaken, I mean I think there were just a whole bunch of... I had Java, no Python Questions. I had .NET Questions and Python Questions. No, it wasn't Python, I take it back. What's that object Pascal thing that Borland does? Delphi, that's right. We had .NET questions and Delphi Questions. Nobody came to Delphi Questions, but .NET Questions filled up, like, right away; people started asking questions, and I don't think it was that many people--I think it was probably on the order of hundreds of people that were visiting it--but it was enough, it was a critical mass to make it a place where you could ask questions and get answers. So, I'm pretty convinced that, if you just open up the beta with, you know, even 50 or a hundred people initially, from that list that you have, and then you let more people in as it proves itself to be more stable, we'll get questions and they'll get answered, and it'll be good.
Atwood: No, I've been working on this thing, banging on it, long enough that I actually want to expose it to the world a little, you know. The whole point of the exercise of writing software is so that people will ultimately use it. And we discussed this, but not in a podcast: one of the saddest things that happens to a programmer is when you end up writing code that very very few people ultimately use.
Spolsky: Yes.
Atwood: That bothers me. It's like, you know, being an architect building a house, that nobody really ultimately lives in, is (I think) really depressing as a programmer.
Spolsky: I think architects probably design about twice as many buildings as actually get built, so [laughing] they're real used to that.
Atwood: Right, but it's very rewarding. Like, to me, the whole end state of programming was hearing users use your program and actually have some useful outcome from it, right?
Spolsky: [grunts agreement] For sure.
Atwood: Like, if you write a program, and nobody ultimately uses it, what did you really accomplish. I mean what change in the world as a result of that action? Um, so that's one reason I kind of like the, sort of the new Web economy, where people (software developers) can put code on the Web, and even if it gets a small audience, it's guaranteed to be a much larger audience than you would get at, say, some internal IT job somewhere, right? Because the user base is the world, right? So even if you have this incredibly niche focused little app, you are going to have so many more users use it and be affected by it in some way than you would in the old-world ecosystem of, you know, distributing floppy disks like America Online or, you know, however we used to do things before the Internet. It's like the Stone Ages. It's hard to even imagine how that was. I mean, shipping software to a store? No, that's very very old school.
[21:55]
Spolsky: You know, I have this memory that I keep going back to which is, when I was in college, I had to build an application that somebody wanted to sell. And I was going to develop it as a contractor for them when I was in school to pay for my tuition. And it was a DOS application, but we wanted to find a sort of a simple character-oriented windowing library that we could use under DOS to create simple pull-down menus and pop-up dialog boxes and that kind of stuff, because, obviously, DOS doesn't have all that stuff, it was just character mode. But there were a lot of companies that made these libraries that provided some kind of windowing system for DOS or some kind of a... you know, basically a... sort of like curses, for those of you that are familiar with UNIX. And, anyway the point of this story is that, I evaluated about ten of these different libraries. And I remember, at the time thinking... you know, for a long time, my memory of how I evaluated these libraries was: "you know, I downloaded this sample code off the Internet and tried it out, and then picked the one I liked best, and sent in my credit-card number." But, after I had this memory a few times, it occurred to me that the Internet didn't have the Web yet; the World Wide Web did not exist at the time that I went to college [laughing].
Atwood: [Laughs] You actually changed your memory, that's...
Spolsky: Yeah, and in retrospect, I was having a lot of trouble thinking, "how the heck did I find these ten libraries without the Internet? How did I even know what the options were to write to these companies, which I must have?" And I do now have a vague memory that they sent me floppy disks in the mail when I asked them for a demo disk; they all sent me floppy disks to try it out, and I tried them all out. And I'm pretty sure I just went to the library and looked at, like, programmer magazines in the back--and looked at the ads in the programmer magazines in the back. But it's weird that I can't even remember how I... I can't even remember what life was like without being able to look up things on the Internet, or to research things on the Internet. So much so, that I'm actually having these false memories of having researched things on the Internet that I obviously didn't.
Atwood: [Chuckles] Well, that's right. And, you know it wasn't that long ago, right? I remember the first time I had... do you remember the first time you used Google? There's a moment for you.
Spolsky: Uh, yes.
Atwood: The first time on Google. When was that roughly?
Spolsky: Larry Page gave a little talk (tech talk) at Stanford University, And those tech talks were actually broadcast--the video of those tech talks was broadcast on the Internet, which is surprising--but that was probably 1999 or something. And..
Atwood: Oh wow.
Spolsky: And the URL was at stanford.edu; it was like...
Atwood: Oh yeah, that was the whole Backrub era.
Spolsky: ... google.stanford.edu. I think they called it Google already. And they were actually, in the little tech talk, they actually had two algorithms that they were talking about. The one was PageRank, and that was obviously what worked. But they had another algorithm that had to do with finding pages that appeared to be similar and assuming that if, you know, three--ten, pages are all the same except for these things, that this might be a database, and each one of those pages might be generated from a database, and there might be some kind of relationship between those pages that are all the same except for this one thing. So, that was a slightly a less useful result that they had. And I think, um, it wasn't that long thereafter that I linked to it on my blog, so if you can find the earliest mention of Google on Joel on Software, that would prob...
Atwood: So wow, 1999 that's, that's very early. I think I found it around the year 2000. And I found it like linked on this, this, gaming site ShackNews which I've read for a long, long time. It's a long time like Quake, back when Quake was really big, and Doom. It's a sort of a news page for that game. But it became very influential in the gamer community. And I remember seeing a link to Google and saying "What the heck is Google?" 'Cause I was using AltaVista, at the time which is, I think, what a lot of people did use. But AltaVista is starting to really decline. I think there are two things that happened and people forget this. But AltaVista wasn't really that fast.
Spolsky: [grunts agreement]
Atwood: So to me the first reaction I had from using Google was like "Wow! This is incredibly fast!"
Spolsky: [grunts agreement]
Atwood: You know? And that to me was like enough to get me to switch because I could search just, seemingly, instantly. And then two, a lack of noise. So. In addition to speed AltaVista had started, you know, it got "portal-itis", right, where it starts to develop all these cancerous little lumps of, you know, "daily weather", and "news" and, like... They want to make it as a destination where you go there just to visit their site when all you really care about is the search results. And clearly Google did not have "portal-litis", and still amazingly, I mean to their credit, you go to the Google home page, I mean, does it really look that different than it did seven years ago?
Spolsky: Nope.
Atwood: That's pretty amazing.
Spolsky: Yeah!
Atwood: To have that level of restraint. I mean I wish more companies had that kind of restraint. [chuckles] Actually..
Spolsky: I was sure that Google was going to eventually change their logo 'cause it's just so ugly [laughs]
Atwood: Yeah, it's kind of an ugly logo. They changed their favorite icon
Spolsky: Aha?
Atwood: to that weird "g", like it's now a lowercase stylised "g". Lot of people were like freaking out about this favicon.
Spolsky: Just wait 'till you start, 'till StackOverflow goes public and you change some dark blue to light blue somewhere, you get like 347 negative comments. I notice that every time I change like the font on my homepage or something I get huge, huge, huge amounts of angry email because you only hear from the people that are upset by the new way of things, you don't hear from the people who are happy about the new way of things.
[27:25]
Atwood: Right, yeah I'm, we'll see what happens, I expect things - another reason to have this private beta, we mentioned one of the outcomes is going to have some seed data to get out of the beta and the other reason it's a private beta is to remove all the sucking. Right? There's probably mistakes that we've made that we can't see, until a certain number of people come in and start poking us and say "Why are you doing this? Why are you doing this?" and we'll see that we've made mistakes so hopefully we'll be able to iron those mistakes out before we throw it over the wall, but you're right beyond that, I mean, I don't know how fluid the site's gonna be over time. I mean I don't know how, are we going to have it push every week? Every day? I don't know, but certainly hopefully we can get a lot of the changes ironed out in the beta so we're not constantly changing the site.
Spolsky: Ah but that's ok. A lesson to learn is just ignore feedback that you get on graphic design after the first, you know once people have got used to a particular design you pretty much have to ignore what they say. You know if they say something useful they say this is not as good because I used to be able to do such and such and now I can't do such and such, I used to be able to read this and now it's too small or this doesn't work on Opera or something, the Nokia Symbian browser, that's fine and then you go fix that but if they're just telling you like "I used to like the old one better," that's what people always say and that's what they always will say.
Atwood: Right. You know what's really impressive is that the iPhone actually runs our site including the jQuery stuff and the Markdown editor which really impressed me.
Spolsky: Wait I'm going to try it right now on my new Nokia E71.
Atwood: I can not guarantee any other browser, but to me the iPhone is a browser platform. It's got an awesome browser that's almost like a desktop browser, and that's amazing. I mean I can't give Apple enough credit for that. I think that's a huge step forward. And actually the v2 of the browser that came with the new iPhone, and the new firmware and stuff, is even better and faster.
Spolsky: Ehh wait I'm looking... I'm loading it up in my cellphone. You know what, it's going to be asking me if there is some kind of logon, isn't it?
Atwood: You know what the logon is. Don't say it, Mr. Spoiler.
Spolsky: [Laughs] The logon is... WALL-E? I did something wrong now and I can't get back to where I was. Okay, I obviously can't do two things at once, trying to type http-slash-slash on a phone.
Atwood: You'll just have to take my word for it, because both of the members of my team, Jared and Jeff, both have iPhones and I don't yet.
Spolsky: Cool.
Atwood: I'm encouraging my wife to get an iPhone, though, 'cause her phone's really bad, so hopefully she'll get one of the newer iPhones.
Spolsky: I gave up and I should not waste this now and blog about it but I just gave up on the iPhone because all the things I thought I was going to use it for turned out to be problematic so, em, like, for example: I didn't think I'd have to wait in line six hours to get one...
Atwood: But you already had one!
Spolsky: No, no, I don't have one.
Atwood: Oh, you don't have one? So this will be the first iPhone for you.
Spolsky: Yeah, but I'm not getting one, I got a Nokia E71. It's much better than an iPhone in every way. It's got a brilliant keyboard...
Atwood: Well, how could you say that unless you've really used the iPhone? Surely you...
Spolsky: No, I've used them, my colleagues here have them, I've played with them.
Atwood: Yeah, your colleagues, yeah, sure, you've experienced the iPhone.
Spolsky: Um.
Atwood: Yeah.
Spolsky: I'm basically really happy with all the... with the features and the keyboard... it's the keyboard, because for me it's all about being able to answer e-mail and get it out of my Inbox before I ever, never have to see it again.
Atwood: Right.
Spolsky: Um, so the keyboard is ... is, er, kind of key and it is just amazing how much easier it is to type on this Nokia than it is to type on an iPhone screen, 'cause the keyboard's beautiful.
Atwood: I have seen feedback like that from a number of people [...] whose opinions I respect, like Miguel - the Mono guy ...
Spolsky: Yeah.
Atwood: ... said that he eventually had to go back ... just 'cause, he felt like, efficiency out-rules cute and pretty.
Spolsky: I mean, that's the thing if you're getting an iPhone for... if you're getting a phone for somebody who's not so technical or if you're recommending a phone and they're not really going to be like the power users then an iPhone is definitely very easier to use, but the kind of power-user I am, I've already, I've got this Nokia phone for two days and I've already downloaded two third-party applications to replace the built-in applications. The first was the built-in map application that Nokia ships with seems to crash a lot, but there's Google Maps and it's much better and it in fact can even use [...] GPS data from more sources than just the GPS, so I just download it Google Maps and believe it or not the Exchange connector that Nokia ships with for connecting to Exchange server is kind of weak and it doesn't allow you to move messages into a different folder, which for me is really critical, so I actually, there's a company called Dataviz and they make a third-party Exchange synchronizer that connects this phone to an Exchange server and it's 30 bucks and, it's brilliant and it does a much better job and it lets me move things to a folder... so that's like, it seems like a power-user feature but it's really really important to me and I'm willing to suffer from some lack of coolness in user interface and a little bit of set-up and configuration pain to get that to work right.
Atwood: Yeah, no I think that's totally fair. I mean I think that people who have used both... their opinions are totally legitimate.
Spolsky: Yeah.
Atwood: If you've had experience with both and prefer the thing that's on a iPhone, I don't think it's like "hyper fanboyism" at that point it's just ...
Spolsky: Yeah, it's just the power-user phone as opposed to the easy-to-use and elegant and cool phone.
Atwood: But... I've gotta give Apple credit for going in the right direction with the product, though, because, you know, Apple can be so resistant about, you know, "we don't think that this is the right way to use our product, so you can't use it that way." They've actually been somewhat open to least, you know, to having the Exchange connector at all.
Spolsky: [grunts encouragement]
Atwood: And, and moving the device forward for business people, and you know getting the 3G in there 'cause Steve Jobs made this whole to-do about how 3G is you know, is gonna drain the battery too fast, we don't want to include that: "It's for your own good that you don't have 3G." The whole reality distortion field.
Spolsky: Well, I have an interesting question if any of you are in the Apple Developer Program, maybe you can answer this question for me but, the third-party application that I installed here on this Nokia device is, it does synchronisation with Exchange, so it synchronises with the phone contacts, and it synchronises with the phone e-mail, and the phone calendar. And, I get the feeling that if you're writing an app for the iPhone, that you are in a sandbox that doesn't have the right to do those things. Now I maybe wrong here, but I would not be surprised if it was simply not possible to, you know, read and write and edit contacts, as an app, for users' alleged own alleged protection.
[34:05]
Atwood: Right. Well there is that big to-do that you can't be a background app. There is no concept of background apps.
Spolsky: Yeah, well that's another thing because I do that all the time. I mean, I'm literally, like, waiting for a picture to upload in the background while I'm doing something else in the foreground - ooh - this is a cool thing that I got working this weekend with this Nokia phone, which I really like and I'm pretty sure you could find a way to set this up on the iPhone too. So it's got a GPS, and it's got a 3 mega-pixel camera and when I take a snap-shot of something, it geo-tags it (automatically), and then I push another button and it uploads it to Flickr, and on Flickr it's all geo-tagged and stuff so now I have on Flickr, this series of pictures with dates and places, automatically.
Atwood: Cool.
Spolsky: I thought that was really cool.
Atwood: Yeah, that is very very cool.
Spolsky: Ah
Atwood: Erm, so, slightly different topic I do want to mention because I haven't had a chance to follow up my blog so this is as good a place as any so, I went through all that research about chairs, like, programming chairs, and I have an Aeron from 1998, so I've had the Aeron for ten years now and although I like the Aeron I'd kinda over time grown dissatisfied with, sorta the seating experience. I mean, for better or worse, as a programmer you spend a lot of time sitting, so, and although Jason Calacanis had a whole set of advice - and I know you disagree vehemently with a lot of his advice but there was one little part of it I want to talk about - it was advice for new startups on how to keep your overhead low and how not to spend a lot of money and just buy the things that really matter. And I liked that part of the message but one of his points I really appreciated was that he said "buy folding tables - don't buy fancy desks - buy folding tables and the nicest chairs you can afford." And I thought, "he really gets it." Like if forgetting all the other advice....
Spolsky: I agree about the folding tables. Nobody cares about what their desk looks like. It does not have to be mahogany.
Atwood: But he gets the fact that the chair is like hugely important to a software developer. Big thumbs up, I mean I think he does kinda get it, love him or hate him. I think he is on the ball with a lot of the stuff that he says and this is another example of that. So I felt like I could do better than the Aeron, although it is a classic and all that stuff.
Spolsky: Well you could get the uh.....
Atwood: So I went on this rampage of research. I posted on the blog all the research, all these different chairs I looked at and I found places locally. Luckily I live in the Bay Area so there is a lot of options for these high end chairs. Not everybody has these high end chairs. You are talking chairs that are like 500 plus dollars. So they are not going to be like home depot ....
Spolsky: No no...
Atwood: You have to go to back stores or design stores like: Design Within Reach.
Spolsky: Or you can order them on the Internet. Sit4Less is kinda famous for selling Aerons.
Atwood: And I believe that is where I got my original Aeron way back in '98. I would swear I bought it from them.
Spolsky: Probably [chuckle]
Atwood: Yeah. I ultimately decided on another Herman Miller chair: the Mirra. I was initially concerned because I figured: how different could it be than the Aeron? Siting in them side by side. Literally, I went to Design Within Reach and they have both of those chairs, the Aeron and the Mirra. It was a totally different seating experience. When you are spending that much on a chair you certainly want to try them out or buy from some place that has a really great return policy. If you live in Hawaii like this guy Rob I was talking to, his options are pretty limited.
[37:25]
Spolsky: That is interesting because the Mirra was originally intended to be sort of a low cost entry level Aeron. I think that the price has crept up to about the same zone as the Aeron.
Atwood: They have another chair called the Cella. I can not remember the exact name. That is the truly cheaper chair and that gets really bad reviews. It did not even consider that on my list. I do like the mesh chairs. There were a couple of preferences I had. I like one I like the mesh. It is open and you are floating. If it gets hot you have less to worry about. The Mirra had that for me. I think design wise this is Aeron V5. I think they have... a lot of the things I did not like about the Aeron, like, it's got that hard edge on the front, because it's, like, a mesh bottom, but if you tend to sit forward in your seat... let me give you an example so on the Mirra, the front is actually adjustable, there's a little thing I can grab right here, and pull down the front, and actually curve the front of the chair, which is huge, I mean, that's a major design tweak. Probably based on all those complaints from the Aeron about the front edge being kind of hard and unforgiving. I find it to be very comfortable. The lesson to take away from all this is: I think as a programmer, really invest in your chair. Take Jason's advice, take my advice. I'm sure Joel... what chairs did you guys get for the new office? Do you guys have Aerons?
Spolsky: Yeah, we're pretty much Aerons everywhere, but we don't have to even get them for the new office, because we're just going to bring them with us.
Atwood: Right. So, yeah, you guys are living the dream because you all have Aerons and the Aeron is a great chair, don't get me wrong.
Spolsky: There is a chair that I've never heard anybody try out, which is the Chadwick chair, by Knoll. After Don Chadwick designed the Aeron chair for Herman Miller, he went over to their competitor, Knoll, and designed this chair that they called the Don Chadwick chair, and it's supposed to be, sort of, you know, it's what he considers to be his second generation, or his next generation chair, after the Aeron.
Atwood: You know, they had that, at Design Within Reach and I hadn't heard of it so I didn't even try it. I was like "Oh, I've never heard of that, it can't be any good." I really regret that now, because they actually had that, at Design Within Reach and I should've tried it. It's another mesh chair which is great. Yeah, and the thing I loved about that, I wrote about that back in 2005 and that blog entry kept getting these really good, really knowledgeable comments from people that would find it and were doing all this research on chairs, so I wanted to re-visit it and sort-of fold in all the commentary that I had read and also the links people had found for me on all these really cool chairs. So there's a lot of really good options.
[40:00]
Spolsky: It's also really important when you get a chair to get the right size. The Aeron, for example, comes in three sizes: A, B and C. A lot of people who say "Oh, I hated my Aeron, it was really uncomfortable," were just sitting in the wrong sized chair.
Atwood: I think the Mirra - that's one of the concessions for the Mirra - I don't think it comes in different sizes, I think there's pretty much one-size-fits-all. But the Aeron does come in different sizes: A, B and C.
Spolsky: Anyway.
Atwood: Something to think about.
Spolsky: Yep.
Atwood: I mentioned that I pay slave wages (which is kind of depressing). But I do buy my colleagues nice equipment: both people working on StackOverflow now have 30 inch monitors (which is nice)
Spolsky: Cool
Atwood: And I just bough Jarrod a Mirra chair in terracotta and grey. He was complaining that his La-Z-Boy wasn't comfortable, and I was like: "Why are you programming in a La-Z-Boy? I can't imagine how that's actually ergonomic."
Spolsky: Was he also using a WebTV keyboard and his old 19 inch Sony colour Trinitron TV for a monitor?
Atwood: Exactly. I know I've talked about this before, but environmental things are so easy to fix. It's not like what Joel talks about where he has to build an entire office. These just things you can buy. Like, you just go to the store and buy them and bring them back and plug them in or unpack them. These are so easy to fix that it's irresponsible - if you know anything about software developers - it's irresponsible not to address these things immediately as soon as you hire someone. And we talked about The Joel List, and when I walk into places and I see programmers working, I go through a mental Joel List of just equipment [laughs] If they don't care enough to get good equipment for these people that they're paying sixty to a hundred thousand dollars a year - or more
Spolsky: Yeah.
Atwood: Then they don't really know what their priorities are, they don't really understand what they're doing on some level.
Spolsky: So by the (way)... So the new thing for our, I don't know if we've already talked about this, but height adjustable tables, which is one reason I would actually not recommend going with the Staples folding-leg tables, those are actually a couple of inches high, and so, your arm is going to angled at kind-of an uncomfortable angle if you're typing on a keyboard on one of those standard, folding-leg cheap-o tables that you get at Staples.
[41:48]
Atwood: Leg height is supposed to be a straight angle. You're not supposed to have your knees bend too much.
Spolsky: And your forearms should be horizontal to the ground, and your feet should be flat on the ground, not just sort of floating up in the air, and that determines exactly one keyboard height that you can use ergonomically, once you do all those things. So... anyway...
Atwood: Right, another thing that's kinda cool, this is really kind of optional, but really fun, is monitor arms. Now I don't know about the 30 inch monitors because those are enormous, but I have these Ergotron monitor arms and it's really, really fun because I can position the monitors, like, however I want. I can move them up, down, side, you know, I can even change the rotation. Because at my previous job I would flip the monitor around so somebody could see, because I have three, right ? So I would take one of them, this one on the side and I would just slide round and say "hey, take a look right here". It really is kind of fun and there's a certain science of where you're supposed to position your monitor. It's supposed to be, the top of the monitor is supposed to be, like the top 20% is supposed to be level with your eyes.
Atwood: Yeah. The monitor's not supposed to be really high.
Spolsky: OK.
Atwood: I mean, that's just the ergonomic advice, you don't have to follow it.
Spolsky: No, that's what I've been doing because that's as high as my monitor goes. But I thought it was too low.
Atwood: [laughs] Yeah, that's how it's supposed to work.
Spolsky: Shall we take a question ?
Atwood: Yes, lets take a question.
Spolsky: We have a really good question that Josh Parris,
Atwood: Oh, that's right,
Spolsky: It's kind of long, he's actually gone and he's collected snippets of previous calls to, erm, hold our feet to the fire. So here's Josh.
Josh Parris: Hey, Josh Parris here.
Spolsky: Think of something controversial for us to debate for next week. If you've got a controversial thing that you think me and Jeff will disagree on, then that's what I'm going to play.
Parris: Remember this from podcast number five?
Atwood: So that puts it at, lets see, what is it? It's the middle of May now, so, end of June - early July.
Spolsky: So how do you get this 6 to 8 weeks? What's this based on? Did you like make a list of tasks that you want to complete?
Atwood: uh no, I er.. That's just sort of... err... off the top of my head
Spolsky: [laughs] Well okay, you're doomed Jeff. There's some controversy. You, sir, are doomed, because you don't know what things you have to do.
Parris: A fortnight ago:
Atwood: The private beta is still scheduled for this month, it's looking like it's going to be more towards the end of this month. [nervous giggle]
Parris: And now this last week:
Atwood: So, just so everybody knows where we are, the original plan was to have the beta this month. We might be able to do that, maybe at the very, very end of the month, but I think it's looking more realistic that it's going to be slightly into next month, maybe 2 weeks?
Parris: So that could be construed as quite a blow out, maybe six weeks, or double. I want to know why this blow out seems to have surprised Joel - isn't there some measurement of progress against a task list, or at least some on-going reassurance that the completion date was still looking good? Why has the schedule slipped on a weekly basis - first the end of July, then mid August? Why didn't Jeff listen to Joel?
Why was the blow out so substantial?, and could FogBugz have helped? Was it due to poor estimation - FogBugz does estimation, right?
Spolsky: Ok, Ok Josh we get the idea, that was Josh Parris. Excellent question, then he goes for about forty-five more seconds of hatin'. So Jeff,
Atwood: Right
Spolsky: First of all I was not surprised personally, I said you were doomed, so I don't know why he was saying that I was surprised.
Atwood: Right. We'll, I mean the level of doom was pretty low in the scheme of things. Does it really matter if its two-three weeks beyond what I said it would be? I don't know. First of all, to come clean: when we started the project, I would say after I left my previous job and started working on this. It's not that I wasn't working, but I spent my entire adult life and I don't think I've ever taken a vacation longer than two weeks other than for my honeymoon. I kind-of did want some time where - I don't want to say I wasn't working, because obviously I was doing the blog, and was certainly following up, you were still getting the domain name and all that stuff - but I wanted some low-impact time where I wasn't really pushing it really hard. [laughs] And, kind-of just relaxing a little bit.
So I will say that I could've been more aggressive early on in assembling the team and just getting the infrastructure in place to do everything we needed to do. So some of that is probably attributable to me not being as aggressive as I should've been early on, but once we had the team together once I brought Jeff on, Jarrod, we started with Jarrod and Jeff and I brought in designers, I think there's a certain amount of variability and McConnell talks about the Cone of Uncertainty I don't know if you guys have seen this but its like a graph that goes from left to right and its just like a cone, as you go further in, you have a better picture of how close you are to the end.
Spolsky: [grunts acknowledgment]
Atwood: And I feel that the reason early on I was giving these "Oh, well umm 6-8 weeks," it's was like one of those Polaroid cameras that has the auto-developing film. It's like you can't see the picture just yet, its developing over time, it might be a chair, it might be a dog [laughter], it might be a ball. You know, in a couple of minutes you can see very clearly what it is and where you are. And I think thats now why we're saying we're actually going to beta essentially this week, or by the end of this month. So it's a bit forward of what we thought because -
Spolsky: Oh no no wait a minute, this is podcast number sixteen, and it was podcast number one that we said six to eight weeks. So even if you were generous and took eight weeks that's about double. It's about four months instead of two months. Thats okay - it's not killing me, but let's call it what it is. I think that we slipped by about 100% but I don't even think that we slipped, I feel like what we did wrong - and I don't think it has any consequence - but... we never had a list of features that we were going to have, and a list of tasks.
[48:33]
Atwood: Wait a minute, hold on, because in podcast number five I said that the target date was July, like early July. And it's the end of July, and it's not that much off, I don't know I don't think that it's a massive blowout of schedule.
A: Because it doesn't really matter, in the big scheme of things; and
B: I wasn't that far off.
I don't know
Spolsky: Okay, but the reason I say you were doomed on whichever episode I said that you were doomed - and I didn't explain it then really was: given we didn't have a list of things that were going to be done it was, it is, impossible to make an estimate. All you can say is, [laughing] "I've done StackOverflow before and the last time I did StackOverflow it took me four months." You can't really say that. The only estimate you can do without any kind of information is, we have the following constraints: we have to ship something in six months (let's say) and we will cut features until we are shipping in six months, so therefore you can say "we are going to do it in six months," with some reasonable-ness. What you can't say is what you will do in six months.
But I don't even feel like - I feel like that there's a mistake and I kind-of want to leave it standing just because I thought it would be a fun, teachable moment for our audience, and forgive me for being didactic prick - but the point I want to make all the time is that: if you don't know what you're going to do then you don't know how long it's going to take. Even if you know in the vaguest terms what you're going to do, if you don't have an individual list of the specific things, the specific tasks, the specific functions you're going to write, the screens you're going to design, the domain names you're going to register and all that kind of stuff. If you don't have that specific list of tasks it's just impossible to know how long something is going to take in our field. This stuff isn't done that often, every time somebody goes to build a website their doing something that has never been done before. Or goes to build a software program.
Atwood: Right.
Spolsky: So, without a list of tasks, I feel like that sort of is the beginning, and once you have a list of tasks then you can try to estimate how long each of them will take, and even then they should be really short tasks, say 1-2 days. You have to have that level of granularity to be able to estimate.
[50:52]
Atwood: Right, I mean, all that is absolutely true. I think the thing that works against me is: let me ask you this. When you went to college, were you a note taker? Would you take...
Spolsky: Ummm yeah.
Atwood: So you would take like volumes and volumes of notes about the courses that you were in and stuff like that?
Spolsky: Ummmm except for senior year. After three years of taking notes that I never looked at, I realized it was a waste of time [laughs]. No, actually, you know what? I finally realized that most of... that the taking of notes helped me to remember things because it allowed me to organize a second way, and I never had to look at them again -- if I didn't take the notes I wouldn't remember the things.
Atwood: Right, right, and what we're talking about is a little different than taking notes, but I am not a note taker, like at all, almost like pathologically so. Like, I really don't like to take notes.
One because I don't really look at them; and
second because I just... there's something about me where I can't deal with taking notes.
But that said, I mean, creating a to-do list is obviously a great way to organize your life. We talked about "Getting things done" like last week? I mean, how would you even begin to get things done if you have no list of what you're supposed to be doing. So that, obviously, I do agree with, and I think there's just a pathology in my case where I'm just "Mr. I Really Don't Like To Write Things Down".
Spolsky: Now, I should say that despite the fact that this is an instructive moment, I didn't really make a stink about it at the time because I don't think it matters in our case, and I think that sometimes you just don't have dependencies, you don't have people that are depending on you, its okay to be two months late -- well we do have a bunch of people that are sitting around waiting for this awesome product that we're gonna ship, but, you know, none of them is holding their breath, and um....
Atwood: But also, think about visibility, so really the problem with schedule is when you have no visibility, so you have no idea, I mean, not only from a development level the people building it have no idea, but the people on the outside have no visibility. I do not think that's true in our case: like the whole thing about what we're doing is like its very public, very visible, I've been posting on the blog, right? You've had access from day one to the site.
[52:48]
Spolsky: Okay, well, yes that's true but, but also don't forget, I think there's a common human mistake, there's a common perception... I wonder if I've talked about this in the podcast? Well, like I said this podcast is just me repeating myself so I'll repeat it one more time. There's a common mistake that people make which is to think that they know more, that they have a bigger picture than they actually have. And the reason is that all of your senses are fairly limited, like especially your sense of vision, it's limited to a very, very small area where you can actually see, and your eye just dashes around and fills in and answers questions that your brain has. So you're looking at something and you know what looks like that and you wonder what's going on over there because something just moved and all you know is that something moved and so your eyeball turns and you fill that information in. And you've been doing this for however many years you've been alive on this planet and so you brain's gotten really good at this and the brain is filling in this appearance, you get the illusion of having this high resolution picture of everything around you even though you only have a very small picture and the other parts can be filled in just by moving your eyeballs. So that's just the way the eyeball works. And there's probably some technical terms that I could be using there but I don't know what they are.
Atwood: Okay
Spolsky: And so, wait
Atwood: That's a really good point, so
[53:57]
Spolsky: So because you're so used to your eyes working this way and things in general, you have a real tendency when you think about, like "I'm going to build a Q&A website for developers," you have a tendency to say "I know how this is going to work, I know all these [...] answers." And then when you actually go to build it all the sudden you realize, you know, "We never thought about how people will log on," or "we never thought about what would be on the home page." We went for a long time without thinking about that at all, and yet we sort of felt, we both felt this illusion of having a complete picture of how this site would work. And, the reason I told that whole story is because this particular illusion that you know what's going on when you don't is what dooms software schedules because you think that what you are doing is straight forward but that's only because you haven't thought about it at any level of detail, and when you think about it at that level of detail you uncover all sorts of things and maybe some of the architecture decision you made early on don't jive with what happens when you think about the detail later on down the line. And maybe you spend a lot of time building something that when you get to the, you know, it didn't happen to us but sometimes you could have spent a lot of time building something and then suddenly get to the point, where all of your tables depend on the particular other table being available and you suddenly realize you just don't ever want to have that table. Or, you know, some architectural change you never explored the business of what's going on the homepage and when you suddenly do go to the homepage, you know, some earlier technical decisions that you made turned out to be wrong. I don't think that really happened.
Atwood: Well this is why... This is why I, we had timing framework in very early, so we could tell exactly how long A) the page was taking to load and B) all the queries that were flowing through the system. But I do agree with what you're saying, I think this is a really good point, is that your mind's eye tends to fill, you imagine the app as you want it to be. It's like "Oh how hard can it be, we're just going to plug in a login-thing here and I've done this a hundred times and it will take no time at all." So I think that's an excellent point, but I think it's the job of more than one person on the team to keep you honest. Right, like you're there to keep me honest. Jeff and Jarrod, my teammates, are there to keep me honest. Our designer Jeremy is there to keep me honest. You have, you have a consensus opinion, based on a real world artifact, right, we're not imagining it, we actually have a dev site that you can go to right now and see exactly where we are and exactly what works and what doesn't. So there is an objective reality there, and there's more than one person involved, so I think that's the important thing to take out of that. And then also that: don't procrastinate. And I think you again, excellent point that you always imagine that it's going to be easier than it is, and you can't think through all the details that are going to go wrong, and all the weird things you're going to have to think about until you actually start to do it so the worst thing you can do on a project is procrastinate. And I know this is very painful to hear, because I'm also like a world class procrastinator. And like I said with the schedule, I probably should have started a month earlier than I did, honestly. And I attribute that entirely to my own procrastination. But the sooner you start, the sooner you'll know all the things you need to know about what you're doing. That's when the imagining hurts you, so start immediately.
[56:53]
Spolsky: I feel like when I get into this debate with people that I always say to design or write specs or creating drawings and stuff. And they usually say something along the lines of what you just said a minute ago, which is there is a million details that you couldn't possible foresee so just start and see what they are. I would say "yes, there are a million details, you can't foresee some of them, but you can foresee a lot of them." If you try to foresee all of them in advance then you will save yourself some time down the line because you may notice that you are designing something in a direction that you aren't going to use or that it's not going to make sense further along the line. This matters a lot less for a small startup like what we're doing here, building a simple little site using state-of-the-art tools. I can imagine that there's an awful lot of business situations where you're building software and shipping on time is a really really business-critical thing to do. So for example: think about just how bad the iPhone 3G software was on the day that they launched and that's probably because they had these huge commitments to get this thing out on a certain date. And they pretty much had to ship it when it was unready, they had to rush something out and now they're suffering from meltdown as a result and the software is as buggy as heck. But hey they'll get it patched up but think about if you were working at that Apple development team shipping some piece of software: you don't have the option of being eight weeks late. You just don't. You're going to get fired, and then [sarcastically] you're going to get cut into little pieces and then the pieces are going to be thrown on fires - separate fires [laughing] so there's no hope. That's what going to happen if you're late. Another example might be a game studio developing a game that has a tie-in with a big movie with a release date. If your game isn't ready on that release date then your going to lose 90% of your potential customers for your game.
[58:50]
Atwood: I wasn't really advocating that there be no upfront design. I was really advocating that there should be just enough - where "enough" is debatable obviously. Enough design so that you're not just randomly doing things. Have a plan, but then start on the plan like as soon as possible. And then just the whole iterative nature of, you know, keep building, then plan some more, then build, then plan, I think is the way to go.
Spolsky: I think actually for a lot of new applications people are developing the first spec you may want to write and the first schedule you may want to make is for version 2.0, or the first big upgrade.
Atwood: Really?
Spolsky: Yeah, I can imagine a lot of things - think of like Twitter, for example - where just getting the first version out there, you have no idea how people are going to use it, you have no idea of what it is going to evolve into.
Atwood: That's true.
Spolsky: Just do a 1.0, that's small, you build it in eight weeks. Nobody is about to starve because they're going to run out of money - although you may be in that situation, but we're not. [laughter] If it takes a little longer and you know there's going to be a major change in direction, but if 2.0 is where you say: "Ah yes, we need SMS," or we need whatever it is that they want to have for 2.0 and it's very clear what thing you're going to do. It's just the one thing so you can sit, you can stop and you can design it and you can schedule it.
The other business reason why it's often important to schedule things is that when you sit down and design and then estimate how long they're going to take you get some surprises like: "this is really going to take a lot longer than we thought," or "this is going to take a lot less time than we thought." It's pretty important - I think that everybody agrees - at any given time you are working on a feature that is going to get you the most bang for the buck, or increased sales, or increased customers, or increased eyeballs or increased whatever it is that you are trying to get, for the least amount of development work. And those are the features you want to do first. But if you don't have schedules and estimates you don't really know which features get you the most bang for your buck. You don't have any information to feed into that equation. So you do some random thing that sounds fun and maybe it takes two years instead of four days and you suddenly realize "that thing would've been worth four days and sure-as-heck wasn't worth two years."
[1:01:01]
Atwood: Right. I think that continually revisiting those decisions is the important thing and in the previous podcast I talked about the desire to create public artifacts. I don't have a getting things done, I do like to create public artifacts, I believe that's really important. The fact that Josh was able to call me on this is because I have been in public talking about this stuff, so this is the flip side of doing stuff in public, is people will hold you to your claims, and they will also look critically at what you're doing and I think this is hugely important. Whereas is if I was just in isolation, like I went totally dark, you wouldn't know where I was, I wouldn't be making these proclamations, "I don't know when it'll be done, I'm not going to tell you anything." Just the fact that it is being done in public and is being shared helps you get thing done on some level even if you are totally an amateur, which I essentially am. The value of other people looking at it will help you finish (I think). As long as you are somewhat rational about the way you approach feedback. It's a great question and so thank-you Josh for putting that together, I think it's a totally legitimate claim to make.
Spolsky: Cool, alright, that was an interesting conversation. Thanks Josh for the question. Josh, also while we also have you on the line, thanks for all the transcripts that you've done, and all the editing of transcripts on the wiki.
By the way, if this is your first time listening we do have a large team of volunteers around the world who are all contributing to the transcript website which you can get to at blog.stackoverflow.com and there are transcripts that are provided for the benefit of search engines like Google and also for the benefit of the hearing impaired who can't listen to our podcast. So thank-you to all those volunteers who contribute those: thank-you very much.
If you have a question or something you want to debate or something interesting or something that'll cause an argument between me and Jeff here, because we don't argue enough. Please record it in the form of an MP3 or Ogg Vorbis and e-mail it to podcast@stackoverflow.com.
Atwood: However it cannot be about learning C. That's my rule. It can't.
Spolsky: That's done. Hey wait: are you the one who did a blog post about how you need to build your own computer so you know how computers work?
Atwood: Yeah, I did write that.
Spolsky: Yeah. But you don't need to learn to write C because that doesn't have anything to do with how computers work, but uhh. Anyhow.
Atwood: Ugh, Next show, next show.
Spolsky: I think we'll talk about C in the next show. Thank-you for listening and we'll see you next week.
Atwood: Bye.
[1:03:45 ends]
Outro, advertising
[1:04:49]