Archive for September, 2007

The thorny road to Working Software

September 29, 2007, No Comments

What do you have to do to be sure your code works?

Write Code - Test Code (simple)

That’s the best case. Write Code. Test Code. The less time it takes to test the code, the more often I actually test the code. If I could test all my code in one second, I’d test after every line of code I write. Or even better: the IDE would run the tests after every line of code and inform me if something unexpected happens.

That was the ideal case. Sometimes that cycle looks more like this:

Write Code - Test Code (no automatic tests)

It takes more time to test the code. Therefore I write more code before I test it - increasing the likelyhood of doing something wrong and having to repeat the cycle. Using a good debugger may help shorten that cycle.

Interestingly the debugger isn’t needed in the ideal scenario, because it doesn’t shorten the cycle there. In some environments it’s almost impossible to live without a debugger - but you should always question the use of it. Using the debugger is always a sign that I’m not working in the ideal cycle. And instead of keep on working, thoughts about how I develop software are necessary. Dependence on the debugger may be the reason why it’s hard to create working software - even if it seems to make it easier at first glance.
Bigger projects usually add more complexity. So the cycle looks more like that:

Write Code - Test Code (Enterprise cycle)

Depending on your application and environment, Hot Code Replacement can take you to one of many places. Ideally the code is replaced and is called the next time you use your application. Sometimes you have to restart your application, because the code you changed only gets called on startup, or it needs a clean state. Other times you need to restart the server, because your changes only get executed at server startup.

Of course, sometimes Hot Code Replacement fails. If you’re lucky, your IDE will tell you. Sometimes your IDE gets confused (seems to be the permanent state of RAD) and won’t replace your code without warning. That sucks because your code changes didn’t do anything. If it happens too often, you get annoyed and decide to always restart the server - just to be sure.

Here is an example from a project I worked on:

Write Code - Test Code (Real example)

If you have to do a full circle, it takes about 3 minutes. The best case is 20 seconds, which is hardly ever the case because of the GUI framework choice.

These long waits lead to something else

Write Code - Test Code (Multitasking)

Multitasking.

This is one reason why it takes so long to create enterprise applications. It’s also a reason why it’s hard to create working software in enterprises. Very often, enterprise applications just aren’t built to be tested.

It’s also interesting to note, that so far the complexity of the application to be developed hasn’t even been mentioned.

That’s why I don’t like Application Servers.

On a crusade against boring presentations

September 22, 2007, 4 Comments

On a crusade against boring presentations

Have you ever been to a presentation that was so boring, you could barely keep your eyes open? It seems like presentations are getting more and more common these days and too often they’re presentations you’re expected to attend. Too bad that more presentations also means more

Boring Presentations

Today I want to look at things that boring presentations have in common. And above all: how you can prevent giving a boring presentation yourself.

Change the world

Every presentation is a chance to change the world. Well maybe not the world, but the people in the audience. Choose a topic that you care about. If you don’t think the topic is important - why should the audience care? Sometimes you’ll be “forced” to present a topic you don’t care about. Remember that you are given an opportunity to change the world. Find something in that topic you care about - or be doomed to hold a boring presentation.Your enthusiasm for the topic is most important. Of course you need to research the topic well and yes, sexy slides can help make the message stick. But nothing beats enthusiasm.

Avoid Bulletpoints

If you look at the slides of boring presentations, you often find massive amounts of bullet points. Look at Aaron Swartz’s PowerPoint Remix for reasons why bullet points aren’t good (written as bullet points no less).

bullet points are no good

I don’t like them because most people in the audience can read faster than the speaker can talk. The time the speaker spends to catch up to where the reader is, is - well - boring. I also think they are totally uncreative.

Slides <> Script

Sometimes I get the feeling that the speaker needs the slides more then the audience. Who’d miss them more if you took them away? For some speakers the slides are the script - the tool to make sure they don’t forget to tell something. Everybody knows that you shouldn’t read from a paper. Why is reading from a screen different?

Slides - not a script

The slide show is not the script. Write a real script. Then practice. Until you know what you want to say - and when.

Slides <> Handout

Slides - not a handout

The slide show is not a hand out. The slide show is for the people that are sitting in the audience. If you plan to use it as both: the handout and the medium to support your words, it’ll end up doing neither. As a handout it won’t have enough information and as a slide show it will be boring.

