from - みる会図書館


検索対象: THE BEST SOFTWARE WRITINGⅠ
175件見つかりました。

1. THE BEST SOFTWARE WRITINGⅠ

282 THE BEST SOFTWARE WRITING I 工 h 久れ 0 wife No i 旧 e 工 w 兮ト“を 54 り・ 1 。物 k れ・ m る ( 0 れ Ranges A range is tWO values surrounded by parentheses and separated by an ellipsis ()n the form of two or three dots). ( 1..3 ) is a range, representing the numbers 1 through 3. ' z ・ ) is a range, representing a lowercase alphabet. Think Of it as an accordion that has been squeezed down for carry- ing. (Sure, you can build a great sense 0f self-worth bY carrying around an unfolded accordion, but sometimes a person needs tO wallow in self- doubt, carefully concealing the squeeze-box. ) The parentheses are the handles on the sides of a smaller, handheld accordion. The dots are the chain, keeping the folds tightly closed. Normally, 0 司 y two dots are used. If a third d0t is used, the last value in the range is excluded. ( 0...5 ) represents the numbers 0 through 4. When you see that third dot, imagine opening the accordion slightly. Just enough tO let one note from its chamber. The note is that end value. We'lI let the sky eat it. Arrays An array is a list surrounded by square brackets and separated by commas. [ 1 , 2 , 3 ] is an array 0f numbers. snowboard ・ ] iS an array Of strings. [ ' coat ・ 'mittens' Think of it as a caterpillar that has been stapled int0 your code. The tWO square brackets are staples that keep the caterpillar from moving'

2. THE BEST SOFTWARE WRITINGⅠ

196 THE BEST SOFTWARE WRITING I 2000. By last year, it was "Omigod, this thing is going mainstream, and it's going t0 change everything. The vertigo moment for me was when PhiI Gyford launched the Pepys weblog, Samuel Pepys' diaries 0f the 1660S turned into a weblog form, with a new post every day from Pepys' diary. What that said to me was that Phil was asserting, and I now believe, that weblogs will be around for at least 10 years, because that's how long Pepys kept a diary. And that was this moment Of pr0Jecting intO the future: this is now infrastructure we can take for granted. 嶬 41Y was there an eight-year gap between a forms-capable browser and the Pepys diaries? lt just takes a while for people to get used to these ideas, tO understand the technical form well enough tO put it tO SOCially novel uses. The other big change is that the social software people are building now is web-native, built on the Web from the ground up. When you got social software on the Web in the mid-1990S , a lot 0f it was enterprise software with a web front-end slapped on: "This is the Giant Lotus Dreadnought, now with New Lightweight Web lnterface! " lt never felt like the Web. lt felt like this hulking thing tarted up with some clickable lcons. A weblog is web-native. lt's the Web all the way in. A wiki is a web- native way 0f hosting collaboration. lt's lightweight, it's loosely coupled, it's easy tO extend, it's easy tO break down. And it's not just the surface, like "Oh, you can just do things in a form. " lt assumes HTTP is trans- port. lt assumes markup in the coding. RSS is a web-native way of doing syndication. SO we're taking all Of these t001S and we're extending them in a way thatlets us build new things really quickly. The third thing that's happenlng now to accelerate social software is that, in David Weinberger's felicitous phrase, we have a "SmaIl Pieces Loosely Joined" way of making software. lt's really worth looking into what JOi ltO is dOing with the Emergent Democracy movement, even if you re not interested in the themes Of emerging democracy. This started because a conversation was gorng on, and ltO said, 、、 I am frustrated. l'm sitting here in Japan, and I know all 0f these people are having these con- versatlons ln real time with one another,. I want tO have a group conversation, t00. l'll start a conference call. "But since conference calls are SO lousy on their own, l'm going to bring up a chat window at the same time. " And then, in the first

3. THE BEST SOFTWARE WRITINGⅠ

CLAY SHIRKY 193 not in fact be decoupled. This story has been written many times. lt's actually frustrating tO see hOW many times it's been written, because although there's a wealth 0f documentation from the field, people start- ing similar pr0Jects Often haven't read these accounts. The most charitable description of this repeated pattern is "learning from experience," but learning from experrence is the worst possible way tO learn something. Learning from experrence IS one up from remembering—that's not great. The best way tO learn something is when someone else figures it out and tells you: "Don't go in that swamp. There are alligators in there. ' Learning from experience about the alligators is lousy, compared tO learning from reading, say. There hasn't been, unfortunately, in this arena, a 10t Of learning from reading. And SO, the essay "Lessons from Lucasfilms' Habitat," written in 1990 , reads a lot like Rose Stone's description 0f Communitree from 1978. There's a great document called "LambdaMOO Takes a New Direction," which is about the wizards of LambdaMOO, Pavel Curtis's Xerox PARC experiment in building a MUD7 world. And one day the wizards 0f LambdaMOO announced, 。、嶬ド ve gotten this system up and running, and all these interesting social effects are happemng. Henceforth we wizards will only be involved in technological issues. We're not going to get involved in any of that social stuff. ' And then, I think about 18 months later, the wizards come back, extremely cranky. And they say, "What we have learned from you whin- ing users is that we can't dO what we said we would dO. ・ cannot separate the technological aspects from the social aspects Of runmng a virtual world. "So we're back, and we're taking wizardly fiat back, and we're going tO dO things tO run the system. We are effectively setting ourselves up as a government, because thiS place needs a government, because without us, everything was falling apart. ' people 、 VhO work on SOCial software are closer in spirit tO economists and political scientists than they are t0 people making compilers. They both 100k like programming, but when you're dealing with groups of people as one Of your runtime phenomena, you have an lncredibly 6. See http://www.fudco.com/chip/lessons.html. 7. Multiuser Dungeon, a textual online multiplayer adventure game ー Ed.

4. THE BEST SOFTWARE WRITINGⅠ

114 THE BEST SOFTWARE WRITING I ln terms of features, especially comfort features such as a polished UI drag and drop, and a rich set of keyboard shortcuts, web-based email clients just can't compare tO desktop email clients. But . With web-based email, you can get your email from any browser on any computer on the lnternet. "lnstallation" consists 0f typing a URL intO the browser's location field. The location field is the new command line. Google's Gmail has turned the competition up a notch by providing a few features that actually do compare well against desktop email clients—fast, accurate search ()f course), and a very nice threaded dis- play for discusslons. Gmail also offers a bunch of keyboard shortcuts, implemented in JavaScript, but as Mark Pilgrim described them in his Gmail review,3 they 。。 [appearl to have been designed by vi4 users (j moves down, k moves up, and we are expected tO memorize multi-key sequences for navlgation). Gmail's threading and searching are indeed nice, but its overall 100k and feel is far inferior to that of a real desktop mail client. What it has going for it is what all webmail apps have—zero installation, zero main- tenance, access frOI れ any computer, anywhere (including from 、 a major factor for personal email). Gmail is simply better than the other maJ0r web-based mail apps; but Yahoo and Hotmail and the others are still ragingly popular. What I neglected to realize when I dismissed them a decade ago is that web apps don't need to beat desktop apps on the same terms. What's happened is that they're beating them on an entirely different set of terms. lt's all about the fact that you just type the URL and there's your email. 3. See http://diveintomark.org/archives/2004/04/10/gmai1-accessibi1ity. 4. An ancient Unix text editor designed before arrow keys on the keyboard were widely available ー Ed.

5. THE BEST SOFTWARE WRITINGⅠ

270 THE BEST SOFTWARE WRITING I which is exactly what this small Ruby program does. Beck's mutated Spanish2 exclamatlon will print five times on the computer screen. Read the following aloud to yourself. exit unless "restaurant" . include? Here we're doing a basic reality check. Our program will exlt (the program will end) unless the word restaurant contains ()r includes) the word aura. Again, in English: Exit 〃れ ss 舫ビル 0 d s 〃 ra れれ c d お the 曜 0 d 44 な . Ever seen a programming language use question marks SO effectively? Ruby uses some punctuatlon, such as exclamatlons and questl()n tO enhance readability Of the COde. ・ We're asking a question in the above code, SO why not make that apparent? Read the following aloud to yourself. [toast, cheese, wine] . each { げ 00 引 eat f00d } 嶬市 ile this bit of code is less readable and sentence-like than the previous examples, l'd still encourage you t0 read it aloud. Although RubY may sometimes read like English, it sometlmes reads as a shorter English. You might read the above, fully translated into English, as: W ″あ 4 鷂 訪 and ル / , たビ訪り可 od and れわ酣ル od. This program won't actually work if you run it. Ruby doesn't know how t0 eat. But the beautiful thing is that you can add your own words tO Ruby. Your own actions. Your own objects. At this point, you're probably wondering how these words actually fit together. Smotchkkiss is wondering what the dots and brackets mean. l'm going tO discuss the various 々 4 S 0 ー 5 々 e じわ next. AII you need to know thus far is that RubY is basically built from sen- tences. They aren't exactly English sentences. They are short collections Of words and punctuation that encompass a single thought. These sen- tences can form b00ks. They can form pages. They can form entire novels, when strung together. Novels that can be read by humans, but also by computers. 2. See http://www.whiskeyclone.net/ghost/L/lordonlyknows.html.

