Posts Tagged ‘evangelism’

Giving technology to the world – a talk about writing good code examples

Friday, February 5th, 2010

One of the things I love about my company is that you are perfectly allowed in Yahoo to give “Fire and Brimstone” talks to rally your colleagues. It is a very open company and if you can back up criticism with proof and offer solutions people are happy to listen to you.

Last Thursday I took the opportunity of being in the Silicon Valley to give a talk about giving technology to the world, pointing out mistakes we made in explaining our services and APIs, what works well and how some competitors do a great job at explaining complex technology in an easy to understand fashion.

It was a great opportunity to explain the concepts of developer evangelism to an internal audience who hadn’t yet read anything about the matter of seeing developers as an audience.

Check the slides on SlideShare and the audio on archive.org:

Listen to the Audio of the talk on archive.org:

Do you know any great API sandboxes and documentation? I’d be happy to have more positive examples!

How to write an article or tutorial the fast way

Saturday, January 2nd, 2010

As you know if you come here often, I am a very prolific writer and churn out blog posts and articles very quickly. Some people asked me how I do that – especially as they want to take part in Project 52.

Well, here is how I approach writing a new post/article:

Step 1: Find a problem to solve

Your article should solve an issue – either one you encountered yourself and always wanted to find a solution to on the web (this is how I started this blog) or something people ask on mailing lists, forums or Twitter.

Step 2: Research or code (or both)

The first step is the research of the topic you want to cover. When you write, you don’t want to get side-tracked by looking up web sites. Do your surfing, copy and paste the quotes and URLs, take the screenshots and all that jazz. Put them in a folder on your hard drive.

If your article is a code tutorial, code the whole thing and save it in different steps (plain_html.html, styled.html, script.html, final.html,final_with_docs.html). Do this step well – you will copy and paste part of the code into your article and when you find mistakes then you need to maintain it in two spots again. Make sure this code can be used by others and does not need anything only you can provide (for more tips check the write excellent code examples chapter of the developer evangelism handbook).

Step 3: Build the article outline

The next thing I do is write the outline of the article as weighted headlines (HTML, eh?). This has a few benefits.

  • You know what you will cover and it allows you to limit yourself to what is really needed.
  • You will know what follows what you are writing and already know what you don’t need to mention. I myself tend to get excited and want to say everything in the first few lines. This is bad as it doesn’t get the readers on a journey but overloads them instead.
  • You can estimate the size of the overall article
  • You can write the different parts independent of another. If you get stuck with one sub-topic, jump to one you know inside-out and get this out of the way.

It would look something like this:

<h1>Turning a nested list into a tree navigation</h1>

<h2>See the demo, download the code</h2>

<h2>Considering the audience</h2>

<h3>How do tree navigations work?</h3>

<h3>Allowing for styling</h3>

<h3>Accessibility concerns</h3>

<h2>Start with the minimal markup</h2>

<h2>Add styling</h2>

<h2>The dynamic CSS class switch</h2>

<h2>Add the script</h2>

<h3>Event delegation vs. Event handling</h3>

<h3>Adding a configuration file</h3>

<h2>Other options to consider</h2>

<h2>See it in action</h2>

<h2>Contact and comment options</h2>

Step 4: Fill in keywords for each section

For each of the sections just put in a list of keywords or topics you want to cover. This will help you to write the full text.

<h1>Turning a nested list into a tree navigation</h1>

<h2>See the demo, download the code</h2>

working demo, code on github

<h2>Considering the audience</h2>

who needs tree navigations? where are they used?

<h3>How do tree navigations work?</h3>

How does a tree navigation work? What features are common? How to allow expanding a sub-branch and keep a link to a landing page?

<h3>Allowing for styling</h3>

keep look and feel away from the script, write a clean css with background images.

<h3>Accessibility concerns</h3>

Consider keyboard access. cursor keys, tabbing not from link to link but section to section and enter to expand.

<h2>Start with the minimal markup</h2>

clean HTML, simple CSS handles, not a class per item

<h2>Add styling</h2>

show the style, explain how to alter it - show a few options

<h2>The dynamic CSS class switch</h2>

the trick to add a class to a parent element. allows for styles for the dynamic and non-dynamic version. Also prevents the need for looping

<h2>Add the script</h2>

Performance tricks, safe checking for elements, structure of the script

<h3>Event delegation vs. Event handling</h3>

One event is enough. Explain why - the menu will change as it will be maintained elsewhere.

<h3>Adding a configuration file</h3>

Take all the strings, colours and parameters and add it to a configuration file - stops people from messing with your code.

<h2>Other options to consider</h2>

Dynamic loading of child branches.

<h2>See it in action</h2>

Show again where it is and if it was used in live sites

<h2>Contact and comment options</h2>

Tell me where and how to fix things

Step 5: Write the full text for each section.

As said before you can do that in succession or part by part. I find myself filling in different sections at different times. Mostly I get out the laptop on the train and fill in a quick section I know very well on a short ride. That means it is out of my way.

Step 6: Add fillers from section to section

I then add a sentence after each section that sums up what we achieved and what we will do next. This is not really needed but great for reading flow.

Step 7: Read the lot and delete what can be deleted

The last step is to read the whole text (probably printed out as you find more mistakes that way) and see how it flows. Alter as needed and remove all the things that seemed a great idea at the first time of writing but seem superfluous now. People are busy.

