Johannes Thönes

Software-Developer, ThoughtWorker, Permanent Journeyman, Ruby Enthusiast, Java and Devils Advocate.

3 Things I Learned at ThoughtWorks I Did Not Expect to Learn

In May 2014 it will be two years since I joined ThoughtWorks Germany. The time here has been an amazing journey. I have learned many things.

article-image

I learned more about agile software development and I worked with interesting technologies. I am also dealing with clients and represent my company at a client site. I did learn of all that – and I don’t expect to stop learning anytime soon.

But there were a few things I learned, which I did not expect to learn at ThoughtWorks. I want to share three of them with you.

HTML5: Offline Upload of Images

I am currently working on an application which has needs to work offline. This has the beneficial side effect, we use the different HTML5 storage capabilities. One of the is the File API, which we are using to store images locally – before queuing them for upload to a backend server.

In this article, I will share some code how we did this. The example works in Google Chrome – for DOM manipulation I will use JQuery.

Retrospectives Without Action Items?

Have you ever had a retrospective where you didn’t define actions to be executed and checked up on in the next retrospective? I did. article-image

I facilitated a retrospective using the Lean Coffee exercise. This helped to generate some good discussion, but in the end there was no action item. Is that a bad thing?

Write a Letter to Yourself - Personal Retrospectives Exercises

The write a letter to yourself exercise is an exercise to create continuity between two personal retrospectives. You write a letter – addressed to yourself – where you summarise what you learned and decided in this personal retrospective.

article-image

Then you put the letter in an envelope and close it. At the beginning of the next retrospective you open the envelope and read the letter. Thereby you can bridge two personal retrospectives together.

Personal Retrospectives Exercises: Open Thoughts Paper

The ‘open thought paper’ is simple a place, where you can write down your thoughts during a personal retrospective.

article-image

I use it, to capture thoughts that otherwise are in danger to be forgotten. This is especially helpful during focused exercises like the timeline ([1] and [2]), where there will be thoughts coming up, you cannot process into the current context.

Personal Retrospectives Exercises: Colour the Timeline

Now I want to introduce the ‘colour the timeline’ exercise for you personal retrospective.

article-image

A timeline is a chronological overview over the period you are reflecting on. This has been filled with facts before. Now you analyse it deliberate by using colours to describe your feelings.

Purpose

When you have filled a timeline, now its time to analyse it. On way is to colour code the events, so you can see, when you had which kind of feelings over the timeframe. Use this in the generate insight phase, to get a clearer understanding of the connection of what happened and what you did.

Personal Retrospectives Execises: Fill a Timeline

I give a short introduction to the ‘fill the timeline’ personal retrospective exercise, which is the basis for further analysis of the timeline. A timeline is a hand-written, temporal overview of the events important to you in a defined timeframe.

article-image

I use timelines often – therefore it’s the first exercise I share with you. I’ll try to keep the structure of this post for the following posts as well: purpose, steps, remarks and alternatives.

Waiting for a JavaScript Event With Selenium/Capybara

I came a cross the question, how I could wait for a JavaScript Event in Capybara using the Selenium Webdriver.

This is what I came up with:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
protected
def wait_for_javascript_event event_name
  selenium_bridge.setScriptTimeout(Capybara.default_wait_time * 1000)

  selenium_driver.execute_async_script(
    "var callback = arguments[arguments.length - 1];
    $(window).one('#{event_name}', function() {setTimeout(callback, 1); return true;});"
    )
end

private
def selenium_driver
  page.driver.browser
end

def selenium_bridge
  selenium_driver.send(:bridge)
end

So, what is going on?

Crucial Conversations (Book Review)

I recently finished “Crucial Conversations. Tools for Talking When Stakes Are High” (Amazon) from Patterson et al, which describes how to productively hold emotionally challenging conversations. The book had been recommended to me by several colleagues.

What is the book about?

article-image

According to the book, crucial conversations are define as those conversations were:

  • there are high stakes

  • there are opposing opinions

  • there are strong emotions

The aim is, to hold these crucial conversations as a dialog.  A dialog is a conversation where everyone can freely contribute to a growing pool of opinion. In non-dialog conversations people tend to make accusations or don’t contribute their views. In other words: they get violent or silent.