6. THE BEST SOFTWARE WRITINGⅠ

192 THE BEST SOFTWARE WRITING I interested in sophisticated adult conversation. They were lnterested in fart jOkes. They were interested in salacious talk. They were interested in running amok and posting four-letter words and nyah-nyah-nyah all over the bulletin board. And the adults who had set up Communitree were horrified, because they were being overrun by these students. The place that was founded on open access had t00 much open access, t00 much openness. They couldn't defend themselves against their own users. The place that was founded on free speech had t00 much freedom. They had no way of say- ing, "NO, that's not the kind 0f free speech we meant. But that was a requirement. ln order tO defend themselves against being overrun, that was something that they needed tO have that they didn't have, and in the end, they simply shut the site down. Now you could ask whether or not the founders' inability to defend themselves from this onslaught, from being overrun, was a technical or a social problem. Did the software not allow the problem to be solved? Or was it the social configuration Of the group that founded it, where they simply couldn't stomach the idea 0f adding censorship t0 protect their system. But in a way, it doesn't matter, because technical and SOCial lssues are deeply intertwined. There'S no way tO completely separate them. What matters is, a group designed this and then was unable, in the context they'd set up, tO save it from this attack from within, and that context was partly technical and partly social. The lesson 0f Commun1tree is that attack from within is what matters. Communitree wasn't shut down by people trying t0 crash the server or 日 00d it from the outside. lt was shut down by people logging in and posting, which is what the system was designed t0 allow. The technological patterns of normal use and attack were SO similar at the machine level, there 、 no way to specify technologically what should and shouldn't happen. Some Of the users wanted the system tO continue tO eXISt and tO provide a forum for discussion. And other of the users, the high school boys, either didn't care or were actively inimical. And the system provided no way for the former group to defend itself from the latter. This pattern has happened over and over and over again. Someone built the system; they assumed certarn user behaviors. The users came on and exhibited different behaviors. And the people running the system discovered tO their horror that the technological and social issues could

