during: 2009

tags

API design · agile · agile adoption · analysis patterns · application architecture · application integration · bad things · big data · board games · build scripting · certification · collaboration · computer history · conference panels · conferences · continuous delivery · database · design · dictionary · distributed computing magazine · diversions · diversity · documentation · domain driven design · domain specific language · domestic · encapsulation · enterprise architecture · estimation · event architectures · evolutionary design · experience reports · expositional architectures · extreme programming · front-end · gadgets · ieeeSoftware · infodecks · internet culture · interviews · language feature · language workbench · lean · legacy rehab · legal · metrics · microservices · mobile · noSQL · object collaboration design · parser generators · photography · podcast · popular · presentation technique · privacy · process theory · productivity · programming platforms · programming style · project planning · recruiting · refactoring · refactoring boundary · requirements analysis · ruby · security · talk videos · team environment · team organization · technical debt · technical leadership · test categories · testing · thoughtworks · tools · travel · uml · version control · web development · web services · website · writing

2019 · 2018 · 2017 · 2016 · 2015 · 2014 · 2013 · 2012 · 2011 · 2010 · 2009 · 2008 · 2007 · 2006 · 2005 · 2004 · 2003 · 2002 · 2001 · 2000 · 1999 · 1998 · 1997 · 1996

All Content

Technical Debt Quadrant

There's been a few posts over the last couple of months about TechnicalDebt that's raised the question of what kinds of design flaws should or shouldn't be classified as Technical Debt.

by Martin Fowler

14 Oct 2009

Read more…

bliki

technical debt

Digital SLR

Like many geeks I'm into photography. We geeks like photography because it provides the veneer of an artistic endeavor while allowing us to indulge in lots of technical details and spend money on expensive toys. A friend recently asked about my camera buying decisions, a question that prompted me to write them down.

by Martin Fowler

7 Aug 2009

Read more…

bliki

gadgets photography

Software and Obama's Victory

Barack Obama's victory in the 2008 Presidential campaign included a significant contribution from software - particularly using the Internet. But perhaps the most interesting aspect was the interplay between advances in software and developments in the human organization of the campaign.

by Martin Fowler

30 Jul 2009

Read more…

article

experience reports

Two Hard Things

There are only two hard things in Computer Science: cache invalidation and naming things.

-- Phil Karlton

by Martin Fowler

14 Jul 2009

Read more…

bliki

API design

Android

One of the side benefits of speaking at the Google IO conference last month was that I got a new phone - the HTC Magic android phone that Google gave to all attendees. I was actually in the market for changing my phone to something like this, so it came at a good time. Here's my impressions after carrying it around for a month or so.

by Martin Fowler

6 Jul 2009

Read more…

bliki

tools

Illustrative Programming

What's the most common programming language in the world?

by Martin Fowler

30 Jun 2009

Read more…

bliki

programming platforms language workbench

Ruby at ThoughtWorks

ThoughtWorks started using Ruby for production projects in 2006, from then till the end of 2008 we had done 41 ruby projects. In preparation for a talk at QCon I surveyed these projects to examine what lessons we can draw from the experience. I describe our thoughts so far on common questions about Ruby's productivity, speed and maintainability. So far our conclusions are that Ruby is a viable platform that should be seriously considered for many forms of applications - in particular web applications using Ruby on Rails. I also go through some technical lessons, including some thoughts on testing with Active Record.

11 Jun 2009

Read more…

article

ruby

Dynamic Type Check

Recently some of our developers ran into the accusation that with a dynamic language like ruby you use so many dynamic type checks that you end up effectively writing your own type system. So they thought, since we've written a lot of real ruby code - how often do we make dynamic type checks? Michael Schubert gathered up the data.

by Martin Fowler

2 Jun 2009

Read more…

bliki

ruby

Smut On Rails

A couple of weeks ago there was a Ruby conference in San Francisco called GoGaRuCo (Golden Gate Ruby Conference). This conference has grabbed attention due to a talk at which the presenter illustrated a discussion of CouchDB by using sexually suggestive pictures of women. Unsurprisingly the result has been a fair bit of heated, and occasionally offensive, debate.

by Martin Fowler

30 Apr 2009

Read more…

bliki

ruby diversity

Lay Programmer

I use the term lay programmer to mean someone who is programming without thinking themselves as a programmer. Someone who spends a large part of her day working on spreadsheets is doing programming, often very intense programming. Usually however she won't call herself a programmer, nor think of spending much time learning how to program better.

by Martin Fowler

18 Apr 2009

Read more…

bliki

team organization domain specific language

Meta-Introduction to Domain Specific Languages

This is my usual DSL intro talk, but done with a twist as I'm talking to a much more DSL-aware crowd than usual. So essentially I twisted into a talk about how I introduce DSLs to people.

by Martin Fowler

Apr 2009

More…

video

talk videos domain specific language

Democratic Political Technology Revolution

My colleague Zack Exley and I talk about the software that was used by the 2008 Obama presidential campaign. An aspect I found particularly interesting was the way in which the software enabled and interacted with the organizational approach to the campaign.

Zack Exley and Martin Fowler

Mar 2009

More…

video

talk videos experience reports

Nashville Project

I spent some time recently with one of my favorite ever ThoughtWorks projects. It's a project that started in 1998, using then new J2EE technology. Over the years it's had a fascinating history: starting with EJBs, ripping them out, going offshore to Bangalore, coming back to Chicago. Many people have moved in and out of the project and the project has varied in head-count between 6 and 60. Overall the project has had over 300 staff-years of effort on it and weighs in at around 100 KLOC.

