inkwell.vue.293
:
Scott Rosenberg, Dreaming in Code
permalink #51 of 95: Paul Bissex (biscuit) Thu 1 Mar 07 17:19
permalink #51 of 95: Paul Bissex (biscuit) Thu 1 Mar 07 17:19
Welcome, Ted! 12,000 words in the topic so far -- I don't envy you the catch-up reading (not that you're obliged).
inkwell.vue.293
:
Scott Rosenberg, Dreaming in Code
permalink #52 of 95: Ted Leung (ted-leung) Thu 1 Mar 07 18:28
permalink #52 of 95: Ted Leung (ted-leung) Thu 1 Mar 07 18:28
Paul, I summarize the traffic on the cosmo-dev mailing list every week. 50 messages is short work ;-)
inkwell.vue.293
:
Scott Rosenberg, Dreaming in Code
permalink #53 of 95: Scott Rosenberg (scottros) Thu 1 Mar 07 19:43
permalink #53 of 95: Scott Rosenberg (scottros) Thu 1 Mar 07 19:43
Hi, Ted -- glad you're here! For what its worth, I'm happy you're joining us, but the idea came from the fine hosts of this Well conference, not from me or Salon. Christian, I think the "climb the ladder, then kick it away" approach you describe is probably closest to what Andy Hertzfeld was advocating in Chandler's early phases. It's worth pointing out that from a very early phase of the project OSAF actually did have "running code," if by running code you mean something that you could download and execute. The problem was more a disconnect between the high expectations people had for the project and the extremely limited functionality that running code offered for a very long time. You could download and "run" Chandler 0.3 and 0.4 and so on, but you couldn't do a lot with it. One lesson I took from that -- and it's a lesson that is now commonly embraced by the builders of Web applications, and also one that most people at OSAF would, I think, agree with -- is that you should try to roll out a new application or service by finishing at least one feature at a time in a fashion that users can actually use. (In the 37 Signals playbook this is defined as "build half an application, not a half-assed application.") That gives you a chance to begin to build a community of users and loop their feedback into your further development work. From what I can see Chandler is now on the verge of that sort of dynamic, with the forthcoming "preview" release. But I think it would plainly have benefited from arriving at that point sooner.
inkwell.vue.293
:
Scott Rosenberg, Dreaming in Code
permalink #54 of 95: Ted Leung (ted-leung) Fri 2 Mar 07 00:31
permalink #54 of 95: Ted Leung (ted-leung) Fri 2 Mar 07 00:31
Hi Scott, Thanks for the clarification on the invite. We are definitely on the "build a slice of an application path". The particular slice for us is the calendar. I arrived about halfway through the story in the book, so I'm not well qualified to comment on what happened before I showed up. But one thing that has been difficult has been to balance the "platform" and "application" aspects of Chandler. Along with that, we were definitely trying to build out all areas of the application at the same time. Since we decided to focus on the calendar, we've been able to get some traction.
inkwell.vue.293
:
Scott Rosenberg, Dreaming in Code
permalink #55 of 95: virtual community or butter? (bumbaugh) Fri 2 Mar 07 06:52
permalink #55 of 95: virtual community or butter? (bumbaugh) Fri 2 Mar 07 06:52
Happily, I embrace "build half an application" in my real life, but in this context that seems a bit of a paradox: does that really make the other barriers to software development that we've been discussing go away? Or is it just that they become small enough you can drown them in the tub?
inkwell.vue.293
:
Scott Rosenberg, Dreaming in Code
permalink #56 of 95: Scott Rosenberg (scottros) Fri 2 Mar 07 07:53
permalink #56 of 95: Scott Rosenberg (scottros) Fri 2 Mar 07 07:53
I don't even think you get to drown them in the tub at that point, but perhaps you have a fighting chance of wrestling them to the ground.
inkwell.vue.293
:
Scott Rosenberg, Dreaming in Code
permalink #57 of 95: Scott Rosenberg (scottros) Fri 2 Mar 07 09:47
permalink #57 of 95: Scott Rosenberg (scottros) Fri 2 Mar 07 09:47
BTW, in my morning reading I see that Ted has an excellent post up on his blog all about this basic question we're beginning to identify, about how much efficiency or software-development productivity the web-based software approach (or what Ted calls "rich internet applications (RIAs)") wins us. The post is at http://www.sauria.com/blog/2007/03/01/adobe-wants-to-be-the-microsoft-of-the-w eb/ It's maybe a tad technical for non-developers, but the basic point is that, the more ambitious you get in terms of creating a rich environment for a Web app, the harder the development gets, unless you're willing to say, from the start, that your app only works on one browser. It's a fascinating dilemma. My browser of choice is Opera, and boy, life is getting harder out there, because a lot of Web-based apps are developed to support (a) Firefox, because it's good and oopen, and (b) IE, because you can't ignore those gazillions of people and (c) everyone else needs to fend for themselves. To me, the larger point is this: the move to Web-based development will solve one set of problems that the previous generation of software wasn't very good at (coordinating data on multiple machines, sharing data among multiple users, backups and managing data so the user doesn't have to be a sysadmin, keeping the application code patched and up to date). But it will bring along a whole nother set of problems that we can already see the outline of -- these includee cross-browser compatibility and the development nightmare Ted explains, security and privacy issues.
inkwell.vue.293
:
Scott Rosenberg, Dreaming in Code
permalink #58 of 95: Brian Slesinsky (bslesins) Sat 3 Mar 07 13:32
permalink #58 of 95: Brian Slesinsky (bslesins) Sat 3 Mar 07 13:32
My first reaction to cross-platform issues is to simplify and avoid the issue. Lots of great, easy-to-use websites use very little JavaScript; take Google search for example. The UI is very important but doing technically hard things is not the point; there may be some easier way to please the user. Of course, some applications have done really well using AJAX, but you shouldn't let ambitions about building a great UI keep you from winning by doing the simple thing. I don't agree with a lot of Perl philosophy, but I still think Larry Wall said it best: Three great virtues of programming are laziness, impatience, and hubris. If you have the right kind of laziness then you will avoid hard problems when you can. If you're impatient you'll release early and often and instinctively avoid taking large bets that won't pay off for years. Hubris means that despite using minimal effort, you still want to impress people with something great. The trap seems to be thinking that in order to do something ambitious, you have to solve hard problems head-on, rather than dodging them. I'm a bit concerned that this discussion (and I suspect the book as well, though unfortunately I haven't read it yet) is promoting the idea that software is supposed to be hard and that train wrecks and disasters are the inevitable price of doing something ambitious, but that you should be ambitious anyway. That doesn't seem like a good mindset for the people on a software project to have because it doesn't teach good avoidance techniques.
inkwell.vue.293
:
Scott Rosenberg, Dreaming in Code
permalink #59 of 95: Paul Bissex (biscuit) Sat 3 Mar 07 18:57
permalink #59 of 95: Paul Bissex (biscuit) Sat 3 Mar 07 18:57
Do we really have to worry? Part of the lesson of Scott's book for me was that software developers almost never adopt that mindset about their own projects, no matter what prior or current evidence seems to point to. "All programmers are optimists" and all that.
inkwell.vue.293
:
Scott Rosenberg, Dreaming in Code
permalink #60 of 95: Cogito? (robertflink) Sat 3 Mar 07 19:10
permalink #60 of 95: Cogito? (robertflink) Sat 3 Mar 07 19:10
>If you have the right kind of laziness then you will avoid hard problems when you can. If you're impatient you'll release early and often and instinctively avoid taking large bets that won't pay off for years. Hubris means that despite using minimal effort, you still want to impress people with something great.< I like that the above would tend to militate against linear and hierarchical thinking.
inkwell.vue.293
:
Scott Rosenberg, Dreaming in Code
permalink #61 of 95: Howard Berkey (howard) Sat 3 Mar 07 23:20
permalink #61 of 95: Howard Berkey (howard) Sat 3 Mar 07 23:20
slipping back to mz: >Actually, software is easy. Coding is easy. And fun. And challenging in a problem-solving way. A lot of us are good at it. The hard part of software development for many of us lies in the human factors completely unrelated to actual coding. Playing nice with others does not come easily, for some reason, to a lot of people in this profession.
inkwell.vue.293
:
Scott Rosenberg, Dreaming in Code
permalink #62 of 95: Howard Berkey (howard) Sat 3 Mar 07 23:21
permalink #62 of 95: Howard Berkey (howard) Sat 3 Mar 07 23:21
(should mention I have not had the chance to get the book yet, but I look forward to it!)
inkwell.vue.293
:
Scott Rosenberg, Dreaming in Code
permalink #63 of 95: Ludo, Ergo Sum (robertflink) Sun 4 Mar 07 05:16
permalink #63 of 95: Ludo, Ergo Sum (robertflink) Sun 4 Mar 07 05:16
>The hard part of software development for many of us lies in the human factors completely unrelated to actual coding.< There is even some (scriptural) "evidence" that human factors have caused some difficulty in the "intelligent design" of the universe. Those pesky people creatures are even getting in the way in Iraq. (maybe a little playing nice?........Naw!) It is a very interesting outlook when the producers and users of systems are viewed as unrelated to the actual process. BTW, in MBA education, business case study solutions have concluded with the comment; "The problem is solved, all that remains is implementation".
inkwell.vue.293
:
Scott Rosenberg, Dreaming in Code
permalink #64 of 95: Howard Berkey (howard) Sun 4 Mar 07 10:48
permalink #64 of 95: Howard Berkey (howard) Sun 4 Mar 07 10:48
>It is a very interesting outlook when the producers and users of >systems are viewed as unrelated to the actual process. Oh yes indeed. Or "unrelated to each other in the actual process". There have been various attempts in the software industry to address this, with Agile/XP/etc being the latest (and maybe the most adopted, but that is hard to say). But you are completely right with that point.
inkwell.vue.293
:
Scott Rosenberg, Dreaming in Code
permalink #65 of 95: If gopod's on our side s/he'll stop the next war (karish) Sun 4 Mar 07 14:09
permalink #65 of 95: If gopod's on our side s/he'll stop the next war (karish) Sun 4 Mar 07 14:09
Ted's blog post summed up one set of my answers to Earl's question. Our challenge in multi-platform support has moved from hardware to operating systems to windowing platforms to browsers, and now back to hardware as we try to get Web programs to run on pocket telephones. We converge on a platform definition but the definition keeps changing. I don't think that's the whole story about why software is hard, though. Looking at the design side rather than at the implementation side, there's constant expectations creep. The goal is to produce a product that is great when it's delivered, not when the the first requirements are conceived. Our product will be compared to other products that are released while ours is built. I'm not convinced that it's more difficult now than used to be to estimate the work required to implement to a set of requirements. The state of the industry, though, is that we can't count on requirements to stay put. Agile methodology provides a way to allow the development process to chase the requirements. I don't think there's an adequate equivalent on the business side of the software industry.
inkwell.vue.293
:
Scott Rosenberg, Dreaming in Code
permalink #66 of 95: Scott Rosenberg (scottros) Mon 5 Mar 07 09:34
permalink #66 of 95: Scott Rosenberg (scottros) Mon 5 Mar 07 09:34
Brian wrote: >The trap seems to be thinking that in >order to do something ambitious, you >have to solve hard problems head-on, >rather than dodging them. >I'm a bit concerned that this discussion >(and I suspect the book as well, though >unfortunately I haven't read it yet) is >promoting the idea that software is supposed >to be hard and that train wrecks and >disasters are the inevitable price of doing >something ambitious, but that you should be >ambitious anyway. That doesn't seem like a >good mindset for the people on a software >project to have because it doesn't >teach good avoidance techniques. The book certainly doesn't aim to promote any particular idea; it's one story, surrounded by a lot of background research, that you can draw different conclusions from. I'm with Brian until he says "...but that you should be ambitious anyway." That's certainly not my conclusion! For me, it's more like "train wrecks and disasters are inevitable and no one's found a sure way to avoid them, but there are some things you can do to minimize their likelihood." Those things include working incrementally, limiting (or at least staggering) your ambition level, and not making unrealistic assumptions about schedules or fixed requirements. I think I understand what Brian means by "avoidance techniques" and "dodging" hard problems but I also think that terminology is guaranteed to raise the hackles of the people (project sponsors, business people, program managers, etc.) who need to be on board with the developers' plan. It sounds like you're saying, "let's punt." I think the same point can be expressed by saying, "Let's be realistic, let's acknowledge that there are swamps here, and let's agree we don't want to get sucked into them." <karish>, that's an interesting suggestion about finding the business equivalent of an agile methodology. The thing is, as I understand it, agile arose as a developer-side reaction to the churn of the business side (changing requirements, etc.). Usually what I hear from developers is a demand that the business people they work with get more disciplined and rigorous about what they want -- in essence, that they move a little *less* fast!
inkwell.vue.293
:
Scott Rosenberg, Dreaming in Code
permalink #67 of 95: Christian Crumlish (xian) Tue 6 Mar 07 14:37
permalink #67 of 95: Christian Crumlish (xian) Tue 6 Mar 07 14:37
Coming into the home stretch here I'm going to queue up a few more questions. Scott you can tackle some or all of them at your leisure. One funny thing: I've been re-reading D in C and set it down face up in one of the coffee bars here on the Yahoo campus and a developer started reading the cover and turned to me and said "I have nightmares in code." (He was smiling as he said it.) ok. first of all: early on you explain a bit about how the term geek was embraced by computer nerds and it got me thinking again about the different connotations between those two words. To me, geek has become a term of pride (as you discuss), whereas nerd is still somewhat negative sounding, although it is also embraced ironically by some. When I was writing my book I spent a lot of time talking to Craig Newmark (of craigslist) and he proudly describes himself as a nerd and points to his pocket-protector days in high school as a formative influence on his desire to make software inclusive (which I thought was an interesting insight into the world of social software). So, any thoughts on nerds vs. geeks and how they relate to software? I'll put my next question/musing in a separate entry.
inkwell.vue.293
:
Scott Rosenberg, Dreaming in Code
permalink #68 of 95: Christian Crumlish (xian) Tue 6 Mar 07 14:45
permalink #68 of 95: Christian Crumlish (xian) Tue 6 Mar 07 14:45
My next question has to do with patterns. That's a particular interest of mine because my current job involves managing a design pattern library. Several times you talk about Christopher Alexander's "A Pattern Language" and there's a whole interesting digression about the Portland Pattern Repository (Ward's Wiki). I find it interesting how the pattern metaphor has migrated from architecture to software design to interaction design (OK that last jump is less of a stretch). Any thoughts on how pattern-awareness has impacted software development? Ward's wiki devotes a lot of energy to noting antipatterns, kind of warning people away from "worst practices" so to speak. Is this accumulated lore of any use or does it fall victim to the whole "this is a special case" thinking you document at discouraging length in your book?
inkwell.vue.293
:
Scott Rosenberg, Dreaming in Code
permalink #69 of 95: Christian Crumlish (xian) Tue 6 Mar 07 14:45
permalink #69 of 95: Christian Crumlish (xian) Tue 6 Mar 07 14:45
ok, that's plenty for now...
inkwell.vue.293
:
Scott Rosenberg, Dreaming in Code
permalink #70 of 95: Paul Bissex (biscuit) Tue 6 Mar 07 18:49
permalink #70 of 95: Paul Bissex (biscuit) Tue 6 Mar 07 18:49
I have one to throw in there too, and maybe Ted can even chime in on this one -- I gather that the Chandler team is a bit more distributed geographically these days than they were during the time you were writing your book, though you wrote about some of the steps in that direction. Do you think there's any particular significance to this change? Is it a good sign for Chandler?
inkwell.vue.293
:
Scott Rosenberg, Dreaming in Code
permalink #71 of 95: Scott Rosenberg (scottros) Wed 7 Mar 07 12:26
permalink #71 of 95: Scott Rosenberg (scottros) Wed 7 Mar 07 12:26
Paul first: Yes, the OSAF team's more far-flung these days; I know that Brian Kirsch moved to Hawaii, Ted is in Seattle, Mike "bear" Taylor is back east somewhere, Phillip Eby is in Florida... there are probably others too. I don't know how specifically significant this is, except that it forced OSAF to move more of its process out from meetings rooms onto mailing lists and such, and that's gotta help them as they continue to try to get more buy-in from "bazaar"-style open source developers. Christian: Geeks vs. nerds -- I did a little research on this and the best I could come up with was that "geek" has tended to be more of a west coast term, "nerd" an east coast one. Nerd I think has a pedigree that is pretty much from school (a la "Revenge of the Nerds") where it originally had nothing to do with technology per se and meant any social misfit with an overdeveloped brain. "Geek" is even older (as I mention in the book it even appears in Shakespeare!), and of course it long meant the mentally impaired person who bit the head off the chicken at the sideshow. Both words have to some extent been co-opted by the tech subculture as terms of pride in self-labeling, and Neal Stephenson wrote a wonderful op-ed piece in the NY Times a year or two ago that defined "geek out" as any sort of over-the-top passion for the arcane details of any endeavor (so that you can "geek out" on train trivia or knitting or whatever). To my ears as well, right now, "geek" feels more fully redeemed than "nerd," which still sounds unappealing. But these judgments are, I think, highly malleable by time and usage. The first time I heard the word "blog" I went "bleaugh!" It sounded grotesque. Now it's just common, don't-bat-an-eyelash parlance, and that happened in <5 years. As far as the patterns movement goes, I think what's important there is that in each case -- beginning with Alexander in architecture and moving to the "Gang of Four" in object-oriented programming and now, as you say, interaction designers as well -- you have fields that are trying to figure out how to pass along learned experience in the absence of fundamental laws or scientific principles. In other words, the use of patterns is a sign that you're dealing with a craft; the pattern is a distilled bit of craft experience, a way of streamlining the communication of any piece of knowledge of the form "In these sorts of situations in the past, this has helped and that has not." In that sense, I think that the pattern movement is a huge success, in helping solve one of the software field's biggest problems, which is how to transfer know-how. But it also represents an implicit acknowledgment that there is no rigorous, universal set of software engineering principles at the core of the field -- that it remains very much a craft.
inkwell.vue.293
:
Scott Rosenberg, Dreaming in Code
permalink #72 of 95: Ted Leung (ted-leung) Wed 7 Mar 07 13:35
permalink #72 of 95: Ted Leung (ted-leung) Wed 7 Mar 07 13:35
Paul, Yes the team has become much more distributed. In addition to the people Scott listed, Reid Ellis lives in Canada, Bryan Stearns has moved to Oregon, Morgen Sagen lives far enough away from San Francisco that he is also remote. On the Cosmo team, 2 of the 5 developers live outside the Bay Area. That has definitely made an impact on the open source aspects of the projects. Late this summer, an engineer working at another company produced an entirely new and much higher performance storage engine for Cosmo. This is probably the most significant contribution to come from people not employed by OSAF. Also, one effect of forcing process out of meetings and into mailing lists is that there is a record of the rationale for decisions, and people who were not in the meetings are still able to contribute when relevant. I personally regard this trend as a good one.
inkwell.vue.293
:
Scott Rosenberg, Dreaming in Code
permalink #73 of 95: Paul Bissex (biscuit) Wed 7 Mar 07 14:03
permalink #73 of 95: Paul Bissex (biscuit) Wed 7 Mar 07 14:03
That was my intuition too. Thanks for the confirmation.
inkwell.vue.293
:
Scott Rosenberg, Dreaming in Code
permalink #74 of 95: Paul Bissex (biscuit) Wed 7 Mar 07 18:32
permalink #74 of 95: Paul Bissex (biscuit) Wed 7 Mar 07 18:32
Since we're getting close to the end, Scott, I wanted to squeeze in one more question. My perception, and feel free to correct me, is that your book is fairly unique in the world of software writing in being aimed not specifically at the practitioner, but at the interested layperson. This book feels very much a part of the legacy of the Whole Earth Catalog (which we're soaking in right now of course), operating from the assumption that the world is a complex but ultimately comprehensible place, and that interested non-specialists have as much place learning how a particular corner of it works -- and how the work in that corner might improve the world -- as anyone else. What I'm trying to get around to here is asking you how you view your place in the world of software. It's clear that you have a deep interest in it; that was really driven home by your story about collecting tiny snippets of different programming languages. You are not just an anthropologist of an alien culture. And yet you remain a writer of sentences and paragraphs, not functions and procedures. Do you have any idea where this interest will take you next? And do you have any models or precedents you keep in mind to help you explain, to yourself or others, what it is you are doing and what your relationship is to the world you are chronicling?
inkwell.vue.293
:
Scott Rosenberg, Dreaming in Code
permalink #75 of 95: Scott Rosenberg (scottros) Thu 8 Mar 07 09:15
permalink #75 of 95: Scott Rosenberg (scottros) Thu 8 Mar 07 09:15
Paul, I'd be honored and proud to be viewed in some way as part of the Whole Earth legacy, and certainly, from my years of presence on the Well and my general marination in the writing and ideas of people like Stewart Brand, Howard Rheingold and Kevin Kelly, it's fair to see some influence there. But I can't say that it was conscious in any way. I think I was more directly aware of some antecedents that we've discussed and are sort of obvious (Tracy Kidder, Steven Levy, etc.) and maybe some that are less obvious. One point of comparison for me -- or, to be more precise, maybe, a target of aspiration! -- is John McPhee's writing on geology, where a knowledgeable outsider takes you inside an extremely complex field and the issues the people in it confront in their work. Making the book comprehensible and absorbing for the non-specialist was absolutely my aim. It was, you could say, one central requirement of the project -- and I feel comfortable that I at least partially fulfilled it. But there's no question that it was tough to aim for that while also knowing that the book's "early adopters" would, inevitably, be programmers who would read it from a very different vantage. I spent the first 10 years of my writing career as a theater critic, and that sort of writing involves a primary responsibility to the general reader. Most readers of your reviews are never going to see the play you're writing about, but maybe, if you write a lively and engaging enough piece and you find ways to connect what the event was all about with something else in the readers' world, you can make the 10 minutes they might spend reading your review valuable to them. It was also always important to me -- but in a secondary way -- that I write knowledgeably enough to earn and retain the respect of the people in the field I was writing about, the directors and actors and playwrights. So this sort of insider/outsider balancing act is one that I've long been familiar with. And my status in the theater world was similar to my relationship to programming -- not something I've been actively involved in since teen years (the last time I appeared on stage!), but have worked on the edge (I spent a couple years reading new plays for the American Repertory Theater in the early '80s) and have some knowledge of the field from the inside. Where it's all going to take me next I have no real idea. I've been back working at Salon since early last year, trying to add some new interactive features to the Web site. I thought it would be a way I could take some of what I'd learned in writing DREAMING IN CODE and bring it home to help the company. But it's also true that everything I've attempted to do since returning to Salon has taken a really long time! While that's been frustrating, it has, at least, confirmed the book's perspective -- that making software really is hard, and that it will usually find unexpected ways to trip you up.
Members: Enter the conference to participate. All posts made in this conference are world-readable.