spout

July 14, 2003 spout

Alan Cooper’s Has A Dream

In addition to bending my head back during my flight lesson, Alan Cooper always manages to bend my brain back, too. Here’s a guy that invented drag-n-drop UI development umpteen years ago and he’s been in the business ever since, mostly doing interaction design, but lately trying to tackle the problem of software management. His main thesis is that web designers are called programmers, programmers are called engineers, engineers are called architects and architects are never called.” He justifies this statement by comparing architecture to real-world architecture, which is very different from what the IT industry has co-opted the term mean.

For example, in the world of physical buildings, an architect meets with the clients to understand their needs and listens to their ideas. He then designs a building via a series of increasingly specific sessions with the clients to understand what they need and with engineers to understand what can be done. He uses these interactions to produce blueprints to hand off to the engineer. The engineer decides how to build the building, e.g. what materials to use, what to build or buy, what labor is needed, etc. Before we had mass-produced parts and giant spec books describing every material under the sun, this often required experimentation, which would also feed into the production of a more detailed set of plans to hand off to the construction workers, who do the actual building of the structure. While the structure is built, the engineer and the architect checks in to make sure that things are meeting their requirements and, in fact, it’s the engineer’s job to sign off when it does. Likewise, there are inspectors that check to make sure things are up to code at certain phases of the project.

In the world of software, we’ve got inspectors, they’re called QA staff. We’ve got construction workers, they’re called programmers. We’ve got engineers, they’re called software engineers, even though we have yet to decide what being a software engineer” means (often it’s just another fancy word for “programmer”). We sometimes have architects, but we tend to rely on the combination of engineering and usability folks, most often skipping the usability and most of the contact with the customer altogether.

Alan’s view of the world of software is that, because we don’t have this very interactive role that really corresponds to the architect very often, non-technical management really has no idea what’s going on in the software construction process. Instead, they have to rely on engineers and programmers to tell them things, when they feel like it, and those guys lie (or plain don’t know). Likewise, because there is so little architecture, what comes out the other side is often not what the users want anyway.

In Alan’s world, architects fill the role between engineers and customers and non-technical management, designing software that users want and communicating what’s going on with management. Likewise, engineers design software to spec that works under stress; programmers build software that doesn’t crash; QA checks to make sure that this all happens the way it should.

One of the benefits of Alan’s view is that before engineering happens, architects figure out in a detailed and thorough way what needs building, handing complete specs to the engineers. Likewise, before programming happens, engineers run the experiments and make the technology and resource decisions before any code is written, passing off details specs to the programmers. These details specs also flow to the QA folks, which uses them along with their own quality standards to make sure that the software is right before it ships.

If this seems silly, think about an inspector signing off on a house before the foundation is poured, a construction worker pouring the concrete before the plans are done or the engineer deciding on the materials of a building before he knows if it’s a house or a mall. Software is certainly more fluid than concrete, but it’s not so fluid as we like to believe, as evidenced by the number of failed software projects and the cost overruns associated with them.

We think we’re doing architect/engineer/programmer now, but Alan disagrees. What we have is software being hand-made by craftsman from the iron age, but reproduced like appliances from the industrial age. What we need is real engineering for the information age. Alan puts it nicely, We’re standing at the front edge of the information age with really sharp tools from the industrial age.”

Of course, what Alan’s talking about is the standard waterfall method of software design, which is what I learned in software engineering school. So why don’t we do it? Because we don’t like drawing up blueprints. We like to make the lights go blinky, blinky on the monitor. Building a shed in your backyard is quicker and easier without an architect or an engineer involved, but is that how you want your house built?

Another benefit of this model of architect/engineer/programmer is that it gives non-technical management much more visibility into and control of the process. You may not think so, but this is good. Right now, the only control they have over the process is the schedule. We say, That’ll take two years,” and they say, You’ve got four months.” Why? Because they’ve been down the two year” software process before and gotten burned ~100% of the time, whether the software ships late or it doesn’t ship at all. At least if they say four months,” they’ve only lost 1/6th of the money when/if things go bad. If we want to take the giant hammer of schedule out of their hands, we’ve got to give them something else so that we have the time we know we need to build quality software that we can be proud of.

I don’t know if Alan’s right or not, but I sure want him to be. As an architect, I want the tools and the opportunity to design something that the customer will want (I’ve been down the other road before and it never ends well). As an engineer and as a programmer, I want to build something that will be loved and used when I’m done. Isn’t that what we all want?

July 13, 2003 spout

My First Flight Lesson

Normally a title like My First Flight Lesson” would be a metaphor for something else because I’m generally much more engaged by mental pursuits than physical ones. However, in this case it’s literal; Alan Cooper (the Father of VB) gave me a lesson in his plane (a Piper 6-seater).

