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.

Quicker Local Maven Builds

Maven is a depth-first recursive build technology. Projects can be multiple modules in one repo, and if ‘mvn install’ is launched from the root of that repo it will recurse through all the modules depth-first. It’ll do so regardless of what’s changed. There’s the rub: you may have only changed one source file in one module, and that may have been test logic, not ‘prod’ source. Meaning there’s a bunch of needless recursing to get to a “BUILD PASSED” conclusion. As we do this before we commit/push because we’re thorough, not lazy developers.

What’s needed is a faster Maven build…

Paul Hammant's blog
20 October 2019

Original Link

Overtesting Endpoints

I use Jooby for Java backends when I’m choosing Java for the backend(s). It is well-engineered, the lead (Edgar Espinar) is a force for completion, and most important of all I can deploy many services in one deployment (cookie-cutter scaling style), or split into separately scalable services (micro if you like). I engineer automatic tests into two steps following compilation - pure JUnit tests (no threads, no sockets, no file IO), then service tests via RestAssured (one of many types of integration tests). The former are ~3ms, and the later 150ms - 350ms on my older MacBookAir. Each test that…

Paul Hammant's blog
15 October 2019

Original Link

Diagrams to help or hinder understanding

I always need a diagram to understand something. Sometimes I make the diagrams. For those, sometimes I’m the leader in the field, but more often I’m trying to make them for myself to understand something that pre-existed.

Food Pyramid

US Dept of Agriculture’s Food Pyramid (1992 to 2005):

USDA “My Pyramid” (2011)

So the newer one is garbage, as it conveys no simple idea. As it happens the old one was simple but not the best nutritional advice, so an upgrade was needed according to the USDA. The pyramid metaphor was powerful, so the new one had to fit that…

Paul Hammant's blog
12 October 2019

Original Link

New Course – Levelling Up in Auto Layout

Hi everyone, I am very excited to announce a new course on Udemy called Levelling Up In Auto Layout. This course is designed to help iOS developers learn the fundamentals of Auto Layout and help them build and design great layouts. You can check out the course here. First x50 signups are free using this […]

6 September 2019

Original Link

Continuous Compliance

I work as an independent consultant advising organizations on how to improve their software development practice. This is a very broad theme. It touches on every aspect of software development from design, coding and testing, to organizational structure, leadership and … Continue reading

3 September 2019

Original Link

Autonomy != Anarchy

I am a long-standing believer in the principles of Agile development. I have been working this way for several decades, before it was referred to as “Agile”. I am friends with several signatories to the original “Agile Manifesto” and with … Continue reading

30 August 2019

Original Link

You are in a cold conference room, Do you want to use your mac as a heater?

Imagine that you are in cold conference room and you kind of feeling the cold on your head. What do you do when you are in a serious meeting and just can't get out?

If you have a MacBook, you might have a solution.

Use your terminal to run either of these commands to keep your CPU at above 80% or if you want you can run them both.

$ openssl speed


$ yes > /dev/null

The first command just outputs the ssl cryptography stats and it keeps your cpu busy. The second command just prints the character "y" into IO…

Jey Geethan
28 August 2019

Original Link

Scenarios using custom DSLs

One of my clients recently asked me how often I use Cucumber or JBehave in my own projects. Hardly ever, is the answer, so I want to show you what I do instead. The English-language Gherkin syntax is hard to … Continue reading

27 August 2019

Original Link

Recipe for a healthy QA/test relationship with the rest of the org (TOAD!)

Like any recipe, you can tweak this for your own situation.

First, you need a shared test environment to work in. I recommend beginning with a persistent test environment intended to model your production environment as closely as possible. While you may eventually evolve the ability to share a test environment with commonly-configured VMs or containers, having a persistent shared test environment at the beginning gives everyone the experience of keeping something running that looks a lot like the production system. (TOAD! DevOps!) For that matter, proper use of feature flags and such could make production itself a perfectly fine…

Chris McMahon
15 August 2019

Original Link

How to Get Color Prompts on your MacOS Terminal

Have you ever wondered that you would want colors to pop up on your terminal? I did and it made my life easier. It helped me to understand very quickly about the following:
  • Which folder im currently in
  • Which git branch my local workspace is in
  • What terminal commands I have issued
All you have to do is to use the following script in your ~/.bash_profile

Gist link:

Jey Geethan
14 August 2019