Step 8: Put it live and wait for the chanting groupies

Find a place to put the article, convert it to the right format, check all the links and images and you are ready to go.

More, please, more!

More tips on the style of the article itself are also listed in the Write great posts and articles chapter of the developer evangelism handbook.

Developer Evangelism book update – new chapter on writing slides, new print version

Tuesday, December 15th, 2009

Yesterday I spent my evening updating the Developer Evangelism Handbook:

New cover. by  you.

The updates include:

The rest remains the same:

Developer Evangelism is a new kind of role in IT companies. This is the handbook how to be successful in it.

A developer evangelist is a spokesperson, mediator and translator between a company and both its technical staff and outside developers. If you think this would be a good role for you, here’s the developer evangelist handbook which gives you some great tips on how to do this job.

Using the handbook you’ll learn how to:

  • Find great web content and promote it.
  • Write for the web and create engaging code examples.
  • Use the web and the social web to your advantage to reach, research and promote.
  • Prepare and deliver great presentations

The Developer Evangelist handbook is out!

Tuesday, July 28th, 2009

Alright, after writing on it for four evenings and on one flight in between watching Watchmen and “The Boat that rocked” I am proud to present you:

The handbook explains several things:

  • What developer evangelism is
  • What makes a good developer evangelist
  • How to write for the web
  • How to use social media and the web to promote content
  • How to deliver great presentations
  • How to deal with criticism of your company and what to do with the competition
  • How to write easy to understand and useful code examples

The handbook is Creative Commons and free to use. I am working on getting a printed version out, too.

Here are shortcuts to the chapters:

You can also go to the full table of contents.

A few things the web development community can learn from The Green Movie

Thursday, March 12th, 2009

One of the, oh heck, the only really good thing about flying Delta was their Fly-in-Movie competition. This is a section of their entertainment program where they show short movies of budding movie makers who compete to be shown at the Tribeca Film Festival in New York this coming April.

The green film

One of the movies in there is The Green Film and I loved it (“Cold call” was also very good).

The Green Movie

In this 6 minute movie a self-righteous film director proclaims pompously and full of enthusiasm that they are producing the greenest movie ever. All the food is organic, everything gets recycled, all the make-up is free of animal testing and there is not a single thing that is not in the correct order and would cause a frown on the faces of the friends of the earth.

The wrong doers and how they should be lectured

When the main actress arrives she rolls up in a stretch limo and asks for her trailer. The director tells her off for not cycling or using a bus and shows her a deck chair and an umbrella which is to be her “trailer”. He goes on to explain all the bad things that do not happen on his set and especially goes into a detailed sermon over plywood used on other sets and that it actually is based on rainforest wood. He also is very insightful about using the right light bulbs on the whole set.

Getting caught out

The actress on the other hand starts wondering about the professionalism of the whole setup – which culminates in her wondering if the movie is shot on film rather than digital. The director then goes nuts on the mere idea of movies being shot in digital and that digital film is just “TV on big screens”. His rant goes so far as to proclaim that art could never be done with digital cameras. To the arguments of the actress about film processing involving toxic chemicals and shipment of reels all over the world the only thing the director comes up with is “but we recycle – a lot!”.

The movie ends with the actress filming herself in the woods using her mobile (cellphone for Americans).

How this applies to us

This is exactly how we get stuck when advocating best practices on the web. One interesting exchange that shows this is Chromatic Sites advocating for CSS vs. Table layouts and Mike Davies shining a massive big light of truth on the arguments provided.

Another interesting “oh not again” moment was Jeffrey Zeldman doing the inaugural testing of the top 100 sites in a validator causing an avalanche of comments.

You know what? We’re wasting time and energy in these discussions and we are so immersed in our own “doing the right thing” that we forgot to care about what we wanted to achieve in the first place. We get into meticulous details of explaining certain technologies and invent idea after idea based on the same technologies we tried to make people understand by force years and years ago and failed.

Standards and best practices are there for a single reason: make our work predictable and easy to work with other developers. This only works if everybody is on board and understands these best practices – in essence, following them needs to make their job easier. If following a “best practice” doesn’t make our lives easier but produces extra overhead it will not catch on.

Instead of concentrating on showing the benefits of working in a predictable manner we concentrate on ticking all the right boxes and telling everybody who is unfortunate enough to listen about all the details we had to think about to get where we are. We know all about the plywood and the right light bulbs but we forgot to talk in the language of the people we want to reach with our ideas. We are not concentrating on how we deliver the message and that there might be better techniques and technologies available nowadays than the great problem solvers of the past.

Web development is evolving and changing to new channels of distribution and re-use. Widget frameworks allow re-use of the same little application across the web, mobile devices and now even Television sets. These things is what we should have our sights on and not if a certain document passes a dumb validation test or not. Validation is the beginning of a quality control process, not the end of it. Semantic value cannot be validated by a dumb machine but needs a human to check. Zeldman did point this out in his introduction to the test, but this message always gets forgotten in the uproar of indignation over and unencoded ampersand.

Christian Heilmann's blog – Wait till I come! is the blog of Christian Heilmann , a developer evangelist living and working in London, England. Download vcard.

Feed me, Seymour: Entries (RSS) and Comments (RSS).