Bio Erik is the Development Manager of Expression Web where he manages, and generally randomizes, the developers working there. His original educational experience is in the field of behavioral neuroscience and cognitive psychology, where he studied how newborn infants learn their first language.
Thank you for having me.
I came here for two reasons: and the first is that this is one of the hardest jobs that I think I can find in Microsoft. Because professional design is a market image Microsoft doesn't really excel typically. And having a chance to come in and to help Microsoft to really rebuild its focus on design and its relationship with designers, something which is a little bit broken, it's very hard. And let's be clear: we know that we are not the Goliath in this field, we are the little David and that makes an extremely hard problem.
The other reason that I really want to talk about this a little bit is my wife. And my wife is an architect. What my wife really helped me understand (she does some web design on the side, she does some graphic design on the side) is that Microsoft's relationship with designers is a little bit broken. Architects don't like to live in poorly designed houses; you can translate that through to almost all designers. If you are good at design you almost certainly love design. And if you love design you want to be surrounded by well designed products. In Microsoft, in previous years we had a focus, and we had a vision, and that focus was about a PC on every desktop. And that's great and it's important. The fact that my grandmother can use email is tremendous. But that market, those folks, when you talk about getting people into the PC into the computer, it is about writing software that makes people feel comfortable. I went to China for 2 weeks last year, and in the middle of it I got a little sick and I had to spend 3 days off of local food. And what did I do? I went to McDonald's and I felt bad that I'm in Beijing and I go to McDonald's.
But why did I go there? I went there because it was safe. And to some extent that's what Microsoft was doing. It's like saying: "Here are our folks who are a little bit afraid of their mice. We need to create software that helps them feel safe." And that's good and fine and appropriate. But the problem is that market is not going to be there forever. The generation after me are folks who all of them, at least in the US, really in a lot of markets, are going to intuitively and comfortably understand. These are folks who don't want the safety of McDonald's. They are the gourmets. They are the foodies who want an experience which is engaging, a little bit challenging, that is really innovative. That's a change and Microsoft is starting to see that. And for us in Expression Web our role is to help that, because part of being design focused is about building a relationship with professional designers, and Expression Web is all about building a relationship with professional designers. To show them that they can have a home here, a tool that really is great designed and is focused on them and how they are different from the general market.
I think we are seeing a few strong trends, let's talk about three of them: one is that we are seeing a real focus on Ajax and client side interactivity, we're seeing a focus on search engine optimization, which is really about taking your web page and making sure that it is displayed with a really great page ranking relevant to your content, and the third is about the advanced use of CSS, not just to provide new fonts and new looks and feels, but to provide structure for your page and layout.
I thing search engine optimization is different, and what I think is different and interesting about search engine optimization is that it is a part of a collection of trends we are seeing, the next one is CSS, for layout, it's also an option. Designers have always focused on the look and feel of an application. And that's appropriate and that's great, and an important thing to do, but in addition the underlying code that you have has to also be great. This is very much like what developers experience when they first start learning the code; you care about getting the functionality up there. But over time you start to realize that "Oh, my God, if I don't have maintainable code, if I don't have well structured code then I haven't really succeeded", and you're starting to see that in the market here as well, a real focus on quality, not just visually but in structure and maintainability, in the quality of the underline HTML, and CSS, and in some cases JS.
I think that our CSS story is best of breed I think that we have the single best story for CSS and I think we focused on a few areas when we built Expression Web. CSS is hard, and the reason why CSS is hard is because it doesn't give you great feedback. When you do things wrong it's very hard for you to know what you did wrong, and we wanted to provide what we call our CSS task pane a really great way for you to debug. We have a great story, we were working on the product, and two guys came down the hall with a case of beverages for us and we walked over them and we were like "Who are you? What are you doing here?" And they said: "Oh, well, we have this really hard problem. We have padding on the left of 3 pixels and we are not figuring out where in the CSS we are specifying these pixels. And the problem is that CSS is a high hierarchy of rules, and they overwrite each other and you never really get great diagnostics about what's going on. In the browser you may just see 3 pixels to the left, that's not what I want, and people can really pull their hair out for days, trying to figure this out. And what we did, we loaded it into Expression Web and very quickly we were able to show them how the rules applied, what over wrote what, and that allowed them within minutes to see what the problem was. They were very happy, and we were no longer very thirsty.
No, no really. We were originally called something very similar, Expression Web Designer, and we've just shortened that a little bit. Expression is our brand and we want the name to focus on expression and then clearly we are the web design product in the expression suite, so that ExWeb is just a shortening of that really is less of a code name and just a little bit of helpfulness.
Absolutely. Expression really is a collection of products, all of which are focused at serving the professional designer and serving the design community. I'm not just saying folks who have a job in design but folks who have great aesthetic, folks who are focused on aesthetics and on interactivity, those are folks who are going to have a great home in the Expression collection of products. And we currently have 3. We have my product which is Expression Web, we have Expression Interactive Designer, which is in a way a sister product to us, which means that we are for creating really great web applications, and Expression Interactive Designer is for creating rich client applications, that's creating clients in a technology called Windows Presentation Foundation or WPF. And then there's Expression Graphics Designer which is a tool for creating graphics and you can use that to create graphics for yourself, and you can also use it to create graphics that you would then use in either Interactive Designer or Expression Web.
We all came in with a pretty unique focus; we have a lot of folks on the team. Like I said before, Microsoft has never really succeeded in this space, and we knew that if we wanted to be successful we had to do something different. And part of it was bringing in different types of folks, so you'll find that a lot of our upper management are folks that come from the industry and have build products that were successful at building designer tools. But another thing that we did is we brought in folks who were really passionate about understanding the customer. What we've done is try to build a design process that does two things. First of all, if you had a classified art development process you would classify it squarely as an agile development methodology, it's very iterative, it's not waterfall. We do that for a few reasons. One because we really are passionate about feedback, one of the things we have done differently is that we actually hired professional web designers to come live on our team. That's why we have a customer champion take part in development. And we do that so we can get feedback about "Hey, this feature when we are implementing it, does it work or doesn't it?". And the difference between having somebody right there which is hard for big software companies, having them right there to ask is a really great thing.
But in addition, our focus on really iterative development and for us our passion here is about, one: "get product you can get out the door to get feedback from customers". But perhaps more important from a engineering is what you want to do to succeed? We want a process that's natural. Jacobson says that "any given process consists of 3 things: practices which are things that you do, artifacts which are things that you create, which includes code and tests and design docs and specs, and then competencies, which are things that you need to do practices. Almost every practice that I've ever seen from folks who love practice, in their process they create a lot of practices in order to compensate for a lack of competencies. And then of course your management needs to feel good that you're doing those practices, so you have to generate a lot of non code artifacts to prove to your management that you're doing the practices so you don't need the competencies. The problem with that is that it's not sustainable and nobody ever really does it and it adds a lot of over head. And what you are doing is you are trading efficiency for certainty. And what we've said is "No, let's not try to do that, how do we build a process that is natural where it's almost no practices at all, but not have to be a complete chaos?" And what we've said is separate your work into short iterations and this is what we are passionate about that at the end of the day you say "here's what I'm going to do in 3 weeks" or whatever time period it is, and the in that time period you meet with your sponsor from your iteration, somebody from management and you show them what you did. And within those 3 weeks you should have control to do whatever you think is natural. But the rubber is always meeting the road. And you are having all of your tests done, and it's not just dev and thrown over the wall, because that's a form of dead wreckening.
Explorers in the old days, they would say "how do I get from England to France?" And you say "Oh well, you are at the tip of England, we know how the winds are, so you go south for about 3 days and then your turn east and eventually you'll hit France". Assuming that the winds don't change and the more complicated your plan is the worst dead wreckening is because as you start to view off course, things get worse and worse and no plan never meets first contact with the enemy. Dead wreckening is about making all of your decisions up front and that's what most traditional waterfall processes do they make a lot of decision up front. We said "we want to still make the same decisions, but don't make them all up front and then as you go along pray that you don't have to go back and revisit it. Split your work up in very short iterations. Anyone who's done agile development, none of these should be any surprise to them. All I would say to anyone who's watching is that this works and that it's successful and absolutely that I would recommend that they look at it more.
First of all this depends on who you are. If you are a developer, I will give you the following advice: "design matters". How people interact with your software is becoming more and more important all the time. You need to get a designer into the process and that's what I'm trying to say here. If you are a developer you have to think about "do I have design feels? If I don't, and if I'm writing software that matters, try to get a designer into the process. And that's where ExWeb starts to fit in. When you need a designer and you need a workflow between the designer and the developer then you should be using Expression Web in order to enable that workflow. And clearly we work very well with visual studio and all the Microsoft developer tools but you should be able to find a place for this tool in any process you have.
Absolutely. There are a number of traditional workflows that you see for designers and developers. And the first one is something like this: this is the classic model in ASP.net, in Avalon it's something like you have some kind of artifacts that the designer creates and some kind that the developer creates. And the designer, in a lot of environments creates the first product. So he creates the structure of the HTML. Or the structure for WPF and then he or she hands it up to the developer and the developer will then add the code behind. I am a little skeptical about the success of that specific process. Some people are successful with it but I think what's better is something like this: developers are the ones who know things like "oh, do I need an ASP.net list box? What collection of divs or what piece of Ajax do I need where?" So very often it's hard for designers to give you that finished product full structure. And I would say something like this is a great workflow. Designers should create a prototype, that's just an image, that's what we call a low fidelity mockup. And that would tell you the developer "Ok, here is what I need to create, but don't worry about layout at all, just put them right down the page". And then give that to a designer to say "you take this and you restructure it and you rescan it, you make it pretty". And that way the designer has influence both in interactivity which he can show the prototype, but they also have influence in polishing the finished product and say "here's the look and feel and here's the icons, and here's the color". I think that is a really great workflow. Now, if you have a long product you can go through the cycle many times, because you'll change stuff and you'll need to go back and forth, and you just need to make sure you have a great process for moving between these products and for handing off code exactly.
Let me say first of all that FrontPage is no longer a product in the Microsoft product suite, the role that it played being part of the Office suite, Front Page was a design tool that was largely targeted at information workers, because we took a bet and information workers might make web pages some day but it didn't happen and we started to move on and so you'll see really the 3 products are: Visual Studios, Visual Web Developer, Expression Web, And SharePoint Designer. And the 3 tools should be used like this: if you are an information worker, if you are looking to enable creating content by information workers, Microsoft has a really great story around Share Point. And Share Point Designers is a tool you should use for designing that. If however you're not looking for information workers, if you're a professional, if you're highly skilled and creating websites, then probably the best tool for you is to use Expression Web in coordination with Visual Studio, which is to say that if you are a developer, use Visual Studio, if you are a designer use Expression Web. If you fall somewhere in between then you need to figure out which one you are more comfortable in. If you're a developer then it's a good chance that even if you are passionate about design you want to create good design, there's a chance that you would be perfectly happy, just living in Visual Studio. But if you are really focused on design or if you have people like that in your process then that's when you use Expression Web.
That's a very great question. It would be a shame if I couldn't say "Oh, there's a lot". But specifically, for practices, I think a really great person is Alistair Cockburn and Alistair is wonderful for a number of reasons. First of all his focus was on saying "What's successful and not about being dogmatic". He's a guy that really understands that process can never ever make you succeed. Process can make you fail, the lack of process can make you fail, but process is never what makes you successful. He has focused on that and on the importance of people interacting, and how people interacting makes group software development hard, it's tremendously strong. Clearly there's other folks, from technical stand point I have a lot of respect for folks like Martin Fowler, and he has pushed towards code quality and refactoring.
Right now I am reading a book called "Eric Meyer on CSS", an introduction to CSS for web designers, and it's a great collection of tutorials. He is really luminary in the design field particularly real modern standard space CSS design. I'm currently reading him, I'm currently re-reading "The gang of four" book, design patters, it's a great classic, but you can never review it too many times.
I don't know that I'm typical or perhaps I am, only your listeners would know. My background was not traditionally in software. My background traditionally was cognitive psychology and behavioral science, and I didn't right my first software. I got into a fight with a professor one day about what is a chimpanzee doing in a specific experiment, what's going on in his head. I actually wrote a gigantic Excel macro, maybe 7000 lines and that was my first software program. I laughed and clearly knew that was a wonderful experience, but not the right thing to do, going forward. So I left school around this point and I learned C but I didn't spend any time using C, then C++, used C++ for years and years, some Java, but I spent the past 4 or 5 years primarily in C++ and C sharp.
5 years ago developers really understood what it meant to write great HTML code because it was all about modems and dial up and reduce the size of your code. And that's something I think developers are great at, we love to do it, it's fun, we can take a look at the generated page size and optimize it and that's great. But the web has moved on, and that's really what I want to say. What makes great code today, there's much more of an aesthetic to it, just as with our source code. We love to write beautiful code and it's the same thing now that the aesthetic of your HTML it's important. And it's not just important for no reason but it's important for maintainability, things like using centralized CSS, using CSS not just for fonts and sizes but using CSS to dictate the layout of your page separating the content from the layout in CSS. I think there are a lot of developers out there who think CSS is only about colors and fonts. But the truth is you can specify all your layout and I would tell them to look at that, look at things like search engine optimization, look at things like accessibility, these are all things that are very important and are design focused things. If you are writing your own HTML I would absolutely recommend that you go take a look at that.
Absolutely. Right now we provide a report that allows you to take a look at your code and to analyze it. If your users are Microsoft users, and you're familiar with ... something similar where we take a look at accessibility and to say "When are you following accessibility guidelines?" And they were very well defined. If a page reader is going to be able to read your page, there are very well known standards that you have to follow. And you should see us enhance in this area, in terms of being able to take your page and to say "now I want to view this page as how it would look when I view it over a printer" or how is it going to look when I'm generating it for screen readers, as in oral mode, and you should actually see us invest a lot in this area and in the area of the quality of code in general.