“Innovation has nothing to do with how many R&D dollars you have. When Apple came up with the Mac, IBM was spending at least 100 times more on R&D. It's not about money. It's about the people you have, how you're led, and how much you get it.” - Steve Jobs

Report back from my Blend Boot Camp

Blend review

I just completed what could only be called a boot camp in how, why, where, what of MS Expression Blend, the new interactive design tool, which is part of the Expression Studio suite of design tools. I have to say that my introduction to Blend is very different than most people who it seems this tool is targeted for from my experience with the tool and the rhetoric about it. My main experience of Blend is really in the context of being considered for the position of UX Evangelist for Microsoft. This position was tied directly to the existence of Expression Suite as it was the Expression Suite product managers who were championing the position. The position itself was going to reside as part of the WPF and WPF/E developer evangelists as MS has never had a design evangelist before. But the title being UXE: User eXperience Evangelist in my mind meant that they were targeting Expression right at ME! I mean Im an interaction designer who specializes in RIAs and desktop applications usually in closed environments where technology choices are quite simple to make due to the level of control I have. Yea!!! A tool Ive been waiting for my whole life.

Through my interview process I felt I became acquainted with what they had of a strategy for evangelizing this tool to the masses, and especially those who I thought were the primary users of the tool, Interaction Designers. It turns out that I was completely wrong and this more than anything else probably sets up a huge disappointment in this tool.

The other part that sets up my disappointment of this tool is that I am constantly comparing it to its closest competitor in my mind, Adobe Flash. This is probably not the way that MS thinks of it though. I think they are mistaken as they are not really thinking about 2 issues: 1. interaction or interactive designers have embedded themselves pretty seriously in the use of Director and Flash for either prototyping or actually implementing interactive applications. 2. Desktop applications are no longer the going to be solely developed using Microsoft technologies even for Microsoft platforms. Apollo is going to change that. It seems that from querying people related to the product that MS is not completely familiar with all that is going on with Adobe as they still think of Flash as a gaming and animation environment and they think of PDF as a static environment. Both statements have not been true for quite some time now.

So, while Im going to review this product within that context, I realize that I have a lot to still learn about the tool. After a week of this boot camp I learned that first lesson when trying something new, that the first bits of knowledge do more to teach you what you dont know than what you need to know.

At this point I want to give some major props to our instructor, Brennon Williams out of the UK. His company is called x-Coders (x-coders.com) and his upcoming site expressionblend.com will be an invaluable resource to anyone learning about Blend.

Day 1 of our boot camp was a huge lesson in not Blend, but rather Visual Studio. Yup! The first thing we learned was that Blend is not a tool for designers in the sense that Im used to thinking of, but really for interactive designers in the sense of those people who are hard core Flash/ActionScript programmers. Sure they can do visual, but their real strength is programmatic. And Blend was really meant for them. I would fight this concept the entire week through many a break and lunch time debate about Why Blend is a mistake? with Brennon, who was a tireless defender of what he thought of as a new paradigm and what I still think is 5 years jump in time BACKWARDS!!!!

But there we were trying to learn about user controls, and object mapping before we ever drew our first screens–even at a wireframe level. We had to learn how to do referencing, build a solution (something you cant even do in Blend, though Blend will open a solution). A solution is the largest collection unit in the MS programming world. In side of a solution are project files which can have many different control definitions, reference libraries, and applications built in them as other sub-units. Their relationship is something I still do not fully understand, but I know that if you dont get it your whole application will break. It is important in the end to understand how to architect your objects (elements, user controls, libraries, and applications) because this done incorrectly will lead to really poor performance.

Learning this on Day-1 led to our entire boot camp structure being changed. We realized that in 1-week of classes we were not going to learn what was necessary for us to really own the UI code as we had hoped and as we understood the promise of Blend. While things like Databinding were soooo much easier in Blend than they were in Flash, how to manipulate events as simple as a click on a button were much more difficult than Flash. This led to a tremendous amount of frustration because when I came out of my first Flash class for Flash MX, I was able to instantly tinker and even was able to create my portfolio site (now we can judge the design in a different article). I couldnt do this. I couldnt do the simplest of tasks.

After a week, I realized that a lot of this was because of one HUGE difference between Blend and Flash and since Blend had 5 years of Flash development to build on, it was astonishing that this main component of the UX of Flash was overridden. What is it? Well, the object relationship nature of the code in Flash makes it Sooooo easy to embed programming into it directly. While I could go out to Flex and go to town on really complex stuff, I can also embed really simple programs of events and data structure formatting onto the objects themselves. I do not need to go into another environment, and if I need to find my code later, I know to go to look at the object it is related to.

