Public Speaking – Great Beginnings

The Starting LineI’m giving a talk next week at the Microsoft Worldwide Partner Conference (WPC). I happen to be in the fun position where I’m directly following the keynote. I’ve sat in on content reviews and keynote writing sessions so I know the messaging from that talk and the overlap that there will be with my session.

One of the services that they offer to their speakers is a speech coach. It’s the first time that I’ve worked with one one on one. I sat through a class offered by a different conference a number of years back. It was fairly useless so I didn’t have high hopes for another speaker coach. Boy was I wrong.

I met with Cathy Banks of Communication Power, Inc. I cockily told her that I have spoken at hundreds of conferences and typically get 8s or better on my evals. Turns out I’m not the only speaker out there that’s had Cathy change the way that they speak – here’s a post by Lee Lefever talking about his 10 lessons learned from his speaking coach.

I talked to her about the fact that it often takes me 3-4 times to really nail the ending on a talk. It’s been a constant problem that I’ve had on how to end a talk. I often run over time because I’m rambling trying to figure out how to finish a session.

Cathy, to my surprise, insisted that we start on the opening. I’m not usually concerned about the opening. I have a fairly casual style that sets the audience at ease and gets their attention.

It was brutal. She had me do the opening, asked me how I thought it went. I was relatively pleased. Then asked me what the point of the talk was because she obviously didn’t get it from my opening. I ran through the highlights of the talk and pointed out the top level message that I was targeting.

All of the sudden, I saw the issue with the opening that she was pointing out. I was rambling through the opening without clearly framing the overall message for the talk. My opening was entertaining, but really didn’t succinctly tell the audience what they needed to get out of this session. That’s the hook that gets the audience to listen for the rest of the session.

Then she asked me what I knew about the crowd. I felt good about this because I knew the target demographics pretty well and was able to talk to that. It’s mostly going to be business level folk in the room. These are management, business-development folk, business owners and so on at this conference. But then she turns it on me asking how my overall message related to this crowd. My message was far to technical and this audience really doesn’t care. I need to give them the couple of technical sound bytes but really hit on how they are going to make money from all of this.

With all of that in mind, I tried my opening again. It felt better but was still a little off.

She took a crack at an opening off the top of her head. And nailed it. As I parsed out what she had just said, I thought through my version of the opening. It was funny but was not nearly crisp enough. It wasn’t well defined as an opening. It was talked to the crowd now but still didn’t hit the 2-3 high level points that I was going to dive deep in for the rest of the session.

I tried it again. And again. And again. Somewhere in here, she started goading me on saying, “Come on Josh! How’d you get through those hundreds of conferences? Tell me that story. I know you’re a story teller so tell me the story!”. Yes it stung, but wow it worked.

Things started to crisp up. I started off my opening with a continuation of a story from the previous talk. I carry over some of the language from the keynote as well. This will help with continuity and really draw the connection between the keynote and my session. I hit the two points that I wanted to hit, gave a solid hook, did all that in a humorous manner and in less than a minute. WOW! I was thrilled. 

Now that I had my opening down, Cathy asked me to jump to the closing. The first one was a little rough. Then she asked me to run through the opening again and jump immediately to the closing. That was killer. I got a fairly solid closing on the second try. Two more refinement rounds and I was set. I carried the language through from the opening, tied off the ends on the two points that I wanted to get across in the session and had a solid call to action.

As Cathly pointed out to me VERY clearly, the reason that I couldn’t close a session crisply was that I didn’t have a good opening. With a good opening comes a good closing.

All that’s left is the stuffing in the middle.

Keys to a good opening

Understand the audience. This helps you target the content at the right level.

Understand the message. I put this second because there are a lot of messages that don’t apply to all audiences. But this is a critical part of the talk. Many talks that I see don’t really have a “message”. They just want to demo a technique or something. The best talks had a solid call to action and are trying to motivate people to do something.

Set up the language for the rest of the talk.

Write it out. Apollo Ideas has a post called Prepare yourself that discusses the different levels of preparation you can have for a great presentation. I talked about it a little in my post Prepare Yourself To Give a Great Talk. This is especially true for the opening and closing of your session. These are the times that you are in the most control of your session.

Don’t worry about establishing credibility. Because you’re onstage, you already have the credibility that you need. The conference has given you that. It’s your credibility to lose, not gain. Nobody cares how smart you think you are. They care what you’re going to be talking about and the points that you’re goign to be making. Chris Bernard usually does his whole opening and then gives people his contact information. I’m going to steal this idea.

Have fun. If you’re not having fun, the audience won’t either.

