menu

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.

Microservice Trade Offs

Many development teams have found the microservices architectural style to be a superior approach to a monolithic architecture. But other teams have found them to be a productivity-sapping burden. Like any architectural style, microservices bring costs and benefits. To make a sensible choice you have to understand these and apply them to your specific context.

Martin Fowler
1 July 2015

Original Link

Without the Right Capital Structure, There is no Software Company Within

Is every company destined to be a software company? From a production perspective, there's reason to believe so: relatively minor things that were once the domain of hardware (configuration set by switches on a circuit board), operations (merchandise re-ordering based on sales and quantities) or subscription (license fees paid for usage) have become things that are now the domain of software (configuration is set through a browser interacting with Java code running in a Linux variant deployed on a hardware device; algorithms that automatically re-order merchandise based on seasonal, demand & promotional variables; advertising-sponsored or use-metered interaction). Virtual data centers…

noreply@blogger.com (Ross Pettit)
30 June 2015

Original Link

Cumulative Flow Diagram

Cumulative Flow Diagram (CFD) is a valuable management tool for (1) tracking and forecasting the completion of work items, and (2) indicating the need to act upon flow and process improvement. The CFD provides a graphical representation of how the work is moving through the system, helping stabilize the system, act upon bottlenecks and control […]

Paulo Caroli
30 June 2015

Original Link

Third installment of Refactoring Loops to Collection Pipelines

In this third installment, I show an example of making sense of a loop that marks preferred offerings from a list.

Martin Fowler
30 June 2015

Original Link

Three mysterious hardware problems

PSULast month three completely unrelated, yet equally mysterious, hardware problems kept me entertained at home. Each did have an obvious explanation in the end. Getting from symptoms to diagnosis, though, required both, guesswork and luck. Sure, I'm more of a software guy but I thought that I had a decent understanding of “how stuff works”. Well, looks like things have gotten pretty complex now

Problem #1: our trusty PS3. Symptoms: We had just bought a new TV. Excited to see how games would look like on it, I powered up the PlayStation, and was greeting with a big blank screen…

erik doernenburg
28 June 2015

Original Link

"Agile Testing" workshop in July

As part of Unicom's World Conference Next Generation Testing, I am doing a 1-day workshop on "Agile Testing", on Friday, 24th July 2015 in Bangalore. You can register for the workshop from here, or contact me for more information.

Below are the details of the workshop. 

Agile Testing

Abstract

The Agile Manifesto was published in 2001. It took the software industry a good few years to truly understand what the manifesto means, and the principles behind it. However, choosing and implementing the right set of practices to get the true value from working the Agile way

noreply@blogger.com (Anand Bagmar)
29 June 2015

Original Link

Book Review: Managing Humans

I remember hearing about Managing Humans several years ago but I only got around to buying it and getting through reading it. It is written by the well-known Michael Lopp otherwise known as Rands, who blogs at Rands and Repose. The title is a clever take on working in software development and Rands shares his [...]

Patrick
29 June 2015

Original Link

Education: Not a Revolution, but a change that might just work

In the last six months I submerged myself deeply in the ups and downs of technology innovation and switched around education and learning and shifted my career to focus to just that. Yes ladies and gentlemen, no more hiring and I’m going to come right out and say it: few areas have been as hopeful […]

Maria Ocampo
29 June 2015

Original Link

Singapore Botanic Gardens

Singapore Botanic Gardens

adams.co.tt blog
28 June 2015

Original Link

Supertrees

Supertrees

adams.co.tt blog
28 June 2015

Original Link

Orchid

Orchid

adams.co.tt blog
28 June 2015

Original Link

Singapore Airlines

Singapore Airlines

adams.co.tt blog
28 June 2015

Original Link

Agile Organization Structure

Some people misinterpret my book to be only about org structure. A couple of them even wondered if the book was a 250 page elaboration of Conway’s law. As if Conway’s law sums up everything there is to IT org structure.

Structure is but one aspect of organization design. Eight out of sixteen chapters in the book have almost nothing to do with structure. Only two (Ch 4. Superstructure and Ch 5. Team Design) are 100% about structure. The other chapters cover operational, cultural and political aspects of IT organization design. A re-org that only pays attention to structure is

Sriram Narayan
27 June 2015

Original Link

REST API best practices

Vinay Sahni of Enchant writes Best Practices for Designing a Pragmatic RESTful API, a complete, current best practices article on REST APIs, chock full of explanation, examples and real APIs from top web sites. Enchant itself is a good example how to document a REST API. Vinay has been writing a long series of articles on REST APIs, plenty of chewy links for further reading. Main points:

  • Key requirements for the API
  • Use RESTful URLs and actions
  • SSL everywhere - all the time
  • Documentation
  • Versioning
  • Result filtering, sorting & searching
  • Limiting which fields are returned by the API

Brian Oxley
27 June 2015

Original Link

Pattern matching for Java

Java does not (yet) have pattern matching although writing a legible DSL for it is not too hard. I'm certainly not the first to take a hand at it.

An example DLS in action. Lambdas and method references sure help a lot:

public static void main(final String... args) {
    asList(0, 1, 2, 3, 13, 14, null, -1).stream()
            peek(n -> out.print(format("%d -> ", n))).
            map(matching(Integer.class, Object.class).
                    when(Objects::isNull).then(n -> "!").
                    when(is(0)).then(nil()).
                    when(is(1)).then("one").
                    when(is(13)).then(() -> "unlucky").
                    when(is(14)).then(printIt()).
                    when(even()).then(scaleBy(3)).
                    when(gt(2)).then(dec()).
                    none().then("no match")).
            map(MatchingTest::toString).
            forEach(out::println);
    out.flush(); // Avoid mixing sout and serr

    matching(Integer.class, Void.class).
            none().thenThrow(RuntimeException::new).
            apply(0);
}

Implementation:

/**
 * {@code Matching} represents Pattern

Brian Oxley
26 June 2015

Original Link

Anne’s Top Tips for Enablement – Lessons from being an Agile Coach

Often at ThoughtWorks we will be asked to help train and up-skill the client’s team members whilst we co-deliver projects. We call this enablement.  These are some lessons that I learnt whilst being an agile coach and from having 1:1 coaching sessions with clients, that are worth thinking about if find yourself on the “consulting” […]

Anne J Simmons
26 June 2015

Original Link

Second installment of Refactoring Loops to Collection Pipelines

In this second installment, I show an example of refactoring a simple nested loop.

Martin Fowler
25 June 2015

Original Link

Refactoring Loops to Collection Pipelines

I've long been a fan of the programming pattern that I call the collection pipeline. This allows me to write computation on collections in the form of a pipeline of familiar operations (eg filter, map, reduce). More and more language environments now have the language features and collection APIs to support pipelines, but since they have been limited in use for so long, more people are familiar with loops. In this article (which I'm releasing in installments) I'll take some loops and show how I'd refactor them into collection pipelines.

Martin Fowler
23 June 2015

Original Link

photostream 86

Le Puch, Languedoc, France

Martin Fowler
21 June 2015

Original Link

The Experiment Loop

Not all technology projects fit neatly into the standard “Lean, Agile, Scrum” way of iterating through work. The assumption made in all three is that you have an end user and that person will interact with the software once development is done. So, in order to flush out details of a user interface, product and…

sharbean
21 June 2015

Original Link