So, what is the slide show if it isn’t the script and the handout? It’s a tool to help make a message stick. Your job as a speaker is to figure out how they may achieve that. Pictures are a good starting point.

Use Corporate Design Template to stifle creativity

Corporate Design and templates = boring. They force you to use certain colors, certain fonts and sizes. Logos and pictures reduce available space. I’m totally OK that the company paying for the presentation gets its share of publicity - but templates just aren’t a good way.

branded for life

Templates (the branded versions in particular) add too much visual clutter. How many times does the name of the company have to be on one slide? The creation time is only interesting if it shows that the speaker probably didn’t spend a lot of time preparing. And the only thing that “page 10 of 93″ indicates is how much longer the audience has to suffer.

Ask yourself: What does this slide have to communicate. Remove every element that doesn’t support that.

Corporate Designed Templates exist to restrict creativity and to save time (and to save the world from the occassional speaker with bad color taste).

The message a template sends to the speaker is: “You don’t need to worry about the slide show. Concentrate on the content.” Sure the content is very important. But if the content doesn’t make it into the audiences head because the presentation was boring then that’s sad. And a waste.

No Complex Diagrams on Slides

Complex architectures don’t belong on a slide. Neither do class diagrams. Or anything else with a lot of rectangles, lines and small text. Most of the time some people won’t be able to read the words, because they are too small. And it doesn’t help, if you read all words out loud, because keeping it all in the head is just too much to ask, some won’t even try. Very often those diagrams are too exhaustive. Above all, don’t use symbols that aren’t clear to everybody. Explaining symbols (that might not even be important for the point you’re trying to make) is boring for everyone who already knows the symbol.

Dangerous: Diagrams on slide

If you need a diagram anyway, it might be a good idea to draw it live, for example on a flip chart. For a lot of diagrams there is meaning in the sequence the symbols are drawn. In a class diagram, you don’t start with the least important class in the system. If you explain the meaning of a symbol while drawing, that’s less boring because it doesn’t slow the presentation down (talking is faster than drawing). You also will not run into the problem of being too exhaustive.

The Speaker - not the slides - is the most important part of the show

Let’s say the slide show is perfect - exciting and visually pleasing. Not flashy, but fitting the words of the speaker nicely.

The presentation can still be boring - because the speaker is the most important part of the presentation. He may talk monotonously, or too quietly, sentences that are too long etc. However, presentation technique is usually not a problem, if he’s talking about a topic he cares about. Enthusiasm just doesn’t go with talking monotonously.

Long sentences are a problem: people in the audiance can’t go back and hear the beginning of the sentence again. In other words: long sentences need a lot of concentration from your audience. Not everybody is willing (or able) to concentrate over a long period of time (like say 30 min). Some will loose their concentration and inevitably get bored.

Explain Technical Terms - Maybe even twice

If you’re holding a technical talk, make sure you cut down on your use of technical terms. If you can’t avoid them make sure to explain them if necessary (you don’t need to explain what HTML is to a web developer, but you have to explain it when you talk to a group carpenters). If you use the same term again later (after not using it for a few minutes) - you might have to remind the audience of what that meant.

Mask of Complexity - to hide absence of ideas

Mask of complexity - to hide absence of ideas

Technical terms are often used as a mask. As a mask to hide the absence of ideas. If you fear that somebody finds out that your presentation has little content, you can always hide that fact behind the “mask of complexity”. Make everything appear complicated, use a lot of technical terms. If somebody dares to ask a question, throw more complexity and other terms at them. People will be in awe of your intelligence. And bored.

If you really understand what you’re talking about, you will be able to make things simple enough for everybody to understand.

It’s about the audience

One last point: If you give a presentation, it isn’t about you. It’s about the audience. It isn’t about making yourself look good. It isn’t to prove you’re the guru and the others are not. Think about what the audience is interested in. How you can help them solve a problem they have. Make it be valuable for them.

about the audience - not the speaker

And one more thing: if you don’t have anything more to say - stop your presentation even if you have time left.

Do you know any other things that boring presentations have in common? And what techniques do you use to spice up your presentations?


Auf Deutsch: Auf dem Kreuzzug gegen langweilige Präsentationen