I've mentioned on a few occasions that one of the things I do at my day job is present a series of "lunch-and-learn" presentations. I do the research for these sessions, write up a script, and finally conduct the actual demonstration itself, usually in a conference room with a projector and 10-20 people. These tend to be one or two-hour sessions that I give to my coworkers on topics ranging from "How to Build an MVC app from scratch" to "What are the SOLID Principles?" to "How to Design a Workflow Database".

As you can probably tell, most of my presentations end up becoming blog posts.

At any rate, I love doing these presentations and I haven't presented to an empty room yet, so my teammates seem to be getting something out of them. That, of course, is the major point of doing these kinds of talks: to help others learn.

However, there's also another point, one which has helped me immensely in my personal career: teaching others forces me to study the topic more thoroughly than I might have otherwise.

At the end of each talk I will always "open the floor" for questions about anything I showed in that session. The interesting part of these Q&As is that people often ask me difficult or specialized questions, questions that if I only had a superficial knowledge of the subject I would not be able to answer. Because I want to help them learn, I need to dive a bit deeper into each topic I present. I probably won't need to become a expert before giving the presentation but I will need to pull back the covers a little bit.

In short: giving presentations makes me a better developer. That's what I get out of them.

Have you ever thought about making a technical presentation? I'd be willing to bet that a large portion of you have wanted to, or at least wondered about it. Let me ask you this: what's stopping you? If you've wanted to do this, why haven't you? What excuses have you used?

But, you might say, but I hate standing up in front of people and talking. It's terrifying. You are correct. Especially for the first few times, standing up in front of people who expect you to be an expert on a given topic is one of the more terrifying experiences I've encountered. However, nothing worth doing is without fear (and yes, I know that sounds like a cat poster, but it's true). Plus, once you get over the initial fear (which IMO stems from a fear of being wrong more than a fear of other people) it becomes more exhilarating and less stressful. As with all other things, practice makes, if not perfect, then better.

But, you might say, but everything I want to present on has already been done. Possibly true, but irrelevant. Everything you know is something someone else doesn't know. If you can present any topic to a group of people, chances are many of them aren't going to know the things you know.

But, you might say, but my manager won't sign off on me spending time researching a presentation. We've got too much work to do! That might be true, but you can change their mind. Consider this: any time spent preparing this talk could save time spent by others, if they take your advice to heart. If you pick your topics right and make solid, convincing arguments why your tips should be taken seriously, you will ultimately save time by assisting others in enhancing their skills.

You should be giving technical presentations. They are an invaluable learning tool, both for you and your coworkers.

A woman giving a technical presentation, with the words "This should be you!" over her head.

Any more excuses? No? Good. So now that you are ready to start giving talks, how would you go about preparing your own? Glad you asked!

  1. Pick a topic that is interesting or useful to all or most of your potential audience. I cannot stress enough how much the choice of topic affects the value of your presentation. The topic needs to be specific enough to fit in a reasonable time frame (say an hour or less), and valuable enough to be interesting to most of the people you want to attend your session. You don't need to know anything about the topic at this point, but if you select one that you enjoy talking about and that others find compelling, the rest of these steps become much easier.
  2. Research that topic enough so that you would feel comfortable any questions an attendee would likely ask you. You don't have to know the topic inside and out to start with, but you should be able to get close before the day of the presentation. At the very least, you should be able to answer questions like "Where would I learn more about this?"
  3. Practice your talk every chance you get. Practice all the time. This could be just reciting your script or notes on the train ride home. Practice, recite, think, improve, repeat.
  4. Invite everybody you think would like to learn about this topic. This could be fellow programmers, testers, database admins, anybody that could possibly learn something (even a little thing) from this topic.
  5. When the day comes, present your talk to the best of your ability. Don't freak out, you'll be fine.
  6. Ask for and listen to constructive criticism from your peers so that you can improve your talk. You may even be able to get it to a point where you can start presenting the same talk multiple times, to different groups of people, if you listen and take to heart some of the pointers your coworkers can give you.

Presentations are hard, but they're worth it. You get to learn, you get to teach (and Lord knows we need more technical teachers), and you get to help others improve. In short, technical presentations make all the people involved in them better developers.

For more tips, see Scott Hanselman's blog or just Google around a bit; there are a ton of other helpful sites.

Have you been presenting to coworkers, friends, strangers? How did it go? Was it terrifying, was it awesome, was it both? Are you wanting to make a presentation but don't know how to get started? I'd love to hear about your experiences. Share in the comments!