Papadimoulis: Did you see the sunrise this morning, or not make it up that late ?
Atwood: Who me ?
Papadimoulis (& Spolsky): Yes.
Atwood: No, I don't remember actually it all blends together after a while.
Spolsky: What's going on here?
Spolsky: Snap out of it man we've got a podcast to do.
Atwood: I'm ready.
S: And WTF stands for
P: Worse than failure, that was established, yeah we actually established that a couple years ago. I don't know if you guys remember there was a bit of a name change on the site...
S: And people were not happy
P: It didn't work out so well, in retrospect probably keeping the daily WTF was the way to go. I don't know what it was... it just didn't feel right saying it. We obviously talk about the site here at the office, every time any of us said worse than failure, it didn't quite fit.
S: It's like a Bowdlerized version of Shakespeare or something with all the good stuff taken out.
P: More or less. It's hard to say, at the time it seemed like a good idea to kinda go with a name change, but ya know, I'm kinda glad to be back to the old name or the real name, whatever you wanna call it.
A: Changing the name was the ultimate WTF. I think everyone was scratching their head going Wow, that's a real WTF. Why would you change your name?
S: Well, I'll tell you how... new coke
A: Now but you have a good name. I want to change it to something really crappy and see what happens.
P: In fairness, I thought the name was good. I thought it was a clever acronym. It was the result of groupthink.
S: Decisions by committee! You keep going until nobody finds any offense in the thing, and nobody finds any delight in the thing.
P: Well I don't know, we all like the name, we're all like everyone's going to love it because it's kind of clever, yeah but we all just tricked ourselves into thinking that it was the right way to go.
S: Who's we? Who else is there? Is there a whole institution behind The Daily WTF? I thought it was just a guy with a blog.
P: Well, yeah, it is a guy with a blog. I'm the guy, and obviously I have the blog. But I do have a job, a day job, at Inedo and we're a software company that's in the business of helping other software companies develop software better. I'm still working on the elevator pitch, but basically we're in best practices consulting and that sort of thing.
A: I didn't know that.
P: Yeah. Well, we used to do a lot of-we still do-custom, proprietary business software. But I don't know, have you guys developed that? I know Joel, you're primarily with products, right? FogBugz, and CityDesk, and CoPilot, right?
S: Exactly. Totally. No, we haven't done any consulting for a long time. We did it in the old days to raise some money.
P: You know, I really like it. Love doing the business applications, but I'll tell you, I think it's a little more exciting to work in this realm and I've been doing the... helping people do the better software, whether it's continuous integration or whatever's gonna help the process go better. What's fun is the Daily WTF has helped me learn just how how wrong so much of software is, or at least software development at so many places. So it's kind of given a unique perspective on things.
S: We are talking today to Alex Papadimoulis, who is the blogger at the Daily WTF, which is a blog, if you haven't seen it, about all kinds of things going wrong in software development. Right? It's mostly software development, although I see wine bottles here on the front page...
P: Information technology. But, yeah, generally software development.
S: Is there a difference between information technology and software development?
P: I like to think IT kind of encompasses maybe the network. IT is a broader domain. Software is just internal applications, external applications, whereas the IT organization handles all the servers, the desktops, phone systems, they seem to get it all.
S: And you guys always have, besides having actual bodies of bad code, things are always written in an exciting, story-like way. Do you get these things submitted from people and then rewrite them, is that what goes on there? Do they submit them correctly in the first place?
P: You know, very rarely. And I'll tell you a little bit of background: we started doing all exclusively code, which... the bad code is fun to read. I think like writing, and I know Jake, he helps out on the site, Mark, we all like writing and it just kind of fell into the format of starting with a fun paragraph at the beginning of a code snippet to really just writing stories in a unique manner. I don't know if you guys read Discover magazine, but Vital Signs sometimes serves as inspiration for how we try to tell stories. You know, at the end of the day, some of these things can be pretty boring in software development.
S: And although it is funny to read some of these, I'm just reading this one where a guy has created a bunch of constants for every possible number of spaces. And then written what looks like a select statement. So he's basically reimplemented a function that is already available for you.
P: And I believe -- you know, I think that one is "Spaced Out" -- he not only did that, but he reimplemented a few times in his own code, which is pretty impressive, I might say.
S: And so this is sort of humorous, but on the other hand you sort of feel sorry for these people who are writing bad code. You imagine that they've woken up in the middle of the night and they're feverish, and they don't completely understand what's going on around them, and they need to somehow make their computer do something. And through the haze and the fog of the high fever and the nausea and the explosive diarrhea, they're trying to write a function that produces a given number of spaces. And they just do the best they can and you sort of have to feel sorry for them, a little bit, creating code like this.
P: Yeah, I think that's a part of it. Definitely, you got the guys who are really struggling. But you know, I've worked with enough developers, especially in some of the larger companies, where it's their way of life. They don't see this as bad. It's kind of like, You know, it works -- sure, it might be a lot of duct tape, patched together. But that's the way they see it.
S: Isn't that being pragmatic? Isn't that the ultimate goal as a programmer, to be a pragmatic programmer? Hey, the code works...
P: I don't know if that's quite what "The Pragmatic Programmer" is supposed to be but I guess that's one way of looking at it.
S: I had that person. I was in a meeting at MTV with a very hyperactive executive. This was like 1994 or 1995, the web had just come out, we're talking Netscape 2.0. And she wanted an effect where when you click from one page to the other, the web browser would crumple up like a piece of paper that had been crumpled up and thrown across the page and then another page would then appear. And I can see where she got this idea because she was from television, right, and this was like an effect that you have programmed into your little television switcheroonie things. And yet, of course, there is no way to do anything even remotely like that with HTML. I mean, now you could probably do something with Flash or whatever but at the time there was no way to do anything even remotely like that. So we said, "This absolutely cannot be done with HTML, what you are describing is not -- we cannot do that on the web ever under any circumstances... no." And she said, "What if you use SQL Server? I heard SQL Server was ****ing amazing." Because I guess somebody had been telling her about all the awesome new features in SQL Server 6.0.
P: You know, I think I've worked for or at least seen the same person too, because that's a recurring thing. And if it's not SQL Server... I often get methodology. "Why don't we do Test Driven Development?" or "Let's try Scrum." "Can you do it in Scrum?"
S: I sometimes refer to this as management by Delta Airlines In Flight magazine. Where your boss has read something in the In Flight magazine on the plane, and then wants you to then implement that somehow.
P: I kinda like that, yeah, and I can see that happening too.
J: So… but we probably should talk about localization because I pissed off so many people last week.
S: Have you, what’s the word, recanted?
A: I see this… no, I haven’t. I should apologize, I didn’t mean to offend anyone by saying that, like, if you don’t know English than you suck. That was not my intent, with my statement.
S: No, I just edited to make it sound that way.
A: No, no, actually, I could have been more clear. But I think there’s two things: one is that, you know, we have to serve our primary audience really well. And for programmers, I really believe, that the primary audience, in terms of just reaching the biggest number of people that are programming, is really going to be in English. So that what we have to focus on. So that’s number one. And point number two, is that, it’s perfectly fine to have, you know, other communities form around other languages. And actually it sort of bothered me a little, Joel, that you sort of implied that we like had to own this whole pie. Like if people were talking about programming in any language, then we want them to be on Stack Overflow. And I don’t necessarily believe that to be true, at least, that not really my goal, to own the world of programming. I just want to have one place that we are building, that is centered around English, because we believe – I believe, personally, it’s the de facto language of programming. And that’s really all. And, you know, if you know English that’s great, if you don’t know English, that’s fine too, there’s plenty of other place you can go. I don’t think we need to own the whole pie.
P: The part that I never understood about programming in another language is the keywords. You know, I only speak English, so, you know, for me it’d be hard imagine, I mean, programming in another language, you know, code comments, variable names, things like that. I have seen plenty of foreign code. Is that you know what’s driving your overall thought as well? You know, the c spec, the VB spec, whatever, all these are, you know, English keywords, that define the language. Therefore you have to know English
S: The English words, the keywords themselves, like select, that’s not … I mean that’s just an arbitrary, it’s an almost arbitrary word. If I gave you a programming language, where I said, instead of select, we now have, you know, snerbelgeek, you can memorize that one thing. I mean, there’s only about 10, 20 of them, that really matter. Now there are a lot of function names, but, really, that important thing is to distinguish between the language you use to talk about code, and the language in which you write code. And just because somebody, just because it’s common to write code using English language variable names, English language comments, the language in which you are going to talk about code, sometimes the comments, but just in let’s say, a book about programming, or talking with your colleagues in the same hallway, or programmers, or writing on the Internet about code, is only going to be English for probably 50%-60% of the world’s programmers.
A: Well, somebody wrote that there actually was a language, and I think it was a research project, that was based on logo, but, all the keywords were in fact symbols. You guys familiar with that game, the sims…
S: APL. It’s APL.
A: In the Sims, they have this completely made up language called Simlish, which has, it just sounds like Gibberish, and, they actually have, when you see it on the screen, it’s just a bunch of, it’s like windings, when you’re typing in windings. It’s like crazy symbols. And they actually make the game understandable, for the most part, in any language. So that would be like having a programming language that was Simlish, that was intentionally just symbols, that had no meaning in any language.
S: But see, none of these words have any meaning… I mean, while? I mean, it’s true that it does have its origin in English, but, I mean, lambda, function? A lot of these things are very very specific. For?
A: And some of them are kind of crappy. Like I’ve always objected to some of the C# terminology for classes and stuff like that, I felt that was unclear.
S: Yeah, I mean, it’s not… the actual keywords of the language are too few, are so few. I mean, human languages that people speak, you need a vocabulary of 5000-10000 words to start speaking a human language, and to speak it, you know, in a highly technical area, than you are probably using a vocabulary of a 100,000 words in your language. And so those 100,000 words that you need to have reasonably detailed conversation about code, is, it totally dominates compared to the 20 keywords which happen to be in English
P: Well, there’s still the libraries to consider too, right. I mean, just look at .Net.
S: Well, if you look at, here’s the thing. Those libraries, like obviously you’ve got a function called CreateWindow. And so you’re thinking, oh gosh, I got to know English because create is a real thing and a window is an English word. And, actually, if you then go, pull down a Japanese language book teaching about Windows programming, you’ll see that they probably don’t have a Japanese word for Window, they probably switch to English for that, or because that’s technical jargon. But the conversation in which they say “you might want to call the CreateWindow API shortly after instantiating the first instance of your app”, you’re going to say that all in Japanese, except for the word CreateWindow.
P: I think I have seen that, yeah, just browsing different sites. It’s exactly… what it… just look, I think, from my perspective, if was reading, and then saw a Japanese symbol for some function, bit of a learning curve…
S: That’s because you don’t know any Japanese. But most Japanese programmers know enough English to be able to deal with those occasional words. That doesn’t mean that they want to read about programming in English. I was talking to Scott Hanselman today, he told me, every single word of MSDN is localized, by professional translators, into Japanese. Not machine translation, it’s professionally localized, every single article on MSDN.
P: well, I think that show there’s definitely an audience for it, so… that’s surprising.
S: Yeah. And it’s a large… I mean, I think that Japan probably has about 60% as many programmers as the US. That’s just a rough estimate. And when you add, you know, when you add China, Germany, and a few other countries, all Spanish speaking countries, apparently, Portuguese, and Brazilian Portuguese is a big deal, Scott told me. You know, when you add that together, it’s an audience that is the same size, I think, as the English audience. And I don’t know if I agree, Jeff, I don’t if I agree with you, that we should just abdicate that. I mean, I understand that we’ve got to have our priorities. But, I don’t see any reason why we should say, “ah, somebody else can do that”. I mean, we’re… you know, our goal is to… to me, it seems like a very… It’s ok to say, English is our first priority, but to say, “ah, we would never want to do those other things”, is just like sort of arbitrarily limiting our ambition. I mean, if Stack Overflow is a good thing, if it’s a good thing for programmers…
A: Wait, wait, wait. So previously you talked about Ebay, as an example. Ebay it’s like a trazillion…
S: No, no, no, wait, stop. The only thing I said about Ebay, is I gave the example of Ebay and TradeMe in New Zealand, because I wanted to point out that if we don’t do those other languages, soon enough, somebody else will come along and do them. And then if we ever wanted… and they will get critical mass. And I just gave you, as an example of how there is no Ebay in New Zealand.
P: Or like the Google-Yandex, how do you pronounce that, the Russian Google, that’s not Google, but…
S: Yeah, yeah, there’s a whole bunch of this, there’s Baidu, and there’s Daum in South Korea, there’s a whole bunch of these local things, and Google never really gets into those markets, never successfully got into those markets, because of another company that basically was a fast follower.
A: But I think sometimes the local version, and the local language should be more successful, because they are building it with that audience in mind. I mean, they have a better line on the audience then we would. I would say that’s the natural state of affairs. And when you’re… The example of Ebay was a bad one, I think, on many levels, because, first of all, Ebay is a huge business, it’s “oh, to have the problems of Ebay, how terrible”, right? If we could be as big as Ebay, that’s plenty. I mean, I don’t need more than that, frankly.
S: Where do you draw the line? How big do you want to get, and then stop and just say, OK, we are not going to be any bigger than this. We’ve solved the problems of 2 million programmers, we don’t need to solved the problems of 3 million programmers. Like, where do you say our mission ends, now, because I can’t be bothered.
A: Well, I don’t like to think too far ahead, because I think it’s distracting. I think you’ve got to focus on what’s happening on the next 6 months, like 6-8 weeks, that’s the things you want to focus on. You want to have a vague idea of where you’re going, but like, obsessing over it too much, it’s just, I think counterproductive. Like it sort of distracts you from your primary mission, which is to move forward, to the next… you know, the immediate future.