FYI: Lessons from Kai Wu at ArsDigita
Paul Everitt <[email protected]> Tue, 11 Feb 2003 10:20:26 +0100
| Newsgroups | gmane.comp.web.zope.zope2-migration |
|---|---|
| Message-ID | <[email protected]> |
Howdy. Below is an email that Kai Wu, a former engineering manager and early employee from ArsDigita, sent me about things they didn't do right. He agreed that I could share it with this list. While it's true that their situation had some differences, I think the commonality far outweighs the differences. I hope we choose to *actively* learn from his experience. I think that the current discussion falls in the Risk Management category. What are we doing to avoid the pitfalls described below? --Paul From Kai Wu Ah, well (grimace) there wasn't a clear plan for transitions - we built ACS 4 Tcl anew, while ACS 5 Java, of course, shared little besides the data model with ACS 4 Tcl. If you started on a given system (ACS 3, ACS 4, or ACS 5 Java) you usually stayed on it - translating software plumbing is a nauseating task for smart programmers, nor is it an appealing expense for clients. Zip back to Summer 2000; ArsDigita had a handful of our sharpest developers coding ACS 4 Tcl (note: we did not have a QA team, or dedicated doc people). We pre-sold new customers on ACS 4 Tcl for a while. We told old customers (on ACS 3 Tcl) we'd take care of 'em - meaning, a developer or two on our end was essentially stuck in support mode, tied to a legacy client. At that point we had a separate engineering team forging ahead with ACS 4 Tcl pretty much freed of any obligation to do backwards compatibility with ACS 3; the changes were quite radical. (We actually tried to get close to Zope's object model - no easy task using an RDBMS and a procedural language.) Of course, the old customers who managed to survive (the 'net bubble was just starting to deflate at that point, in mid 2000) were rather curious as to what ACS 4 had. Some were willing to pay for developer time to do custom migrations, most not - new features, and not new plumbing, are almost always brighter lights for aggressive dot.coms to be drawn to. By Fall 2000, with our sales and marketing guys telling us for the past year that Tcl sucked in the marketplace and that all big clients were asking for Java, the first ACS 4 release was done. Almost immediately, we re-focused on ACS 5 Java, while expanding our engineering team dramatically. Well this ticked off a lot of people, internally and externally. Our professional services people, having just ramped up on ACS 4 Tcl, were ticked that we were pretty much abandoning it within a few months. Clients just started on ACS 4 Tcl were confused and worried. We had at end of 2000 almost nothing working in Java, just orders to get it done ASAP. As it turned out, 5-6 months later in summer 2001, the first client projects were tentatively deployed on ACS 5 Java. Upon reflection I get a little freaked just writing this; in retrospect it was an insane schedule, driven by no small amounts of fear and desperation, and as one of the lead managers I walked a constant tight-rope with client teams who did their best delivering systems on alpha software. Even by the time I left (got axed, urk!) aD in December 2001, client teams were still ramping up on ACS 5 Java, and product development was still intense. And if you visit the Red Hat site (they bought us out in a rather, uhm, closed-door deal) and look for CCM, you'll see it continues; I'm quite curious to see it eventually since I like my former colleagues and liked our product idea, but I've decided to go with Zope for several of my own projects. Back to the past: Of course, our open-source external community (see openacs.org) was up in arms about all these changes; first they were asked to adopt the ACS 3 Tcl orphan. Then the ACS 4 Tcl newborn came along. It took them a long time to translate and begin improving ACS 4 Tcl (they use Postgres, we used Oracle) - in some ways, that learning curve sucked up such critical amounts of time and energy that their whole community suffered; growth in ACS adopters slowed greatly. I don't have numbers, but anyone who visited the openacs.org site during 2001 would, with a little investigation, find lots of FUD around ArsDigita, the ACS, and the community - enough to say, "Screw it, I'll go with PHP" (small budget) or "Screw it, I'll go with J2EE" (big budget). Suffice to say, by the time we said we'll be going to Java, it was essentially a divorce; a process that is costly and damaging to both parties, no matter how much either one denies it. Lessons? Always have a few good technical scouts providing well-considered feedback as to long-term product and marketplace trends so your development efforts have a high ROI and stay relevant, and so that your product plans are proactive and can be communicated consistently (perhaps aD started out on the wrong technical base; perhaps, if we had gone from ACS 3 Tcl to an ACS Java, and told everyone so for a while, we'd be OK). If you have the luxury of time and a slow transition, use it. And always, always have something to show people (users, developers, business people, the press) that works today, is polished (good installation, ample docs, high quality, and completed functionality with slick UI), and is clearly being supported (lists, IRC, forums, newsletters with buzz, and regular module/Product releases) - that gets you the gold of credibility. Perhaps today's pace is just a bit slower than the boom time, but I think even a period of 6 months where you're promising The Next Great Thing while reluctantly showing your old software with downcast eyes and shuffling feet will do you serious harm. And we all know 6 months is not enough time for anything as big and cool as Zope 3 to mature. Finally, if your product is any good, you will always have your smartest and fastest developers clamoring to push ahead - let them, but don't let their buzz stir FUD with the much bigger group of regular coders, users, clients, etc. We know those uber-developers are clever and eager to prove it with some great software; sometimes too eager. Disdain for continuity in the product and disdain for its community can kill or maim the whole product; a real pity for open-source products, where many people give very generously of their time and energy. There may be more pithy lessons, but that's what I can think of for now. Hope this helps, Kai