7. THE BEST SOFTWARE WRITINGⅠ

158 THE BEST SOFTWARE WRITING I T he team had done an incredible job, and they knew it. lteration by iteration they had built a new software product, and when the dead- line came, everything that had to be operational was working flawlessly. At an afternoon celebration, the division vrce president thanked everyone whO had contributed tO the effort, and the team members congratulated one another as they relived some Of the more harrowlng moments of the last six months. The MorningAfter The next day, the team's Scrum Master2 was catching up on long- ignored email when Dave, the development manager, called. 。 Say, sue,' he said, "great job your team did! l've been waiting for the product launch before I bothered you with this, but the appraisal deadline is next week. I need your evaluation of each team member. And if you could, l'd like you tO rank the team from WhO contributed the most down to who contributed the least. Sue could almost hear the air escaprng as her world deflated. 当 can't do that," she said. "Everyone pitched in 100 percent. We could not have done it otherwise. ln fact, collaboration is at the core of our Agile process. "But Sue," Dave said, "there must have been a most valuable player, a runner-up, and SO on. "NO, not really," Sue replied. "But what I can do is evaluate every- one's contribution tO the effort. Sue filled out an appraisal input form for each team member. She rated everyone's performance but found that she had to check the "far exceeded expectations" bOX for each team member. After all, getting out the product on time was a spectacular feat, one that far exceeded every- one S expectatlons. 2. Scrum is one of those trendy Agile methodologies. ー Ed.

8. THE BEST SOFTWARE WRITINGⅠ

ADAM BOSWORTH 25 part 0f the rich tapestry 0f the human condition and that part which seeks t0 perfect itself, t0 control, t0 build complex codes and rules for conduct which, if zealously adhered to, guarantee an orderly process. This talk is about this conflict as it relates to computing on the lnternet. This talk is also a polemic in support of KISS. As such it is unfair, opinionated, and perhaps even unconscionable. lndeed, at times it will verge on a Jeremiad. lt is an ironic truth that those WhO seek tO create systems that most a ss ume the perfectibility 0f humans end up building the systems that are the most soul destroyrng and most rigid—systems that rot from 、 vithin, untillike great, creaking, rotten oak trees, they collapse on top of them- selves, leaving a sour smell and decay. We saw it happen in 1991 with the astonishing fall of the USSR. Conversely, those systems that best take into account the complex, frail, brilliance 0f human nature and build in flexi- bility, checks and balances, and tolerance tend to survive beyond all hopes. SO it goes with software. That software which is flexible, simple, sloppy, tolerant, and altogether forgiving 0f human foibles and weak- nesses turns out tO be actually the most steel-cored, able tO survrve and grow, while that software which is demanding, abstract, rich but sys- tematized turns out tO collapse ln on itself in a SIOW and grim implosion. Consider the spreadsheet. lt is a protean, sloppy, plastic, flexible medium that is, ironically, the despair Of all accountants and auditors because it is virtually impossible t0 reliably understand a truly complex and rich spreadsheet. L0tus Corporation (now IBM), filled with Harvard MBAs and PhDs in CS from MIT, built lmprov. lmprov set out 實 0 fix all this. ' ' lt was an auditor's dream. lt provided rarified heights of abstractlon, formalisms for rows and columns, and in short was truly comprehensible. lt failed utterly, not because it failed in its ambitions but because it succeeded. 4 4. I remember lmprov because it came out while I was working on Excel, and claimed tO be 、、 the future of spreadsheets. " Rather than giving you a free-form grid of cells, lmprov required you tO define strict n-dimensional hypercubes for your data. Rather than allow- ing you tO enter any formula in any cell, lmprov only allowed you t0 define new rows and columns Whose values 、 vere computed fror れ existing rows and columns. There was none Of the flexibility Of traditional spreadsheets. lmprov assumed that spreadsheets were used for the kind of models made by MBA students. ln fact, when we did a little market research we found that most spreadsheet users are JIISt making lists, and the real world never fits intO n-dimensional hypercubes as well as it did at Wharton. ーお d.