Tim Ewald and his wife were staying at my house after the Dev.Conf., so Tim and I and the Sells brothers went to the local little airport to pick Alan up when he flew for an Saturday afternoon lark. When we got there, Alan invited us up for a sight-seeing trip. I volunteered to sit in the back with the brothers, giving Tim the front seat, but Alan insisted that I sit up front in the co-pilot’s seat, clearly having something in mind.

After we took off and Alan took us out of PDX airspace at around 2400 feet, he told me to take the yoke because he was turning off the autopilot. After that, he took me through part of a real lesson, including playing with the flaps via the pedals at my feet, banking, trimming, descending, leveling off after a descend and in general, crapping my pants. Flying a plane was not what I expected to do that day, let alone so close to the ground with non-trivial winds and thick cloud cover. Not one do we have plenty of bumps and *sideways* motion to make mere riding a harrowing experience, but I had my boys and Tim in the back with their lives in my hands in the front. I find the sensation beyond my feeble powers of description, but it was fabulous and terrifying and emproudening all at the same time. And at least I had control. All Tim in the back got was the terrifying part!

Alan said that I did well and had a natural ability to keep the nose up (apparently that’s a problem for newbies). Luckily, because he didn’t want to make the folks in the back puke, he didn’t turn off the engine like he said that he would normally do. Apparently there’s nothing like cutting the engine to give a new pilot experience with what actually happens (apparently the plane doesn’t drop like a brick no matter how many I were to drop in my shorts). Also, he said that normally he’d make me take off and land, but only in a Cessna, which has special landing gear for newbies, whereas had I done poorly on the Piper, I could’ve caused $200K worth of damage. On the other hand, while I was relieved not to experience the wonder of zero-engine flight or my first landing, I’m disappointed not to have those experiences as well. It was pretty damn cool to have full control in all three dimensions. That is, except when we overflew the helicopter that the tower didn’t warn us about and that we didn’t see til we were over it. Both Tim and I dropped some bricks when that happened…

July 11, 2003 spout

The Killer App for Web Services

After watching Amazon’s amazing presentation at the Dev.Conf., it hit me that Amazon.com is the killer app for web services. Not only are they technically cool, but they have two business models for themselves and their associates built right in:

  1. I can build a business on their back-end data, selling targeted stuff to my customers, using their services to do all the hard stuff on the back end
  2. I can use their front-end to sell my own products

Amazon has turned the infrastructure on which they build their own business into a major revenue generator for not only themselves, but for associates. And, if they wanted to take it further, Amazon could provide all of their payment, distribution and storing/querying data as web services for things that weren’t even available for sale on Amazon.com, e.g. medical supplies or porn, removing the need to build all of these services yourself. In fact, they’re already planning on doing this for payment services.

*That’s* what web services are supposed to enable. *Wow*.

July 7, 2003 spout

My First Press Contact @ MS

Today I spoke with Todd Bishop, a reporter from the Seattle Post-Intelligencer (“the Seattle PI). He was interested in my spout entries about my initial experiences with Microsoft, specifically the BillG ThinkWeek stuff. He called last week, but I didn’t call him back right away. Instead, I asked my grandboss (my boss was out on vacation) what I should do. I remember during NEO that MS has very clear instructions about when to talk to the press, i.e. never. Of course, some folks at MS talk with the press, but unless it’s specifically part of your job, you’re supposed to refer the press to other folks more trained in the ways of the wily reporter trying to get the dirt on MS.

So, when Todd called and I hadn’t yet made my millions on MS stock options (any day now… : ), I thought I’d ask around first before making any career limiting moves. That was early last week. It wasn’t til today that I got the approval to give the interview. In fact, I’m pretty the MS marketing guy checking on what Todd was up to had a longer conversation than I did. Here’s pretty much the entire conversation (paraphrased from imperfect human memory):

Todd: Thanks for getting back to me, Chris. I’m glad you went though official channels. That tends to make things go easier.”

I thought that was strange. If I was a reporter, I’d want to track down the defenseless MS employee when they were least expecting it. That’s what I figured Todd was up to when he called my direct MS line w/o any introductions. Luckily, I work from home in PDX. Bwa ha ha ha ha!

Chris: No problem, Todd. Sorry it took so long to get back to you. They were clear my first day at MS not to talk to the press unless explicitly instructed and I’m new.”

Todd: Did you get the list of things I’m after? I’ve already written the story; I just want to check some facts.”

Oh sure, I thought. This is Todd buttering Chris like toast…

Chris: Yes. What can I tell you?”

Todd: You spell your last name S-E-L-L-S?”

Chris: Yes.”

Todd: What’s your position at Microsoft?”

Chris: detailed explanation of MSDN, DevCenters (including their need in the world) and how I’m doing the Longhorn DevCenter.