Another big looser for making Blend easy to use as a designer was that the relationship between user controls and the parent application were not manageable nearly as well. For example it is VERY easy to do a click event in 1 object (say a movie clip or even a SWF) and target an object in a completely different movie clip or SWF. There was direct targeting capabilities up to parent and down again, or directly to root and down a new path entirely. How does this pan out? I can put a click event (& listener) directly onto the button itself and then I can reference in that script easily any object in my application so long as I know its relative or absolute path. In Blend, you have to have listeners at every parent level along the way for these events and then down the child path back to the object. Now Im sure there is some technical reason for this, but remember, Im a designer and if I can do something in one application I see no reason that I cant do it in another. Well, that isnt designer speak per se, that is just plain end-user speak.

You open up Blend and it is obvious that it is a very powerful tool. But so much of that power is hidden in panels and dialogs and mixed titling that you can never find it without an expert guide. For example, going back to the click paradigm. There is an event type called click. GREAT! But it isnt where youd expect. Ya see at the top left there is a panel that says things like Event and Trigger and youd think that is where youd go to do something like adding a click event to a button, eh? Uh? NO! In the properties panel on the other side there is a toggle marked by a 16×16 icon with only a tooltip as a label that says Events. The icon is a lightning bolt. I NEVER even noticed it until it was pointed out to me. And the first event I see there is called Click and next to it is an open text box. I was expecting it to work like a CSS panel where when you click on it a drop down would appear with options for that property or action. Nope! Dig this! It takes me directly to Visual Studio!!!! Where it fortunately creates an area for me to add my click event on the selected object in a .xaml.cs file that the system created for me. And at that there is no help unlike the ActionScript panel in Flash for me to figure out what to do next. Im sorta just left there. Guess what I did? I closed VS and shrugged my shoulders.

After all this, I realized that MS made a really powerful tool for really expert users. It seems that after all is said and done that it is a tool not for interaction designers, but for interactive designers and thus its real promise is lost because interactive designers dont design or engineer applications but rather sites, and experiences. Interaction designers do both, and quite honestly are more skilled and experienced in designing complex interactivity than those who come to all this from interactive design. I know Im going to get burned from that statement, but while interactive designers are really great and knowledgeable, they dont know a heck of a lot about UX, cog psy, HCI, usability, etc. It just isnt part of what they do. They concentrate mostly on implementing the presentation layer without much attention to the context of use, without using user centered research models, etc.

So after a week, I feel lost again. I was soooo hopeful that finally there was going to be a tool where I felt I could do my work as an interaction designer and user experience designer and integrate seamlessly into the development process as peers. What I discovered is now Im going to have to go back and hire a new expert who can do that bridging for me, adding another interpreter in the puzzle.

Something that came up between my teacher, Brennon, and myself was that Blend has really powerful 3D features which take advantage of technology in Vista. I was not only unimpressed, but it sorta pissed me off more. It is the classic mistake of software to be built with too many features, but this feature more than any other feels the most useless to me. I cannot tell you the last time in the last 10 years when I was asked to add 3D to a project I was working on. Enterprise software just doesnt need it and while Business Intelligence apps thrive on it, we still have not figured out how to make those 3D visualizations and interaction models work with standard PC installed I/O devices, nor have we really proven that 3D interactions and visualizations really improve consumption success of the data into useful information. Its a prefect example of how UX was not even considered in the totality of the project.

Now all that being said, Blend is necessary for anyone wanting to design UIs for WPF & WPF/E applications. It does give you a step up over just using Photoshop/Illustrator and just handing it off. It also allows for very very rich transitions which are indeed helpful in any Rich Internet or Desktop application. Transitions are done easily through the timeline and you dont even have to tell the system to tween, nor do you have to manage a heck of a lot of keyframes. The other part that I liked was the style and template controls that are in the system. It is very easy to manage an object used in multiple places in the system.

If I had to sum it up, Id have to say that they are about 3 revs away from creating a tool that I would want to use as much as other existing tools such as Flash, Dreamweaver and Axure. There are also tools like iRise and Serena that do work well in desktop app environments that should compete pretty well here if they had the marketing money that MS has.

I cannot recommend that any designer take up using Blend in their practice unless they are doing WPF & WPF/E applications and even then really learn what you are getting yourself into.
Bring Brennon in to help you out, or at the very least subscribe to his lessons on expressionblend.com.

Good luck! because you’ll need more than the force to use Blend.

Be Sociable, Share!


The archives run deep. Feel free to search older content using topic keywords.