This essay is really a prelude and prerequisite for my next planned essay, the essay which was one of the several catalysts to start me blogging in the first place.
What are Tools?
Let me start by defining some terms: “Tools” and “Transitionality.” By “Tools” I don’t necessarily mean just 3rd party components like grids and menus, and 3rd party utilities like installers and help writers. Instead I refer to any software developers might use be it languages (C++/C#, VB/VBScript, Perl, Python, etc.), IDEs (Visual Studio, Eclipse), Installers, Database Query Apps, Source Code Control, and so.
Rewind to College Days
Let me define “transitionality” via anecdote. Around 1985 I took a course entitled “Human Factors in Software Development ” from a professor by the name of Dr. Albert N. Badre. Dr. Badre was and is highly regarding in the software industry for his research in human factors. He consulted with Lotus on their 1-2-3 interface, and I took his course shortly after he published the papers entitled: “Designing Transitionality into the User-Computer Interface.” (Ironically Lotus was suing Borland for using its user interface while I attended this course; clearly Lotus didn’t understand the market value of owning the user interface standard. But I digress.) Badre’s course had a lasting impression on me; more than almost any other course I took while at the North Avenue Trade School. In hindsight I was very lucky to have studied until Dr. Badre, even if for only one course.
Beginners vs. Experts
User-Interface Transitionality as defined (to the best I can remember) by Badre was the ability to morph user-interface so it was easy for a beginner and efficient for an expert. Further, though beginning users never make it to expert status, expert users were explicitly defined as being a beginning once. Although this latter point seems hardly worth stating, it was an important to optimizing user interface transitionality.
Trashing the Mac
I remember Badre praised the ease of use of a Macintosh, but abhorred its transitionality. This gave me great pleasure as I’ve never been a fan of the Mac, possibly for unconventional reasons (however, elaboration on subject is for another day.) Of course Badre also gave the Microsoft O/S of the day — DOS — failing marks its beginner user interface. But as I was a wet-behind-the-ears kid who foolishly considered himself a DOS expert, I really didn’t mind at the time.
Point-and-Click = Easy?
So, part of transitionality is the need to have both an interface for beginners and an interface for experts. In the day, a point-and-click GUI was enough to be a good beginner interface, and a command line was all that was needed for experts. Of course today software is more sophisticated and those distinctions aren’t sufficient, but the general concept is the same.
Feed Me, Seymour!
But just having both beginner and expert interfaces is not sufficient to provide great transitionality. Instead, having great transitionality requires that the path to becoming an expert is the ongoing use by one who starts as a beginner. For example, IntelliSense has a pretty good transitionality mechanism. The developer using a given set of objects for the first time is a beginner. Over time IntelliSense “tutors” the developer on the use of those objects until, possibly, the developer becomes an expert.
But the Tutor Could Improve…
As an aside I contend that IntelliSense could provide much better transitionality that it does currently. Instead of just providing the property/method syntax, it could also provide help with semantics including the ability to pre-select from standard multi-line patterns of use and the ability to sense which patterns are being used to offer up examples and suggestions. I know Whidbey is adding improvements in this direction, but I doubt to the extent I am envisioning. This proposed level of IntelliSense is much more advanced than current, and is probably several product generations of R&D away.
On the Other Hand
For counter example, Excel has a nice point-and-click interface for the beginner, and it has a VBA-based macro language for the expert. But other than its pitiful macro recorder (subject of a future blog) Excel has no way for the user to transition from beginner level to expert. The expert crown instead requires lots of initiative and hard work on the part of the user to obtain.
Just Say No to Dry Spells
One final important point: To embody transitionality a tool needs to eliminate big discontinuities in Time & Effort Invested vs. Productivity & Expertise Gained. More specifically, one should not have to invest hour and hours of study to accomplish the next simple task. Anyone with significant expertise in Visual Basic 6.0 but new to .NET who has tried to simply open and read from a text file in VB.NET or C# knows what I mean! Fortunately Whidbey addresses that specific issue.
To illustrate, here are few simple conceptual charts from our friend Mr. Excel:
Note that if investing one unit of time & effort gains you one unit of productivity & expertise, you’ve got pretty good transitionality. If you have to invest many, many units of time & effort to gain any additional productivity and expertise, transitionality is not good (can we say, C++?)
Another Blast from the Past
While in college I participated in the co-op program, going to school for a quarter and working in a industry for a quarter (Remember the quarter system? That infinitely logical scheduling structure that organized the school calendar into four essentially equal time periods? Ah, but that was before the college football lobby got its way and universities converted to the semester system en mass. Which make oh…so…much…sense. Yeah right. Score one for academics. Not!)
One of my co-op jobs was technical support at IBM Atlanta for the Personal Decision Series, or PDS. PDS was just like Microsoft Office except it was for DOS. And except it really wasn’t usable. And it except it didn’t even gain 0.9% let alone 90%+ market penetration. But then you already knew that last fact.
Anywho, among about 20 co-ops I was the geek that liked computers and software. Everyone else liked working for IBM. And being part of the IBM co-op social club. So I got all the technical assignments. Like three weeks in Menlo Park, California doing regression testing on PDS. But that’s another story.
I also got assigned a competitive analysis for PDS. They gave me copies of Ashton Tate’s Framework and Lotus’ Symphony (anyone remember them?), and another package from god- knows-who because I can’t remember called “The Smart Series ” (maybe it was “Smart Software?” I dunno.)
Framework was really, really cool, but it was basically worthless. Symphony was cool but not quite as cool and only worth a nanometer more than Framework. Both were “integrated packages” by which I mean all functions were in the same program. Imagine writing letters and managing databases, all in Lotus 1-2-3. Not much difference.
The Smart Series actually blew away the competition, PDS included. It was a collection of separate apps that all integrated nicely. Well not as nicely as MS-Office apps do today, but remember, this was 1983 and DOS, okay? ANY integration back then was good integration.
But what really set The Smart Series apart was the fact it had a command line and everything that a user could do with a menu option or a keystroke sequence could be issued as a command. Not terribly revolutionary; kind of like Excel and VBA, right? EXCEPT! You see Smart Series would build commands for you in plain sight on its command line as you used menu and keyboard options. Basically it had beautiful transitionality, though, evidently, terrible marketing.
And the Smart Series transitionality feature is something that, to this day, MS-Office still has not matched.
Finally, Defined:
So it is time to return back to developer tools; I can now define transitionality for them:
Development Tools have transitionality if they allow a developer to be productive with a very small amount of learning, provide the developer the ability to gain expertise over time as they develop, and rarely if ever require investments of time & effort that far outweigh any expertise gained .
Real Programmers Don’t Need Transitionality!
I can hear it now: “Real Programmer’s don’t need transitionality! Real programmers can figure it out themselves! Real programmers put semi-colons at the end of the line.”
My response? “Whatever! ” [Oops, sorry about the semi-colon thang. :-)]
Of course Mort (the Line-Of-Business Developer) is a lot more in need of transitionality than is Elvis (the Professional Developer), but even Elvis can benefit.
And when the tool provider offers transitionality, the tool provider benefits even more because the sooner Mort and Elvis can be brought up to speed, the more likely lots of Morts and Elvis’ will soon be using their tool instead of the competitor’s.
The Winners…
Take a look at the Microsoft technologies. Which have taken off to high levels of usage and support? Which have fizzle or outright failed?
ASP for example, is a rather good example of transitionality. How hard is it to create an ASP page? Rename an HTML page! Of course the benefits of doing so are about equal to the effort involved, but remember the graph: little efforts offer little gains, but big efforts beget big gains.
Visual Basic v1.0 through v6.0 is another obvious winner in the transitionality wars. It could have been better, but…whose arguing with that installed user base?
And I’d say the SQL in Microsoft Access is another. I actually taught myself SQL over the years using Access’ query tool. At first I just couldn’t get my head around JOIN and GROUP BY/HAVING. But after trial and error using the query tool all while getting real work done, I’m now a heavy duty user of SQL Query Analyzer (definitely an expert level user tool), and I can do JOINs and GROUP BYs in my sleep. Well sort of. When I’ve having a bad night, that is.
Visual C++ doesn’t count. Lots of people cut their teeth on C/C++ in college and got over the hump long before the ever had to use Microsoft’s tool. Almost no one can afford that time investment on the job; that is what college is for.
…and the Losers
How about Exchange Agents? And programming for Office apps, especially Outlook? And what about BizTalk? (Well maybe part of the problem with BizTalk is their asinine pricing structure, but then that’s another blog…)
I don’t mean no one is using these technologies, just that they haven’t been widely popular like others from Microsoft. I hypothesize at least some of the blame for their lack of popularity has to do with the difficulty to become productive using these tools; when it takes Mort too long to get anything real accomplished, Mort give ups and never uses the tool. And all by exceptional Elvis’ do the same.
Including the Most Obvious Sore Thumb…
So what Microsoft development tool do you think has the most obvious transitionality problems, based on tons and tons of trade press articles recently? And I’m thinking of the tool whose transitionality causes the most problems, not the tool with the most transitionality problems (got that?)
I alluded to it earlier: VS.NET of course; especially VB.NET and ASP.NET. Though many people have complained Microsoft changed VB.NET too much in the transition from VB6, I am not one of those. I believe that “no pain, no gain” is truly applicable here.
No instead I mean that VS.NET does not manage its complexity as well as it should. It takes far too much learning to produce even a simple app. Many developers have made the transition, but only because of great persistence and intestinal fortitude. And they were rewarded with much greater productivity then they had in the past.
However many more developers have not made the transition. And since there is no way for Mort to gain any benefits from using VS.NET until after a tremendous time investment, which Mort cannot afford, there are very few if any Morts using VS.NET.
And that’s too bad, because many who are now an Elvis used to be a Mort.
I am Mort
As an aside, given that most of my day is spent running a business and not coding, I am unfortunately Mort most of the time. I am often stymied by a new technology that, but because of its lack of transitionality can’t become productive enough soon enough to implement. I could pass onto my staff, but they have the same problem if there is no transitionality; I can’t afford too much learning, I can only afford them doing (unfortunately; investors are, however, welcome to apply!)
For instance, we still have not moved to ASP.NET (and yet again, that is a blog for future day.) I do have the Whidbey bits from PDC, and Whidbey is a lot better. But Whidbey is still far from being good enough.
Microsoft should ensure all developer tools have transitionality
As an epilogue, I think Microsoft needs to put more resources towards ensuring transitionality in their developer tools. Of course I’m sure they try. I’m sure it is a resource issue; I certainly understand that here at Xtras.
But maybe, just maybe no one has recently framed it in this manner. If not, maybe several of the MS devs will read this post. And it they do, maybe we’ll have a mental model they might not have had that will allow them to incorporate more transitionality in their developer tools.
We can only hope. And if so, I’ve done my job.
And don’t think you get off easy…
And don’t think I’m just targeting Microsoft with this essay. I mean every one of you too. Especially 3rd party component and tools vendors; they are in general far worse than Microsoft on this issue. But I give them a lot more leeway here, because collectively, their revenues and hence resources are unfortunately still but a gnat on the behind of an elephant. That elephant being Microsoft.
And Finally
Well, that’s my first technical post. I needed to write it because it is prerequisite material for numerous planned future posts.
I’d love to hear your comments, good or bad. Post below, or blog about and link back from your place.