Todd: Can I just say you’re an MSDN Content Strategist?”

Chris: Sure.”

So now the reporter’s got me giving him more info than he actually wants. I’m in trouble…

Todd: And your blog is http://www.sellsbrothers.com/spout?”

Chris: long explanation about how I organize my site, how the Spout is just the editorial section and that I announce everything from all sections on my home page.

Todd: Oh. So your blog is just http://www.sellsbrothers.com. I’ll correct that. Thanks. That’s all I need.”

Chris: Really? I expected to be grilled.”

Todd: Well, you’re lucky you waited. If you’d have called last week, I’d have really hammered you.”

Aha! He’s just lulling me into a false sense of security for next time! : )

[ed: Apparently Robert Scoble took the brunt…]

July 4, 2003 spout

Alvio — a very cool place to order computers

Craig [1] (via Brad) found Alvio, a really cool place to order computers online. My favorite is the page that lets me configure a barebones P4 system from scratch [2] and then they assembly it, test it and guarantee it for a year. The thing that I like most about Dell is how easy it is to configure computers online. To be able to configure one from the ground up w/o any OSes et al is *way* cool. [1] http://staff.develop.com/candera/weblog2/permalink.aspx/9090a88d-dd58-4310-bb33-85cdc0b121b6 [2] http://www.alvio.com/smoreinfo.asp?iid=941
June 23, 2003 spout

The Danger of Good Debate Skills

I have been in technical arguments many times where I knew I was right and used every once of my debate skills to convince the other person of their terrible wrongness. This can go four ways:

  1. I’m right and they eventually agree
  2. I’m wrong and I turn to their point of view
  3. They get worn down and stop listening
  4. I’m wrong, but they fail to convince me

Being right is fun, of course, as is finding someone that’s willing to change your mind (lots of folks don’t like to argue). Wearing a person down is no fun at all, but by far the worst is that I’m wrong and I stay wrong. Unfortunately, as a professional communicator for the better part of a decade, #4 is a real possibility and it’s something to really watch out for. Being right is easy. Recognizing that I’m wrong is easy when I’m arguing with someone with good communications skills. Recognizing that I’m wrong when the person I’m arguing with isn’t quite up to the task, that’s hard to detect and fix.

Of course, even harder is being wrong and having no one to tell you you’re wrong, but I can’t blame that on anyone but myself. : )

June 22, 2003 spout

Learning to Learn

Sun, June 22, 2003

The most important thing that I’ve every learned is how to learn. I and a few other lucky souls gained this knowledge at the tutelage of one of my mentors, Don Box, during my tenure at DevelopMentor. Not only did I have an amazing thinker to learn from, but I had a enormously difficult topic to learn on: COM.

When I started learning COM in the early ’90s, only a few souls inside of MS really knew it. The only real book in the world on COM at the time was inscrutable and no one with the necessary communication skills and the time to teach COM had yet grokked it fully. Don had written a five-day short course entitled Essential OLE, but only given it a few times, so hadn’t really gotten over the hump (as evidenced by the title of the course). It was my job to become the second instructor on COM at DM.

I’ve always been one of those people that, when faced with a topic and the proper motivation, could almost always learn it easily. This skill helped me to get good grades, but didn’t teach me how to really learn; it was too natural for me to understand how I did it. Unfortunately, COM was too hard to learn naturally” and there’s nothing like preparing to stand up in front of a group of people to motivate you to learn. In fact, the first time I’d had to teach COM, I was so nervous on the last day (when I was to teach the material I knew the least well), that five minutes before my first lecture of the day, I had to find an empty room to hyperventilate. I literally didn’t know what I was going to say.

Unfortunately, I didn’t have the option of bailing at the last day of this class unless I was prepared to give up my job at DM. It wasn’t the bailing that was the issue; if somebody else that knew the material was available, I could’ve bailed (that’s how cool DM was). Unfortunately, only Don knew it and he was out of town. So, I had only one choice — fake it. I wasn’t proud, but public speaking is like any other form of entertainment and the show must go on.”

As I was giving the slides that morning on COM structured storage (a particularly nasty topic in COM), I found myself learning how it it worked as I told the story to my audience. All the studying and experimentation I’d done had given me the foundation, but not the insights. The insights I gained as I explained the technology. It was like fireworks. I went from through those topics in a state of bliss  as all of what was really going on underneath exploded in my head. That moment taught me the value of teaching as a way of learning that I’ve used since. Now, I always explain stuff as a way to gain insight into whatever I’m struggling with, whether it’s through speaking or writing. For me, and for lots of others, story telling is where real insight comes from.