More reading

  • Kathy Sierra: Better Beginnings: How to Start a Presentation, Book, Article
  • John Kinde: Winning Your Speech At the Starting Line

  • *Update*
    I forgot to put this in the original post. Cathy did all of this over live meeting from a conference room in Seattle on a speaker phone. The mics for the speaker phone were actually in the ceiling so at some points of the hour long session, Cathy was standing on top of the table so that I could hear her better. It was awesome.

    Technorati Tags: ,

    Solid Error Messages

    Writing good error messages is an art form. It’s important though because the error messages are often the only communication with the user in an already frustrating situation for said user.

    I was on Plaxo earlier and got this error message.

    There seems to be a problem. I'll tell you what... let us fix it and this can be our little secret. Please wait 30 seconds and try again.

    At first, I was a little annoyed that there was an error. But as I read the message, I was amused. The situation was completely defused and I tried again in 30 seconds. Guess what, it worked.

    I’m not “keeping the secret” but I started thinking about it and realized how brilliant it is. Your user doesn’t care what the error was because they are not typically (yes we are anomalies because we, as techies, care) interested in if you are not able to connect to SQL Server, or a service that you’re depending on is down or anything else. They want to know that you didn’t just forget about them and that you’re aware of and working on the issue.

    errorMethod '~' of object '~' failed They definitely don’t want you to speak techno-babble with them. One of the all-time failures is the “errorMethod ‘~’ of object ‘~’ failed” error message from VB6.

    This not only spoke techno-babble at the user, but it gave no useful information or distinguishing information. And it popped up all the time. This error message told me that the developer had not done the appropriate error handling.

    I guess that reminds me that the first thing that you need to do error handling in the first place. There are a lot of really good strategies for this. Personally, I really like to have belts and suspenders type methodology here. I use a combination of solid defensive programming (such as checking nulls) as well as global error handling and local error handling in every path. Down to the routine level is probably not the right choice in every case, but the path level is.

    Keys to writing a solid error message

    Inform. Let the user know that there was an error and you are aware of it. This is especially true with online or connected applications. It’s important for the user to know that the error didn’t just go into the bit bucket but is actually logged and will be looked at. This is, of course, assuming that it’s a true statement.

    Apologize. It’s your fault for allowing the error to happen. I, and your user, don’t care that it was an outside service that caused the failure. I was accessing it from your application and you should have planned for this.

    Give directions. Now that the usual flow has been upset, what should the user do next? Should they call someone for help? Should they write a letter? Should they just try it again?

    Collect additional information if needed. I like the error collection routines that ask me what I was trying to do. This gives me a chance to talk about the other things that might or might not have contributed. This is not always going to be useful but occasionally this will surprise you.

    Think. Very often, the error messages are an afterthought or written by the same devs that are writing the rest of the code. This is only appropriate when the dev has a background in linguistics and communications. You should check and double check every error message.

    Ranting and Raving or Getting Results?

    *Ranting ahead*

    yelling

    I’ve been at Microsoft a little over a year and a half. I’m very excited about a number of the new technologies that are here and on the coming roadmap. Microsoft is at a point where it’s more open than it’s ever been. The level of community involvement in projects like the ASP.NET MVC framework, IronRuby and much more has been historic.

    I get that it could always be better.

    I get that many people in the community want to be contributing source back to some of these projects.
    I get that many people want to be more involved and want their specific feedback in every product.
    I get that many people are frustrated by the rate of change even if they recognize that there is change.
    I get that many people are angry about this feature or that feature in some product.
    I get that.

    I FEEL THE SAME WAY! I’m trying to get into some of the TAPs (Technology Adoption Program) so that I can get closer to the product teams and give them all of my feedback in a more direct fashion. I’m shouting internally about all of my feedback on the various products and technologies. I’m shouting internally about all of my feedback on the messaging, direction and overall strategies.

    As many of the ALT.NET leadership know – I’m firmly in their camp. I want the best practices of agile software development and the best tools that can be brought to the table to lead in the industry and shape the future. I’m first in line to say that the drag and drop/voodoo/snippet driven demos that show a product rather than train the audience are crap and need to go. I’m trying desperately to change that and raise the bar on all presentations done at Microsoft.

    What I don’t get is that just because someone fits into one of the frustrations or rants above, that they feel that they can say that all of Microsoft sucks or that a particular product sucks just because it doesn’t fit their exact need or hasn’t incorporated their exact feedback.

    What brought on this rant is the Vote of No Confidence on the Entity Framework. That’s the nuclear option. It’s not perfect so kill it. This is in a long line of bombastic statements that I’ve been on the receiving end of. It’s not a new thing. I’ve got a tough skin. But it’s getting old.

    I’m reminded of one of my kids when they wanted something and I asked them what the magic word was and they said “NOW”. I put them in a corner and they didn’t get the thing that they were asking for.

    I’m reminded of another of my kids whose favorite lunch meat is Louis Rich Turkey Cotto Salami and he won’t eat ANY other lunch meat. He’ll go hungry rather than eat normal Cotto Salami or even another brand of Turkey Cotto Salami.

    I can say un-abashedly (and I’m positive that the product team would agree with me) that the Entity Framework is not perfect. Neither is any software out there in the world. It was created by humans therefore it’s not perfect. Additionally, even if it’s an exact fit in a given context, it’s not going to work for someone else in a different context. That’s why there’s a ton of unit testing frameworks, ORMs, scaffolding frameworks, AJAX frameworks, CSS frameworks, text editors and the like. It’s not that any one of them suck – they are all good in some form or fashion. Each of them was created to work a given context. There are some that are broader than others. But that doesn’t make one better than the others. That just means that they are more generalized and kinda fit more situations.

    All of that being put out there, I actually agree with most of the points in that the vote of no confidence brings up – so does the product team! You can read their response here. I’m also fine with a petition. It’s a solid way to point out that there are a group of people that are united.

    What I disagree with is the way in which it’s presented. The language of “Vote of No Confidence” is intended to start a fight and is long hand for “You suck”. That’s very disheartening to anyone who hears it regardless of how thick their skin is.

    I’m not upset that people are giving feedback. I want them to give feedback. But here’s the deal – do it in a grown up way. My way or the highway doesn’t sit well with anyone on the receiving end. There’s a WIDE path between being constructively critical and downright offensive.

    The product team has to be more politically correct than I have been here but damn it – give them some credit. They are smart guys weighing a lot of different variables, concerns, customers, other product teams and a ton more. No, they are not perfect. But give them some credit. Every decision and feature represents a lot of time in dev, testing, translations and compromising timelines and other features.

    It took me a while to realize, the “vote of no confidence” style tactics are the reason that it’s so hard for Microsoft to release anything. Every tiny crappy little utility that would take you a week to crack out in your basement that Microsoft releases has to be available in 88 languages, completely accessible by anyone with any disability, bullet proof, hacker proof and walk on water or it’s going to leveraged as a way to say that Microsoft sucks. There is no other software in the world that is held to this standard.

    So what’s the solution? I’m definitely not saying to lower the bar. But I’m saying let’s look at some realities through the possible solutions.

    Don’t do Entity Framework because we haven’t gotten those 5 things right?
    If we don’t, Microsoft is not providing a full framework and will get dinged for that.

    Wait until we get those 5 things right?
    If we do, Microsoft is taking too long to get something out and we get dinged for that and 5 more things will pop up. This design by committee idea is a lose-lose because there are too many compromises. That’s how we ended up with XML Schemas, SOAP and WS-* (or WS-Death* as some call it) which are also things that the same people rail against.

    Adopt one of the other open source projects as official?
    Even if we could by legal means, we’d pick the wrong one according to someone regardless of which one we chose. And we would be cast as not being innovative and dinged twice.

    Release it as is?
    Well – we are obviously already under attack as it is so why not since no other solution is going to make everyone happy anyway?

    heaven under constructionMicrosoft will provide a robust and quality solution. It might or might not be close enough for you on your particular project to use. But it will satisfy a wide swath of the projects that are out there. It’s already something that other projects are starting to build on top of very successfully. It’s a huge step forward from ADO.NET Datasets which, while some don’t agree, better than the previous generations and so on and so forth.

    ALT.NET is about having alternatives in .NET – right? This is a choice. It’s a good one in most respects. The fact that it’s not perfect does not mean that it’s crap. It means that there’s room for improvement. Notice the difference in the vocabulary there? The fact that it’s not perfect means that you should point out what’s right and what’s not right about it and move on.

    < p>Just do so in a constructive manner.

    My Daily TED

    image A few weeks back John Hopkins forwarded me a video from TED. Specifically he sent me a talk by imageClifford Stoll called “18 minutes with an agile mind” that he thought reminded him of me. Not because of the brilliance that he showed but because of the ADD nature of the speaker. I was blown away. One of many great quotes from the session was “The first time that you do something, it’s science. The second time, it’s engineering. The third time, its just being a technician. I’m a scientist. Once I do something, I want to do something else…” Wow! I want to be a scientist! Or maybe an engineer helping others perfect it. Like a baby introduced to sugar, I was hooked.

    6 hours later, I was able to get up and away from my computer mostly because the forces of nature (battery died on my laptop) were forcing me to move. I sent John a reply questioning his lineage (something about you BAS****, you burnt my whole day) and thanking him at the same time. I decided that rather than spending 6 hours a day watching Ted videos, I needed to get a cadence and figure out a routine that would let me get my “fix” in every day.

    Every morning during the week I get up, I get the kids ready for school, ship them off to the bus and then it’s my own little 30 minutes where I cook breakfast and watch a couple of videos. Some of them are 5 minutes, some are 20. That usually affords me time to watch 2.

    This morning, for example, I watched a short interview with William Kamkwamba called “How I built my family a windmill” and Stefan Sagmeister talking about “Yes, design can make you happy“. Indulge me for a few moments as I walk you through these sessions.

    Building a Windmill
    image image William is a young man (19 in the interview) who at the age of 14, living in rural Africa in a small agricultural town, designed and built a 2 volt windmill for his family. It powers 4 lights and two radios. He built it out of bicycles, plastic piping and pulleys. He found and read a book called “Using Energy” (which I would love to get my hands on but can’t find) at the library. In some immortal words “I get information about building windmill and I try and I make”. Not only that, but he modified the design in the book to include 4 blades instead of 3.

    He had come to the conference in hope to get some help building out a 20 volt windmill to supply irrigation for his entire village. He’s hoping to spend his life in the pursuit of green energy.

    I’m truly humbled by that ingenuity and ambition.

    Design and Happiness

    Stefan is a designer from Austria with a passion for making people happy.

    Early in the talk, Stefan made a list of the moments in his life that he could think back on as really happy moments. I wonder if I could make that comprehensive of a list. I need to do that at some point. Or at least make a list of things that do make me happy.

    image He said “the visualization (of happiness), that’s a really easy thing to do …. much more difficult is where designs evoke happiness”. At that point, I almost burnt my eggs as I listened enrapt for the rest of the talk. The point was made in reference to the Mori Museum in Tokyo. It has an exhibit called “Happiness” broken out into 4 sections called Arcadia, Nirvana, Desire and Harmony. It was a very nice exhibit but Stefan realized that it was all about the visualization of happiness, not about happiness itself. That’s easy. The hard part is creating the happiness in the first place.

    image There are three projects that he pointed out. The first one was the project where an artist named “True” redesigned all of the subway safety posters in NY. One of these posters is pictured to the left. No, he wasn’t hired by the city to do it. He just did it. He organized 20 of his friends and, without a lot of fanfare and definitely no announcements, placed these on all the subways in NY. They fit into the surroundings and people don’t really notice them until they start staring off into space and all of the sudden it hits them what these are. That’s fun and I’m thinking about what that would look like on planes. There’s also the amazing point here that he knows that he’s making people happy but he doesn’t have to be there to watch them. He doesn’t have to take credit. What a wonderful sense of humor. Personally, I’d have to ride the subway all day everyday and subtly (or as subtly as I can muster which, as you know, is not all that subtle) point it out to everyone.

    Sky PesherThe second project that he talked about is a room called Sky Pecher by James Turrell. It has benches around the sides and a retractable roof. That’s it. But when you’re sitting it in, you don’t see the horizon or anything else around, just the sky. The clouds rolling by, the blues of the sky, birds flying over… It alters the way that you look at the sky and all of your surroundings. Also, very importantly, it’s not visualizing happiness, it’s just letting people focus on the sky without all of the other things that go into life that clutter and overshadow much of our happiness.

    I was reminded of when I was a kid and would take the center of 2 paper
    towel roles and use them as binoculars. It wasn’t that it actually zoomed in that mattered. It was the tunneling of my vision to that which I was looking at.

    Try it. Spend an hour looking through paper towel roles at an object. The grass in your front yard, an ant hill, a soccer field or follow in James Turrell’s footsteps and stare at the sky (not the sun, the sky). It will change the way that you look at life around you. It’s such a simple project but an important one to think about.

    image The third project is the Bubble Project. An artist named Ji Lee printed up 30,000 speech bubbles and placed them on ads and signs all over NY. He didn’t write in them. He just posted them. Other people came along and filled them in. There’s some amazingly good writing in some of them. Very witty thoughts. There’s also the normal bashing or ranting of this that or the other, but some are outstanding. Look at the one on the left here. “Yo”. It’s very simple but really captures that person’s view of what’s happening in the painting.

    You can actually print your own if you want – he’s got the bubble template here.

    It’s an interesting thing though – just by adding the caption bubble, Ji Lee has opened up the door for others to express their thoughts and mentality, sharing that with the world. This is a fun project because it changed the way that I’m looking at a lot of the art and ads around me. Rather than just looking at the ad and figuring out what they are trying to convey, I’m starting to look at ads and projecting my own thoughts on it. It’s the “Saturday TV Fun House” idea where I can take something completely out of its intended context and have fun with it.

    Back to TED

    I’m really impressed with TED partly because it’s so different from any of the conferences that I go to. I always end up at technology conferences where the the majority of the talks are tips and tricks versus visionary talks. What do I mean by visionary? These talks are designed to change the way that you think. It has for me. Every video that I’ve watched has altered the way that I think about something. Life, technology, work and so on. I have only shared the two that I watched today and I’ve been watching at least 2 a day for close to a month now.

    3 Calls to Action

    1. Watch a TED video every day. It will change your life.

    2. Let’s put together a TED style conference. Aimed at technologists but aimed at visionary talks. Let’s change the way that we think about life, technology, work… Anybody interested?

    3. Tell me what you’re favorite TED video is.

    Software Development Meme

    Jeff Blankenburg called me out with his Software Development Meme. It’s actually a funny thing that he did because I have a much different background than much of the industry. My undergrad is actually English with a minor in Drama and a minor in Communications. When others are talking about programming outside of the box, I ask the really simple question of “What box? – nobody told me about a box…”

    How old were you when you started programming?

    21. Yeah – you read that right – 21. Honestly, I couldn’t type until my junior year in college. Somehow I made it through high school without the “required” typing class.

    How did you get started in programming?

    There are two stories there. The first is my first bit of play/consulting and the second is my first job out of college.

    In ’96 – when I was in my senior year of college, JavaScript was new and starting to be the hotness. Live everyone else, I got started creating a web sites. I tell you I wouldn’t have made it through without Stefan Koch. I’ve never met the guy but his Voodoo’s Introduction to JavaScript (which I can’t believe is still up), I wouldn’t have made it through. I actually did a few small consulting gigs with JavaScript including a web shopping cart. Lots of fun.

    When I was approaching graduation, I was trying to figure out how I would support a family on an English degree so I got a job doing COBOL. It was while the banking industry was staring down the barrel or Y2K and they couldn’t hire enough people and non of the CS majors would dirty themselves with COBOL. They were looking for liberal arts majors that they could train in COBOL. I fit the bill and got the job. After about 6 months of that, I realized that I really enjoyed telling computers how to do what they do but I couldn’t put into words the loathing that I felt toward the main frame. When it would take me up to 6-8 hours to get an application change compiled and tested only to have to read a hexadecimal dump to debug the app – I about went nuts. It’s inhuman to subject people to that type of torture. Story continued below…

    What was your first language?

    As per above – HTML/JavaScript and COBOL.

    What was the first real program you wrote?

    As above, personal web sites, shopping carts and a checking account system.

    What languages have you used since you started programming?

    As above, I started with HTML/JavaScript. Then I moved to COBOL. Here’s where the story picks back up. I hated working on the main frame so I picked up a copy of Borland’s Delphi 2. I started doing little side projects and wrote a multi-player tic-tac-toe game and some other fun utilities. There wasn’t a problem that I couldn’t (and wouldn’t) throw my new hammer at.

    After a year and a half in main frame hell and a year doing a Delphi on the side (Delphi 3 at this point), I heard that the Client/Server division was hiring. Not only were they hiring, they were putting the new college grads that they were hiring through a 6 month training course where they taught them VB, C++, NT, Unix, relational database design, Oracle, Tuxedo and all of the other tools/process/language/platforms that they used. The thinking behind it was that new hires direct from campus are typically 12+ months on the job before they are productive and they need to unlearn much of their CS degree anyway.

    Desperately wanting out of the man frame division, I leveraged my English degree and picked up a book on C++ and read through it. I went over to my friend Tito Martinez (who I’ve since lost contact with and would really like to hear from hint hint) and he taught me what the critical things that I needed to know to get through an interview. I still wake up screaming in the middle of the night with the nightmares from that interview thanks to Denny Williford who was really tough on everyone that he interview. Somehow I made it though and got into the class.

    In the CS University I learned Visual Basic 5, C++, relational database, Oracle, SQL, system design, UML, COM, UI design, NT, Unix and much more. It was a great class. It was during this class that I met Richard Hale Shaw – more on this later.

    After class, I worked in the production environment building a teller system. The client was VB (VB6 by now) running on NT talking to C++/COM components talking via Tuxedo to the Unix server running C++, our own flavor of COM and Oracle as well as interfacing with the CICS regions on the main frame. Honestly, I’m terrified at how typical that was as I’ve talked to more and more companies that had almost that exact setup. During this time, we developed a VB6 based client framework that, on login, dynamically loaded up the components that this particular user in their role were allowed to load up. Later in life – CAB made complete sense as that’s basically what we had done.

    While I was in the client/server division, I started speaking at conferences. At some point, I impressed someone well enough that they offered me a job doing Python dev, so I (in normal fashion for me) picked up a book and started playing around. It’s funny that I don’t remember that in normal conversations but I was playing with Python a little back in ’99/00 time frame.

    At some point, they decided to train more main frame guys on the client/server technologies. And who better than a former main frame guy to do teach the class? I had 10 students for 6 months. That was intense! And it was my first shot at teaching so it was extra fun. I can tell you that I learned at least as much as the students did during that class. After the class, I joined the training department for a short time and then went independent.  

    As an independent, I did a lot of training through the Richard Hale Shaw Group. I ended up writing all or part of and teaching the XML Bootcamp, C# Bootcamp (majority of this written by Richard or Martin Shoemaker), VB.NET Bootcamp, ASP.NET Bootcamp (C# most of which was written by Dominic Selly and VB.NET). I also did some side consulting. I could list XSLT, XML Schemas, VBScript and many other things that I used while teaching the classes but that’d be cheating as some people don’t consider them real languages.

    I did do a little bit (and I mean a little bit) of Java. But I never really considered myself an expert by any stretch of the imagination. I got paid for it though so I’m counting it… 🙂

    After that, I joined SRT Solutions for a year and a half or so. Then I joined Microsoft. While at Microsoft, I’ve played a little bit with Python again and fallen in love with Ruby.

    What’s that make it (other than the wordiest answer to this questions you’ll find?) – HTML, JavaScript, Cobol, Delphi 2 and 3, VB5 and VB6, C++, COM, UML, SQL, XML, C#, VB.NET, Java, XML, XSLT, VBScript, Python and Ruby. That’s quite a few there on a single line but it’s nothing compared to some people like Jay Wren.

    What was your first professional programming gig?

    Answered above.

    If you knew then what you know now, would you have started programming?

    I’ll answer in true form and say that it depends. It really depends on the day sometimes. I love technology, learning new things and all the things that go along with this industry. These are the days that I look around the industry and see great companies that are literally changing the world (not going to get into which ones because that is a political rathole that I’d like to avoid in this post) through software. The fact that I’m part of that is really exciting. I can look back on my career and the companies that I’ve consulted for or taught at and see the results of my work internationally. That’s a good day and I’m proud to be in tech on those days.

    However, there are the days when I get a call from some poor user/mother/company/* and hear about how technology has made their lives much more complicated and made things harder for everyone. That’s when I wish that I had started a motorcycle repair shop instead. I’m hoping that’s my retirement.

    If there is one thing you learned along the way that you would tell new developers, what would it be?

    It’s the non-technology skills that really separate the good from the great in this industry. I’ve known a lot of really smart programmers that could go 10x as deep as I can in a given technology. However, those skills have a half-life. The {} style languages reinvent themselves about every 10 years. The data access methodologies move at close to that speed. Networks have changed the way that we’ve thought about software and the internet stirred the pot that much more. I could go through and talk about all the ways that the industry has leapt forward in the short time that I’ve been in it but that would pale in comparison to the war stories that a Martin Fowler or Neal Ford could tell.

    What’s the most fun you’ve ever had … programming?

    I’ve had a lot of fun over the years but one that stands out recently is working with J Sawyer and Chris Koenig on the We Are Microsoft weekend on the St. Vincent DePaul Volunteer Portal. I heard that there via Twitter was a team that bailed and Chris was scrambling to find some help so I volunteered from Michigan. We spend the weekend working on the portal and it was a ton of fun.

    Who am I Calling Out?

    Jay Wren

    Joe O’Brien

    Dustin Campbell

    Rich Weston 

    Larry Clarkin

    Scott Hanselman

    Who’s next?

    Doing a Demo while Public Speaking

    Juggling at nightAs I’ve started writing about public speaking, I have started getting great questions that lead to more blog posts – keep those coming! I was talking to a fellow speaker (who can identify himself in the comments if he so chooses) and they brought up the fact that it’s hard for them to prepare a demo. I can tell you that this is an art form that I still struggle with after 9 years speaking at conferences, user groups and training. Demos are hard because you’ve got two, sometimes competing, motivations behind every demo. First, you have to show someone how to accomplish a given technique and second you have to be able to show someone why that technique applies to them in a given circumstance.

    There are two extremes that you can go to. You can either demo just a particular technique in isolation or you can demo a full application/solution.

    Demo a technique in isolation
    Sometimes this is the easiest thing to do. It requires a lot less code and it’s very easy to walk through. The issue here is that it’s like solving a numeric math problem on the chalkboard. It’s sometimes hard for the audience to connect the dots and place that technique in their own circumstances and leverage it to solve their own problems.

    Demo an Application
    This is tough. There are two major issues. First of all, you have to have a competed application to walk through. Secondly, and the bigger problem honestly, it’s very hard to walk through just the relevant parts of the application without getting bogged down in the full details of the application. The tendency is for people to spend a lot of time scrolling through code rather than focusing in on the code that’s relevant to the current discussion.

    The right answer
    The reality is that the answer is somewhere in between. It’s much better to have a well componentized application where people can see the technique in the context of a larger application but you can demo the technique without getting bogged down in the minutia of the application. I’ve not seen a lot of demos that actually do that, which is a shame because it works extraordinarily well when someone does do it.

    Building the perfect demo application
    At one point in time (many moons ago when I was doing a ton of ASP.NET talks at conferences), I had a built a relatively full featured ASP.NET 2.0 demo application that I used for all of my ASP.NET talks for about a year. It was based loosely on a portal application that I had built for a client. It used themes and skins, user profile information, a little AJAX, user controls, custom controls, login in controls, databinding and much more. But it was built in such as way that it could be demoed feature by feature.

    The secret sauce was that I had just enough examples of each technique and it was broken out into many small and manageable projects and files. I could show each of these small files and projects in relative isolation but then show it running in the overall context. My user control demo, for example, was a very simple “Hello World” style button and label but it showed how to build user controls. My personalization demo stored 3 fields and used them in two places. Why two places? Because we needed to see what refresh was like and so on. Why three fields? One was set in a custom step in the login control (because I needed to demo that). The second was to show a technique around defaulting values. The third was used to show how to move a value from an anonymous profile to a full fledged one when someone registered and/or signed in.

    This was not an easy demo application to build but it was a great one because it struck the right balance of isolation and in situ so it was easy to walk through and still showed the context of where and how to use it.

    This is even harder when trying to build for a technology that you’re not comfortable with. In a previous post, Prepare Yourself To Give a Great Talk, I mentioned that people can stretch themselves and give a talk on a topic that they don’t have completely mastered. This is always going to be the case with emerging technologies (Such as technologies that are in CTP or early Beta), but it can even be true with existing technologies if you haven’t spent a lot of time with them. Actually, I think this is a great way to force yourself to learn a new topic.

    Two examples of a stretch goal paying off
    Jeff Hunsaker recently did a talk on Entity Framework at Central Ohio Day of .NET. He learned a ton about the topic and gave a good talk. He’s been very critical of himself since then, but all reports I have heard was that he was fantastic. That’s a technology that’s in CTP and there are VERY few people well versed in it at this point. It’s hard to even get help. I didn’t see his demo, so I can’t really comment on it but he did tell me that this was a tough thing to pull together.
    When I got a speaking slot at eRubyCon, which I hope to see you all at this year, I was thrilled and panicked at the same time. I knew Silverlight, which is what my talk was going to be in, but I wanted do my talk with Silverlight running on Rails so I had to learn Ruby and Ruby on Rails and put together a talk. I set about writing a demo application to learn the technologies and that helped me write my talk. I wrote a simple motorcycle sales showroom application in Rails and front ended it with Silverlight. It was a fun demo to do and it showed just enough Rails and Silverlight integration that everyone knew that I hadn’t faked it. Little did they know that I had only been playing with Rails for about 2 weeks.

    I’m working on building that comprehensive of a demo for Silverlight 2, WPF, WCF, Entity Framework, ADO.NET Data Services, ASP.NET MVC Framework and more. Already you can see part of the issue. There’s too many technologies to demo so we end up trying to isolate each of the technologies in a small demo so that we can explain it easier. The issue there is that people lose sight of the integration and the workflow of the different technologies.

    I’m not going to lie and say that this is ever going to be cake, but I will say that it becomes easier as time goes on. Creating decks, demos, preparing, movement on stage, delivery and all the aspects of becoming a great speaker take work and practice. Like the guy juggling, the more you practice, the easier it becomes. However, this is juxtaposed with the desire to do harder hitting, meatier talks and demos.

    Technorati Tags:

    Riapalooza

    I love community! This weekend I have the pleasure to participate in a very unique event called RIAPalooza.

    From the web site:
    “Join your fellow RIA professionals for RIApalooza, a invaluable two day event aimed at exploring and promoting the development of Rich Internet Applications.

    RIApalooza promises a platform agnostic and “PowerPoint-Free” zone, which means we are going to forgo the boring marketing pitches in favor of talking technology. RIApalooza is about creating Rich Internet Applications; how to go about building them and what is being built.

    For more information, visit the event website.”

    I wanted to go to RubyConf but this was too good to pass up. This two day mini-conference is being organized jointly by community folk from both the Microsoft and the Adobe communities – in fact, if you check out the site you’ll see that both Microsoft and Adobe are sponsors. That’s almost unheard of for a community event as the communities have not historically collaborated on this type of event.

    Things kick off on Friday night with Dave Meeker, a user experience strategist, talking about the state of RIA. Saturday starts off with Tim Heuer and Corrina Barber, from Microsoft, talking about creating differentiated user experience and designer/developer collaboration. Then there’s a smattering of talks from a number of different community folk on Flex, Silverlight, RIA in general, design and more.

    At some point, I’m not sure when it’s scheduled for, Michael Labriola (who happens to be listed on the Adobe Experts site) and I will be giving a joint session on best practices in building a Rich Internet Application (RIA). I’ve not actually met Michael in person but we’ve talked on the phone and collaborated about the talk over email. Thanks to Larry Clarkin, Dave Bost and James Ward for hooking that up.

    Personally, I’m just looking forward to seeing what the community and the industry thinks of the state of RIA, especially as I’m betting my career here at Microsoft on it as the RIA Architect Evangelist for Central Region.

    So, if you can’t make it – I’ll be blogging as much of it as possible. You can also follow RIApalooza on Twitter for up-to-date information!

    Prepare Yourself To Give a Great Talk

    Curt, Greg, and the longest play I've ever seenPreparation is key in giving a great presentation. Apollo Ideas has a great blog post about the speech spectrum. There are basically 4 ways that you can give a talk.

    *Warning – gross generalizations ahead*

    1. Completely written out word for word and read of the script. For this, you can think about your basic graduation speech.
    2. Just outlined but not rehearsed. I see these too often. This is where someone has had an idea for a talk but is not able to prepare properly. Or someone got a deck from someone else and presents it cold without really making their own. In this category, there are a lot of sales decks and user group talks done. It’s a shame because they could be so much better.
    3. Outlined and well rehearsed. This is where the majority of the good conference talks lie.
    4. Completely written out and well rehearsed. In this category, you can put the better political speeches or talks from really high end conferences such as TED. Think JFK’s Inaugural Address, Reagan’s “Evil Empire” speech or any other political speech that motivated a nation.

    I’ve heard the argument that you don’t want to sound “too rehearsed”. However, the real danger is coming off as unprepared or reading from the script. Either of these are monumentally bad compared to over-preparing. Really the “too rehearsed” script is the one that you’re not willing to deviate from when there’s a good question or unexpected audience reaction. I’m striving for that right blend of well prepared and rehearsed contrasted with the ability and willingness to improvise.

    You can also equate these with musical performances. Singing in church, while often beautiful, is often far from a professional band. But if you look at Big Bad Voodoo Daddy, Great Big Sea, Harry Connick, Jr. or any number of other groups that put on an amazing show. That show is completely scripted and rehearsed until people are ready to drop to prepare for getting on stage. Yet, nobody complains that they are “too rehearsed”.

    I know that I’ve gotten lazy in the past and have neglected this preparation in the past.

    How to Prepare

    Know your subject. First and foremost, you have to know what you’re talking about. Or at least know what you don’t know. Honestly, one of my favorite talks was at the first Day of .NET. I was on a call with Jason Follas who was coordinating speakers and he asked me what I was talking on and I said “Something cool and ASP.NET”. So that became the talk. I had no slides, no code, no preparation. I just got on stage and asked the audience to ask me questions. I loosely organized that into an outline and started talking. It was great but I could only get away with it because I knew my topic, ASP.NET, as well as I did. I had been doing leading 5 day training sessions on ASP.NET for several years so I knew the ins and outs of the technology extraordinarily well.

    On the other hand, I’ve seen speakers get up and say that they are an enthusiast verses an expert (nod to Alan Stevens and Michael Eaton) and I think that’s awesome. They are stepping up and stretching themselves. But, they are not getting up blind and pretending to be an expert. They state very clearly what they know and don’t know. 

    Know your audience. I tell very different jokes and even use a different cadence depending on who is in my audience. If I’m talking to 100% technical people, I can tell jokes about management or process or self deprecating humor about geeks. If I’m talking to people in the south, I relate to the cooking, fishing, hunting and other cultural things that I grew up with in Arkansas. If I’m in Ohio, I don’t mention Michigan if I can help it and vice versa. 🙂 Know the team rivalries, local economy and other hot buttons. For example, in Michigan, I don’t mention unions. In Houston, I don’t even pretend to know anything about aeronautics or say anything about gas prices.

    How receptive will your audience be to your message?
    Are they “ready for action”? If so, they just need to be motivated into action. You can bring out the big brass marching band and getting everyone singing the fight song and stomping their feet. It’s a lot of fun to give these speeches.
    Are they supportive? If so, then you need to clearly lay out the arguments and call to action.
    Are they neutral? If so, then you need to persuade them to your side. This is accomplished through solid information and personalizing the message to the audience in front of you.
    Are they hostile? Here you need to understand the FUD (Fear, Uncertainty and Doubt). This is a tough thing to do because the balance of dispelling the FUD and not attacking is a fine line.

    As a Microsoft Evangelist, I’m VERY often in the situation where I’m speaking to a non-Microsoft friendly crowd. It’s not often overly hostile, just not friendly.

    Give your talk out loud. Two weeks ago, in preparation for the West Michigan Day of .NET, I was writing a new talk. I knew roughly what I was going to say. I had the deck pretty close to finished and was just polishing things up. But I had dinner with Dan Hibbits and decided on a lark to run through my deck once with him. He didn’t even have to say anything but as I went through my pitch I realized that major parts of the talk didn’t work. I immediately restructured the talk and gave a much better talk the next day. I would have realized that about 15 minutes into my talk if I had not practiced it out loud with Dan the night before. Practice in front of the mirror, or run through your talk in your head as you’re on the airplane or in the car on the way to the venue.

    The call to action here is simple. Set yourself up for success by preparing to give a great talk. The better prepared you are, the better the chances are that you’ll get your message across and really knock it out of the park.

    * Update – Thanks to Bill Wagner for pointing out a clerical error or two on my part… Fixed now *

    Technorati Tags:

    PDC2008 Professional Developers Conference October 27-30, 2008

    clip_image001This is a conference that I’m not going to miss this year. At MIX08, Ray Ozzie laid out early glimpses of what we’re going to see the rest of the year leading up to PDC. Not long after, the Live Mesh Community Technical Preview was released. It’s the beginnings of the realization of Ray’s S+S vision and the future direction of Microsoft.

    But that’s just the tip of the iceberg as far as what’s coming down the road. Far more of this roadmap will be revealed in October.

    Who Should Attend (or. The PDC is for YOU)

    The PDC is designed for leading-edge developers and software architects. If you’re interested in the future of the Microsoft platform, you’re responsible for the technical strategy in your organization, or you’re a highly skilled developer who likes to delve deep into the heart of the platform, then the PDC is for you!

    PDC2008 Professional Developers Conference October 27-30, 2008

    ALT.NET Geek Code Generator

    Get Microsoft Silverlight

     

    Last year (December, 2007) I had the honor and privilege of being invited to participate in the ALT.NET Leadership council in NY. I blogged about that here. This generated a large number of comments and a ton of conversations.

    I was unfortunately, due to health reasons, not able to attend last month’s ALT.NET conference in Seattle. Some of my friends in DPE, like Peter Laudauti from New York. He’s posted a picture of the session board at http://blogs.msdn.com/peterlau/archive/2008/04/19/alt-net-open-space-seattle-schedule-grid.aspx. There were talks on IronRuby, DSLs, Mocking, Scaling Agile Teams, Test Driving Silverlight, Diversity, Pairing, F#, Funding Open Source Projects and many more great topics. I really wish I could have been there.

    So, what is this ALT.NET thing. Really, it’s about about alternatives in .NET. It’s about listening to a multitude of sources of information and making an informed decision about the way that you’re going to do development. The guys that are at the ahead of this movement are heavy on Agile practices. Most of them are proponents of BDD (BDD for the TDD head), Refactoring, ORM (Object Relational Modelers) and so on. They lead with process and then find tools that help them get their jobs done. Sometimes that’s a different language, like Ruby, or a different IDE plugin, or a different source control system. But none of these tools, platforms, etc. should get in the way. They should lead to better process.

    Are we talking about throwing out the current spiritual leaders in the .NET world? No… Jeremy Miller wrote a great article on CodeBetter.com called “We need ALT.NET To supplement the traditional .Net Leadership” that addressed the reasons behind it all.

    Honestly, I don’t care what you call it. I agree with the fundamental principle that we should investigate many different ways of getting things done and make informed decisions. So, with that in mind, look for coming announcements about the Agile Summer Camp (hint, we’re actually going to go camping… 🙂 ).

    And if you like, check out Hanselman.com for his ALT.NET Geek Code Generator