9. THE BEST SOFTWARE WRITINGⅠ

216 THE BEST SOFTWARE WRITING I lt is a deep curiosity 0f the human condition that people often find neg- ative attention more satisfying than inattention, and the larger the group, the likelier someone is tO act out tO get that sort Of attention. However, proposed responses tO flaming have consistently steered away from group-oriented solutions and toward personal ones. The logic Of collective action, alluded tO earlier, rendered these personal solu- tions largely ineffective. Meanwhile, attempts at encoding social bargams weren't made because Of the twin forces Of door culture (a resistance tO regarding SOCial features as first-order effects) and a horror Of censorship (maxlmizing individual freedom, even When it conflicts with group goals). WebIog and Wiki Responses When considering social engineering for flame-proofed-ness, it's useful t0 contemplate both weblogs and wikis, neither 0f which suffer from flaming in anything like the degree mailing lists and 0ther conversational spaces d0. Weblogs are relatively flame-free because they provide little communal space. ln economic parlance, weblogs solve the tragedy 0f the commons through enclosure, the subdividing and privatizing Of com- mon space. Every bit of the weblog world is operated by a particular blogger or group 0f bloggers, wh0 can set their own policy for accepting comments, including having no comments at all, deleting comments from anony- mous or unfriendly viS1tors, and SO on. Furthermore, comments are almost universally displayed away from the main page, greatly limiting their readership. Weblog readers are also spared the need for a bozo fil- ter. Because the mailing list pattern Of "everyone sees everything" has never been in effect in the weblog world, there is little opportunity for anyone tO hijack existing audiences tO gain attention. Even comments appended t0 a particular weblog post are seen only by a minority 0f the readers of the post itself. Like weblogs, wikis also avoid the Tragedy of the Commons, but they do so by going t0 the other extreme. lnstead 0f everything being owned, nothing is. Whereas a mailing list has individual and inviolable

10. THE BEST SOFTWARE WRITINGⅠ

174 THE BEST SOFTWARE WRITING I 嶬市 ile Mac Word 5 was a great product, there was one problem with it: Win Word 2. They both shipped at about the same time, but Win Word 2 had more features (most notably a macro language,2 but there were a few others). This was a maJOr sore point for Mac ・ Word users. They wanted feature parity, and they wanted it now! The longer they had to wait for feature parity between Win Word and Mac Word, the more we got raked over the coals. But we had a problem. Actually, we had a couple problems, the first being that n Word and Mac Word were built from separate code bases. The other problem was WordPerfect. At that time, it still represented a major competitor tO ・ Windows, and we still had some catch-up work tO d0 in order t0 get better than WordPerfect. If we had continued to develop Mac Word and ・ Win Word from separate code bases, Mac Word would never have caught up to 嶬行 n Word in terms of feature parity. As of October 1991 , we already had a plan to address the first prob- lem: the Pyramid project. lt was a complete rewrite of Word intended both to address some nagging issues with what had, by that time, become somewhat Of a crusty COde base and tO address the separate COde base problem. Both Win Word and Mac Word would be built from that same COde base. Exit 」 effRaikes, Enter Chris Peters Feature parity problem solved. Well, not quite. At the same time, Jeff Raikes was promoted from Word business unit manager tO some Other position in Microsoft (l forget exactly which), and Chris Peters was pro- moted t0 fill Jeff Raikes' position. Almost everyone knows about Jeff Raikes these days. Chris Peters, however, had been the development manager for Excel before moving t0 Word. His favorite pastime is bowl- rng, and he was known for having huge stacks 0f empty C0ke cans in his Office. 2. WordBasic was a surprisingly complete programming environment that allowed you to build pretty incredible applications with a fully functional word processor at their heart. ー Ed.