Original Link

Pull-Request dissatisfaction

A high-throughput team in Git is going to commit & push often, and teammates are going to need to code review as changes come in. Well, they do if they want to prevent the accumulation of tech debt, latent defects, standards avoidance, etc. When at ThoughtWorks I was placed at Google in the Test Mercenaries team up to the start of 2009, so I’ve some perspectives that are ten years out of date now, but I’ll give it a go of trying to detail the experience differences. Google’s setup was a couple of years established internally before GitHub launched with…

Paul Hammant's blog
2 August 2019

Original Link

Some Thoughts On Toggles

Kent Beck was asking about “Feature Flags” on Twitter recently and their life cycle. Former colleague, Pete Hodgson linked back to an article he’d written to for Martin Fowler a couple of years ago, and added context.

I don’t think this article fits in that Tweet series, so it’s a standalone blog entry - much of which I’ve shared before.

Build-time toggles

Some toggles shape what is built - things are included or excluded from binaries (JARs, DLLs, EXEs, APKs, etc)

Also known as “build-flags” and they have a multi-decade history.

Boot or run-time toggles

Some toggles go with the…

Paul Hammant's blog
23 July 2019

Original Link

Using Git In Business And Government

Synopsis: Git is the best we have right now for a “History-retaining Merkle tree” (when force-push is turned off), and stands to be utilized more outside of software development - in business at least.

A £200m “Garden Bridge” project was canceled when it had accrued £50m in costs and before construction started. It is difficult to pick it apart. See this Tortoise Media article and Reddit discussion.

It is not clear whether governments or corporate shareholders would be first to require “minutes” and proceedings to be better stored for posterity (and audit), but both will in time. I’m 100%…

Paul Hammant's blog
21 July 2019

Original Link

Ubuntu file limits 18.04

sudo nano /etc/systemd/user.conf sudo nano /etc/systemd/system.conf sudo nano /etc/security/limits.conf Source

17 July 2019

Original Link


Occasionally my dad sends me random emails from friends and people he meets. Here are some nice quotes from one he sent me over the weekend. Compassion is the language the deaf can hear and the blind can see. – Mark Twain Kindness is in our power even when fondness is not. – Henry James […]

15 July 2019

Original Link

Can Pull Requests Talk? Effective Communication Within Developers - An Idea

Majorly, I still love writing code. Do you know why? Because code expresses your intelligence in words that can be processed. And also, it helps others understand what you are trying to communicate in a better way. I believe that writing code is a way of communication and it enables developers understand better than just talking about the concepts or logic in plain english words.

This is the thought process that leads to my today's post.

I came across a situation recently when a Pull Request represented an idea but not an actual implementation. The idea was expressed not in…

Jey Geethan
11 July 2019

Original Link

Tutorials vs Reference Docs vs Examples

If you’re trying to promote/sell some software thing it’s best to have examples inside the “5-second rule” experience. The 5-second rule iis where people land on your article/page, scroll up and down quickly, see no examples and then hit the back button.

Some/many will do that because they’re example-orientated. That as opposed to tutorial, api-doc, or buying ideas from rant-style text. The more experienced developers get, the more likely they are to leave tutorial and api-doc as a way of gaining knowledge of a thing, and more toward examples.

And even if they shift towards ‘examples’ as a way…

Paul Hammant's blog
11 July 2019

Original Link

Off the Charts

If you’re following me on Twitter, you’ll have noticed that the amount I’m talking about the environment and climate change has ramped up recently. I want to explain why, and why this is probably the most important blog post I’ve … Continue reading

2 July 2019

Original Link

Mistakes we made adopting event sourcing (and how we recovered)

Over the last year or so we have been building a new system that has an event-sourced architecture. Event-sourcing is a good fit for our needs because the organisation wants to preserve an accurate history of information managed by the system and analyse it for (among other things) fraud detection. When we started, however, none of us had built a system with an event-sourced architecture before. Despite reading plenty of advice on what to do and what to avoid, and experience reports from other projects, we made some significant mistakes in our design. This article describes where we went wrong…

Mistaeks I Hav Made
30 June 2019

Original Link

Building Your First Portfolio Website? These are some tips to consider…

If you're an aspiring front-end developer, building your own portfolio website is a must-do. These are some of tips to consider when building your first portfolio website.

Anders Ramsay
4 November 2016

Original Link