Spolsky: Alright let's get on with the podcast. Let's start with attendance, somebody thought that was very funny when we did that last week.
Atwood: <laughs>, I'm glad someone thought it was funny.
Spolsky: So I think we should do it every week now, <laughs>, Jeff...
Spolsky: And Joel present, good.
Atwood: Present, check, you have to check.
Atwood: Check, yes check <laughs>. A little Flight of the Conchords reference for anyone who doesn't know.
Spolsky: Of course. That show's great, and I think they're done, they're not making any more, or are they ?
Atwood: What ever ?
Spolsky: Huh ?
Atwood: Well they were in concert last night in San Francsico I know that.
Spolsky: Cool, well I think they were tired with having to come up with a whole song for every show.
Atwood: Hmm, I hadn't heard that.
Spolsky : Because they'd used up all their songs on the first season, and then they did a second season and it was just exhausting for them to come up with like a new song for every single show. It would be like doing a podcast every week or a blog post.
Spolsky. Of all the IDEs, I think the only IDE that really has any kind of marketplace where people actually make money selling add-ins is Visual Studio - it's only a couple of companies that actually make money selling add-ins for that.
Atwood. Right. I feel like I'm kind of the bad guy for advocating that they put
these companies out of business - but that wasn't really what I was advocating. I guess you could have the starter version that has the core features; the really key one or two things that it does that everybody would want. And then they could sell the upgrade version, OK, then you get the pro version that does this really cool stuff.
Spolsky. Well it's either cool or it isn't. If it’s cool, you want to have it, and if it's not cool, then why would you pay for it?
Atwood. I think there's a way to walk the line there. There's the whole Freemium
model, where the core product that's free, and you up-sell all these other things. You know who does that really well? Skype does this really well and in a tasteful way. Because the core us of the Skype product is free, you know, making calls internationally. But if you want to call into a phone number, that costs a little bit, or
have your own phone number that people can call that rings on your computer.
I pay for that, so they've up-sold me. I think there are ways to do it, but it's definitely tricky.
Spolsky: OK, so, was that the end of the list?
Atwood: I think so. Basically, the next thing I was proposing was having a contest to have the best user-designed IDE add-in with the intent that at the end of the contest we're going to take these and fold them into the product,, there’s no expectation… If you're going to make a company…. <laughs>
Spolsky: Yeah, I think this is just a bad business to be in, filling in the gaps in somebody else's infrastructure. And so, if you're going to build an add-in world, you probably have to build it in a way that the add-ins are assumed to either be free or ...
The only way you can really sell an add-in is if you're providing some very niche-y thing. Let's say that you've got the Visual Studio add-in that allows it to talk to some crazy... nuclear power plant thing. There are 4 people who ever need this, but they really need it. And then you sell 4 copies of your add-in for $1 million each. And there's value there all around. So, that's a legit market. But if it's just “hey - I've got better keyboard shortcuts for Visual Studio”, then you probably don't want to have that be your business model because eventually if what you do is good enough then the vendor of your platform is going to have to copy it
Atwood. Wasn't that true of the industry in general though? Couldn't you make
that argument for competing Excel vs Quattro Pro?
Spolsky. It's always true of vendors and the people that build on top of their platforms. Let's look at the Windows market. The Windows market was very successful for people who wanted to build on top of Windows and make money doing that because they could build something that Microsoft didn't want to build or wasn't interested in and make money doing that (because Microsoft couldn't
do everything). On the other hand there were certain things that were built on top of Windows that were basically just utilities to work around some limitation in Windows itself. So there were alternate shells, and alternate file managers and keyboard recorders and all those sort of utilities. And anything that was good eventually got folded into the Windows core product or just got re-implemented by Microsoft, usually in a better way than these utility vendors. Half of the shareware that’s out there is filling in some limitation in Windows or in DOS (that doesn’t exist any more). Remember all those DOS shareware for Terminate and Stay Resident (TSR) programs?
Atwood. Right. I do.
Spolsky. Eventually … it was compelling to multi-process, so Microsoft had to build a multi-processing operating system. Or Stacker which got into a big lawsuit with Microsoft and was eventually gone by building in compression so that your hard drive would always compress everything automatically and silently.
Atwood. I remember that.
Spolsky. That was a business for a while, and eventually it just got added to DOS in a way which … They sued Microsoft for patent infringement in that case, and they actually won the lawsuit against Microsoft but they’re still gone – although Microsoft actually did not infringe their patent, so… but the jury thought they did.
Atwood. This is kind of a universal problem. There’s something that – at its core here that’s not going to go away. There’s some tension here in the model that you’re going to have to deal with, unless you’re open source in which case that’s sort of the out. Ultimately maybe that is the answer. Maybe everything eventually has to be open source! <laughs> [indistinguishable] Licensing goes away, what-can-we-include-what-can’t-we-include goes away, it’s amazing how many problems go away.
Spolsky. Of course, getting your programmers paid becomes a new problem.
Atwood. Well, that becomes a new problem, but from the consumer’s perspective, let me tell you, it’s an attraction: you have the source code. Do you have any other questions?
Spolsky. Er, no, that was our three listener questions. Hey there was something – I sent you an email asking, that we should talk about…
Atwood. It was about feedback in interviews. The question is: if you’re at a job interview, and for whatever reason you don’t make it, how much feedback should you get about why you didn’t get the job? Let me give you my position first. My position first is that I think you need enough feedback that you know why it didn’t work out, so you can adjust. Maybe it wasn’t you. Maybe it was some particular thing, like “you wore a red shirt today and man, we really hate red shirts”.
Spolsky. Well if you tell somebody that, you’re not going to win any friends. Even if it’s true.
Spolsky: ...and you should become, and know it's working because you should become a programmer like the rest of us which is perpetually cowering in fear, shivering in the corner of the room, hoping that the bad man doesn't come back. <laughs>
Atwood: Is that one of the comments?
Spolsky: No, that's just like what the rest of our programmers are like. "Nothing can ever possibly work." You can write some code...
Atwood: <laughing> "Nothing can ever possibly work." That's Joel's programming motto. That's inspirational!
Spolsky: No code that you write can possibly work. That's the level of humbleness it takes. I have... have you ever written code and had it work the first time? I mean, it gets to the point where you are just suprised that it even appears to be working and you haven't yet found the bugs.
Atwood: Well when it appears to run then I know that there's some secret thing wrong with it so that's even worse. When it runs the first time. It's like then you're more afraid.
Spolsky: Like I say you have to be shivering, naked in the corner of the room, in the foetal position crying "make it stop, make it stop".
Atwood: This is a really great thread. This is a fine case for discussion questions that are actually on topic and add to Stack Overflow because there's some really brilliant responses in here that are really, really helpful. So I encourage everybody to look at that. And of course my watershed moment was "Code Complete" - you know finding Code Complete - so you can always throw a copy of Code Complete at them if they're in a place where they'll actually read it and not just let it bounce off their head.
Spolsky: Yeah, that is a good book. I always feel like it sort of, it's got some great stuff. Do you think that "Code Complete" needs to be updated a little bit?
Atwood: Well it was updated in 2004.
Spolsky: Oh it was?
Atwood: That was basically 10 years, so I would say it's reasonably up to date.
Spolsky: Ok, Ok.
Atwood: You know there's a few parts there that I don't agree with, obviously, but I think that's true of any book, like the Bible for example.
Spolsky: Sure it's got... just tear out "Leviticus" and you're good to go.
Atwood: <laughs> Exactly. But I think the two things that would help, what I reccomend is, one if they're in a place where they will accept Code Complete and will actually read and take it to heart because there's some really cool stuff in there for... even if you think you're a badass there's stuff in there that will help you.
And then two just being around other programmers who have more experience. As a young programmer who thought I knew everything I was lucky to get in with another guy who had been through a lot more failure cycles than I had and he would sort of shake his head and say "you don't understand how this stuff works" and he was right I didn't. If you're around a bunch of other young programmers that all think they know everything you're screwed. That's my point. Try to get into the company where you can learn from the people you're working with that actually have some level of experience above your's.