I am an author, speaker, and loud-mouth on the design of enterprise software. I work for ThoughtWorks, a software delivery and consulting company. This site contains lots of my writing on software development, which primarily focuses on software design and agile methods. To find your way around this site, go to the intro guide.


News and other updates

Selecting a Mobile Implementation Strategy

Mon 21 May 2012 09:21 EDT

Over the last couple of years, we’ve seen mobile development become an increasing part of our work at ThoughtWorks. One question that clients regularly have is how to make the decision about which devices to support and what proportion of effort should go to each device. In this article Giles Alexander outlines two opening gambits - laser and cover-your-bases - and how to choose between and build on these approaches.


photostream 25

Thu 10 May 2012 12:46 EDT

Winterthur, DE


Retreaded: StandardStoryPoints

Thu 10 May 2012 12:30 EDT

Retread of post orginally made on 06 Sep 2004

I've heard a couple of questions recently about coming up with a standard story point mechanism for multiple teams using extreme programming's planning approach. The hope is have several teams all using equivalent story points, so that three story points of effort on one team is the same as on another.

I think trying to come up with this at best of limited value, and at worst dangerous.

more ...


Bliki: OrmHate

Tue 08 May 2012 11:31 EDT

While I was at the QCon conference in London a couple of months ago, it seemed that every talk included some snarky remarks about Object/Relational mapping (ORM) tools. I guess I should read the conference emails sent to speakers more carefully, doubtless there was something in there telling us all to heap scorn upon ORMs at least once every 45 minutes. But as you can tell, I want to push back a bit against this ORM hate - because I think a lot of it is unwarranted.

more ...


photostream 24

Sat 05 May 2012 10:04 EDT

Boston, MA


Retreaded: PublishedInterface

Thu 03 May 2012 10:18 EDT

Retread of post orginally made on 26 Dec 2003

Published Interface is a term I used (first in Refactoring) to refer to a class interface that's used outside the code base that it's defined in. As such it means more than public in Java and indeed even more than a non-internal public in C#. In my column for IEEE Software I argued that the distinction between published and public is actually more important than that between public and private.

more ...


Bliki: TestPyramid

Tue 01 May 2012 11:27 EDT

The test pyramid is a concept developed by Mike Cohn, described in his book Succeeding with Agile. Its essential point is that you should have many more low-level unit tests than high level end-to-end tests running through a GUI.

more ...


photostream 23

Fri 27 Apr 2012 21:10 EDT

Middleton Place, Charleston, SC


An English Literature Podcast

Thu 26 Apr 2012 19:02 EDT

I’ve added another recommended podcast to my list, this one a is a treasure if you enjoy good fiction. Why I Really Like This Book is a quirky sail through the lesser known waters of English Literature. The pilot is Kate Macdonald, who teaches English Literature but was frustrated at the limited range of books she could cover. Each podcast spends ten minutes or so exploring a single suggested book. Her first series was a random alphabetical wander, now she’s taken to talking about sets of five books with a common theme. Recent sets include Five Appalling Fictional Women and Five Classic Detective Novels. If you’re looking for ideas for books to curl up with, this is an excellent source of suggestions.


Retreaded: CustomerAffinity

Thu 26 Apr 2012 09:55 EDT

Retread of post orginally made on 28 Jul 2006

When someone is looking at what makes up a top-class enterprise software developer, often the conversation may turn to knowledge of frameworks and languages, or perhaps the ability to understand complicated algorithms and data structures. For me, one of the most important traits in a programmer, or indeed in a development team, is something that I'll call Customer Affinity. This is the interest and closeness that the developers have in the business problem that the software is addressing, and in the people who live in that business world.

more ...


Bliki: EditingPublishingSeparation

Tue 24 Apr 2012 10:41 EDT

In my conversations with ThoughtWorks project teams over the last year or so, a regular theme has been the growing impact of content management systems (CMS). They aren't usually seen as helpful, indeed there is a clear sign that they are becoming a worryingly invasive tool - used for more than their core purpose in such a manner that they hinder overall development.

Amongst the other irritations, a common failing is that they keep one copy of each article. This single copy is edited as part of creating the content and published to readers (usually on some kind of state-change flag).

more ...



Domain-Specific Languages

I’m a serial book writer and over the last few years my writing has focused on a book on Domain-Specific Languages. DSLs are small languages targetted at a particular task. Most programmers will come across many of them (examples include regular expressions and CSS). Despite their popularity they’ve never been taken very seriously and I suspect they are underused. My aim is to explain a variety of DSL techniques so you’re better equipped to decide when and how to use DSLs in your work.


Continuous Delivery

For a long time I’ve been a champion of Continuous Integration which reduces the integration risk by integrating early and often. We’ve found CI to be a core technique at ThoughtWorks and use it almost all the time. While this is useful, there was still risk present from software that works in the development environment to getting it to work in production.

As a result we developed techniques to reduce this risk, moving closer to our aim of building software in such a way that we confidently deploy the latest builds into production whenever there is a business need. We find this improves feedback, reduces risk, and increases the visibility of project progress.

more…


Agile Software Development

I’ve been an advocate of agile methods for software development since their early days, and ThoughtWorks has applied these ideas with success for a decade. The New Methodology describes the essential characteristics of agile methods, Is Design Dead looks at the role of design. I’ve also written about the lessons we learned from doing agile on our offshore projects. For these and other pages on agile - consult my agile guide page.


I discovered ThoughtWorks in 2000: then a small American company whose philosphy of software development was remarkably similar to my own. Now we’ve grown to around 1500 people world-wide, but kept the values that make us special. My colleagues have built critical systems for many clients in that time, and I’ve learned many lessons from them. While doing this, we found we often didn’t have the tools we needed, so we started to build them. This led to open-source tools such as CruiseControl and Selenium, and to products. We have Mingle for project collaboration and mangement, Go for Continuous Delivery, and Twist for automated functional testing.

Despite the Great Recession, the last couple of years have been our most successful - and we are always looking for more people to join us.

Upcoming Talks
Aug
4QCon: São Paulo
Oct
8goto;: Aarhus, Denmark


tags

API design · academia · agile · agile adoption · agile history · analysis patterns · application architecture · application integration · bad things · build scripting · certification · clean code · collaboration · conference panels · conferences · continuous integration · database · delivery · design · dictionary · distributed computing magazine · diversions · diversity · documentation · domain driven design · domain specific language · domestic · encapsulation · enterprise architecture · evolutionary design · extreme programming · gadgets · ieeeSoftware · internet culture · interviews · language feature · languageWorkbench · lean · legacy rehab · metrics · microsoft · mobile · model-view-controller · noSQL · object collaboration design · parser generators · photography · podcast · popular · presentations · process theory · productivity · programming platforms · project planning · projects · recruiting · refactoring · refactoring boundary · requirements analysis · retrospective · ruby · scrum · software craftsmanship · talk videos · team environment · team organization · technical debt · technical leadership · testing · thoughtworks · tools · travel · uml · version control · web · web services · website · writing

2012 · 2011 · 2010 · 2009 · 2008 · 2007 · 2006 · 2005 · 2004 · 2003 · 2002 · 2001 · 2000 · 1999 · 1998 · 1997 · 1996

All Content