Alumni blogs

Lots of our people have lots of opinions. Here are just a few of them

ThoughtWorks embraces the individuality of the people in the organization and hence the opinions expressed in the blogs may contradict each other and also may not represent the opinions of ThoughtWorks.

A Liberdade tem número em Porto Alegre. É 553 :) #CasaLiberdade

Era uma vez uma empresa que se juntou com outra empresa em uma casa, em Porto Alegre. E dentro dessa casa, se criou uma rede. A rede virou um movimento e todo mês essa rede tem um desafio presente: manter o espaço e o que se faz em volta dele, para que tudo mais possa seguir existindo e reverberando por aí.  A tal casa fica na Rua Liberdade, 553, em Porto Alegre.

A Liberdade553:

  • é uma casa, mas não mora ninguém lá. :)
  • é uma casa, e muitas pessoas passam por lá.
  • é um local de encontro, mas muita coisa que…

Blog post by Daniel Wildt
30 October 2014

Original Link

Self-Organised vs. Self-Managed vs. Self-Directed…What’s the Difference?

Self-organised, self-managed and self-directed…do they mean the same thing or are they actually different concepts, where one might be more desirable over the other?

In the context of an “agile” team, people seemed to use these terms interchangeably. However, it’s important to note that there are subtle, yet worthwhile distinction between each.

Self-Managed Team

A group of people working together in their own ways, toward a common goal, which is defined outside the team.

For example – the CEO of a company decides to launch a new product to address the needs of a specific target market. An initial team…

Blog post by Naresh Jain
29 October 2014

Original Link

Data Modelling: The Thin Model

About a third of the way through Mastering Data Modeling the authors describe common data modelling mistakes and one in particular resonated with me – ‘Thin LDS, Lost Users‘.

LDS stands for ‘Logical Data Structure’ which is a diagram depicting what kinds of data some person or group wants to remember. In other words, a tool to help derive the conceptual model for our domain.

They describe the problem that a thin model can cause as follows

[...] within 30 minutes [of the modelling session] the users were lost…we determined that the model was too thin. That is…

Blog post by Mark Needham
27 October 2014

Original Link

racing snake

racing snake
ˈreɪsɪŋ/ /sneɪk/
  1. 1.
    an adjective to define the speed of an application that is running or capable of running at an unbelievably high speed.
    "this app is as rapid as a racing snake yo"

Laticauda colubrina (Wakatobi).jpg
"Laticauda colubrina (Wakatobi)" by Craig D - Licensed under CC BY-SA 2.0 via Wikimedia Commons.

Blog post by Ozgur Tumer
25 October 2014

Original Link

Sorry to any real readers…

A few weeks ago I switched on the feature in WordPress that allows users to sign-up for notifications when I write a new post.

If you are a real person who signed up, I am very sorry but I am going to turn that feature off again.

Since turning it on I get constantly spammed with bogus sign-ups by clearly made up email accounts. I am not sure what the attack intended is, or what these people hope to gain from this, but it is chewing up storage and cycles to no advantage.

If you want notifications you can follow me on…

Blog post by Dave Farley
24 October 2014

Original Link

Strategies for Effective Acceptance Testing

My second guest blog post for XebiaLabs is the first of two parts. It is on the topic of “Strategies for Effective Acceptance Testing”

“Automated testing is at the heart of any good Continuous Delivery process and I see automated Acceptance Testing as being one of the foundations of any effective testing strategy.

In my book ‘Continuous Delivery’ we defined Acceptance Testing as asserting that the code ‘did what the business wanted it to do’. The distinction that we made is between that and unit-test-based TDD, which is really focused on asserting that the code does what the developer thinks

Blog post by Dave Farley
24 October 2014

Original Link

Introducing Blueshift: Automated Amazon Redshift ingestion from Amazon S3

I’m very pleased to say I’ve just made public a repository for a tool we’ve built to make it easier to ingest data automatically into Amazon Redshift from Amazon S3:

Amazon Redshift is a wonderfully powerful product, if you’ve not tried it yet you should definitely take a look; I’ve written before about the value of the analytical flow it enables.

However, as nice as it is to consume data from, ingesting data is a little less fun:

  1. Forget about writing raw INSERT statements: we saw individual inserts take on the order of 5 or 6 seconds…

Blog post by Paul Ingles
23 October 2014

Original Link

Neo4j: Cypher – Avoiding the Eager

Although I love how easy Cypher’s LOAD CSV command makes it to get data into Neo4j, it currently breaks the rule of least surprise in the way it eagerly loads in all rows for some queries even those using periodic commit.


Beware of the eager pipe

This is something that my colleague Michael noted in the second of his blog posts explaining how to use LOAD CSV successfully:

The biggest issue that people ran into, even when following the advice I gave earlier, was that for large imports of more than one million rows, Cypher ran into an…

Blog post by Mark Needham
23 October 2014

Original Link

Is good design to be equated with functional?

Musings on my past, good design, functionality, ergonomics, customer experience, taps, light switches and a juicer.

Is good design to be equated with functional?

That was the question. For the next 40 minutes I scribbled the answer to the ‘A’ Level History of Art question.  Twenty five years later two things strike me. Firstly, that my answer must have satisfied the examiner because I got a good grade.  And that after all these years, that question still sticks in my mind.  (My answer, not so much).  It sticks in my mind because I’ve spent most of my working life addressing…

Blog post by Marc McNeill
21 October 2014

Original Link

Neo4j: Modelling sub types

A question which sometimes comes up when discussing graph data modelling is how you go about modelling sub/super types.

In my experience there are two reasons why we might want to do this:

  • To ensure that certain properties exist on bits of data
  • To write drill down queries based on those types

At the moment the former isn’t built into Neo4j and you’d only be able to achieve it by wiring up some code in a pre commit hook of a transaction event handler so we’ll focus on the latter.

The typical example used for showing how to design…

Blog post by Mark Needham
20 October 2014

Original Link