by Martin Fowler

25 Feb 2009

Read more…

bliki

testing experience reports legacy rehab

Dsl Migration

One danger that DSL advocates need to guard against is the notion that first you design a DSL, then people use it. Like any other deice of software, a successful DSL will evolve. This means that scripts written in an earlier version of a DSL may fail when run with a later version.

by Martin Fowler

4 Feb 2009

Read more…

bliki

domain specific language

Rules Engine

Should I use a Rules Engine?

by Martin Fowler

7 Jan 2009

Read more…

bliki

API design domain specific language

Feature Branch

With the rise of Distributed Version Control Systems (DVCS) such as git and Mercurial, I've seen more conversations about strategies for branching and merging and how they fit in with Continuous Integration (CI). There's a bit of confusion here, particularly on the practice of feature branching and how it fits in with CI.

by Martin Fowler

3 Sep 2009

Read more…

bliki

continuous delivery version control

Self Initializing Fake

One of the classic cases for using a TestDouble is when you call a remote service. Remote services are usually slow and often unreliable, so using a double is a good way to make your tests faster and more stable.

by Martin Fowler

4 Aug 2009

Read more…

bliki

testing

Composed Regex

One of the most powerful tools in writing maintainable code is break large methods into well-named smaller methods - a technique Kent Beck refers to as the Composed Method pattern.

by Martin Fowler

24 Jul 2009

Read more…

bliki

programming style

Mercurial Squash Commit

I've recently had a bit of a fiddle squashing some commits with Mercurial, so thought it was worth a post in case anyone else is looking to do this. I don't know whether this is the best procedure, but it seemed to work pretty well for me.

by Martin Fowler

9 Jul 2009

Read more…

bliki

version control

Request Stream Map

Hang around my colleagues at ThoughtWorks and you soon get the impression that the only good Enterprise Service Bus (ESB) is a dead ESB. Jim Webber refers to them as Egregious Spaghetti Boxes. So it's not uncommon to hear tales of attempts to get them out of systems that don't need them.

by Martin Fowler

1 Jul 2009

Read more…

bliki

application architecture

Revitalizing Enterprise Software

AMP, an Australian financial services company, ran an internal conference called Amplify. They asked me to talk about agile software development. I thought about how to make this best fit into the overall flow of the conference, particularly since I expected a significant part of the audience to not be part of IT. I settled on talking about how IT projects can be infrastructural or strategic. This classification alters how you approach the projects, in particular on the way IT and business people should collaborate.

by Martin Fowler

25 Jun 2009

More…

video

talk videos

Comparative Values

One of the most striking things about the Manifesto for Agile Software Development is the format of its values "we favor x over y". I don't remember who came up with that idea, or how it arose. It probably just bubbled up as we tossed around ideas. But it's distinctive format has led a few people to try using that format again.

by Martin Fowler

5 Jun 2009

Read more…

bliki

writing

Google I/O Talk on Cloud

Rebecca Parsons and I talk about Google App Engine and the general world of clouds. In the first bit I talk about things various ThoughtWorkers learned from experiementing with App Engine, highlighting issues with testing, persistance, and concurrency. In the second part Rebecca talks about the broader issues enterprises will face with moving to the cloud.

Martin Fowler and Rebecca Parsons

May 2009

More…

video

talk videos

Intentional Software

Several years ago, my then colleague Matt Foemmel, dissatisfied with the tools with which we were building software, managed to get in touch with Charles Simonyi to find out more about the shadowy Intentional Software. What he saw impressed him, and he persuaded me and other ThoughtWorkers to get involved too. What we saw was a tool with startling potential, but we remained frustrated by the secrecy and lack of urgency to release. That frustration ended last week.

by Martin Fowler

20 Apr 2009

Read more…

bliki

domain specific language

Perspectives on DSLs with Chris Sells

When I attended DSL DevCon, Microsoft's Channel 9 dragged me off to be interviewed by Chris Sells.

Martin Fowler and Chris Sells

Apr 2009

More…

video

interviews domain specific language

Contradictory Observations

Many computer systems are built to house data and turn it into useful information for humans. When we do this there is a natural desire to make that information consistent. After all what use is there of a computer system that's in two minds about things?

by Martin Fowler

3 Mar 2009

Read more…

bliki

domain driven design analysis patterns

Three Years of Real-World Ruby

For a talk at QCon London 2009 I surveyed ThoughtWorks use of Ruby from 2006-2008 in which time we did 41 projects. My talk covers our views on Ruby's producitivity, speed, and maintainability. I conclude that Ruby should be taken seriously as a development environment. I also have an article that covers the same material if you prefer reading to watching.

by Martin Fowler

Mar 2009

More…

video

talk videos ruby

Eager Read Derivation

One of the interesting talks I attended at QCon San Francisco, was one given by Greg Young about a particular architecture he'd used on a recent system. Greg is a big fan of Domain Driven Design, in this case it needs to be used with a system that has to process a high transaction rate and provide data to lots of users. There were a number of things I found interesting about his design, particularly his use of Event Sourcing, but for this post I want to dwell on just one aspect - what I'll call Eager Read Derivation.

by Martin Fowler

10 Feb 2009

Read more…

bliki

domain driven design application architecture

Flaccid Scrum

There's a mess I've heard about with quite a few projects recently. It works out like this:

  • They want to use an agile process, and pick Scrum
  • They adopt the Scrum practices, and maybe even the principles
  • After a while progress is slow because the code base is a mess

by Martin Fowler

29 Jan 2009

Read more…

bliki

agile agile adoption bad things