Still, teaching without the foundation of knowledge isn’t effective. How do I gain that foundation of knowledge? I consume the available material and ask why” a lot. If I look at a class hierarchy and it’s design isn’t immediately obvious to me, I ask why it was built that way and why was that way chosen over another. And to the answers to those questions, I keep asking why til I get to something I know already or until I get to a human reason. The reason for not stopping til I get to something I know is that I believe that all learning is only as affective as well as it can be tied to what you already know. How easily it is to learn something is directly related to how much you already know about related topics, so the more you know, the easier it is to learn more. However, when humans are involved, aesthetics take over, e.g. the reason that C++ has member initialization lists and Java doesn’t is that Stroustrup liked that feature and Gosling didn’t.

The process and benefit of asking why is described well in a novel I’m reading: It put me in contact with military planners from a dozen nations, and more and more they began to come to me with questions well beyond those of military strategy. … I didn’t think my answers were particularly wise, I simply said whatever seemed obvious to me, or when nothing was clear, I asked questions until clarity emerged.”

What made this process so amazing with Don was that we were both doing the same thing: experimenting and telling each other how it worked, which made for a very tight feedback loop. The loop got better as we added more people, like Tim and Keith, both of whom are also amazing thinkers. Audiences are good because of the feedback that they can provide, but optimized feedback like this got us all leapfrogged very quickly into deep COM thinkers.

The goal of all learning is clarity. My own method involves taking in the available material, asking a bunch of why” questions and then telling somebody else til clarity emerges. After COM, I’ve successfully applied that method to learning how all kinds of other technologies work, how to run a business, how to write, how to manage, how to lose weight (50 pounds and holding) and, most recently, how Microsoft works. Thanks, COM (and Don and Tim and Keith and every audience I’ve every had : ).

June 20, 2003 spout

Naming My Feed

Fri, June 20, 2003

When I built the Windows Developer News feed on my home page, it was an attempt to build a Windows equivalent of SlashDot. Unfortunately, I’m not interested in keeping up on all the news in the Windows developer space and the few folks that have stepped up to post on this site are largely spammers (although not all of them). Also, in my own feed subscriptions, I find that the ones I’m most fond of are from individuals, not groups. Plus, my grandboss recently put a fine point on it, I hate the name of your feed. That’s not what it is.“

So, I’ve moved this feed to be just stuff from me. The problem was, I didn’t know what to call it. In addition to posting links to stuff I produce, e.g. tools, writings, editorial, etc., my site’s feed is really about the things that I find interesting and my personal insights, so I need a name that reflects that. Also, I’m a big fan of puns, alliteration and double meanings (the logo has *3* meanings), so a name with those elements was important.

As always, when I’m faced with something like this, I turn to the community, specifically my own readers, who seem to have an unhealthy desire to participate in things like this. When I asked them for their input, I was overwhelmed with more the number of responses; and good ones, too (it probably helped that I was giving away a free seat at the Applied XML Developer’s Conference [July 10th — register now!] to the one I picked)! Here’re some of the best that I didn’t pick:

  • The Naked Programmer” from Richard Caetano. This has a nice tie in with the logo and connotes the openness I’m fond of in my writings. The problem with this one is only that it already appears on the web.
  • ″.Nirvana” from Yaniv. This one goes nicely with the logo and my current technology of choice. However, as much as I like .NET, it’s not likely to be the last disciple I embrace, so I don’t want to tie myself to it.
  • Sells-A-Go-Go from Michael Weinhardt. This one from a former protege very much appeals to my sense of fun, but it only has one meaning.
  • Longhorn Foghorn from Mickey Williams. Again, this one ties me to a wonderful technology, but one that I’m legally obligated to stay mum about for a while longer. However, if I have anything to say about it, Mickey, you have named the Editor’s Blog for the Longhorn DevCenter when it goes live. Thanks!

The one I did pick was a blend from three guys: Mike Prilliman, Chris Burrows and Roland Tanglao. They each gave me parts of my new RSS feed name: Marquee de Sells: Chris’s insight outlet”. This name has tons of wonderful qualities:

  • it’s unique on the web
  • it’s short and distinctive
  • I share a birthday with the Marquis de Sade
  • the Marquis and I share an unhealthy obsession with our respective writing topics of choice
  • my logo is an abstract of my naked picture (the Marquis’s topic of choice : )
  • a marquee is an entrance (like my homepage) with a sign announcing what’s new (like my feed)
  • my feed is an outlet for my insights, whether code, writing or interesting things I find I the web
  • insight outlet” sounds like “inside out,” which connotes how open I try to be (ok, I’m stretching on this one, but insight outlet”
    *does* sound cool : )

Of course, once I’d picked a name that blends entries from three people, I had the problem of how to award the prize: a single seat at the the Applied XML Developer’s Conference. And then I remembered that it’s my conference, so all three of them get free seats. Welcome!

BTW, the Applied XML Developer’s Conference is going to rock. Register now before all the seats are gone.