I am an author, speaker… essentially a loud-mouthed pundit on the topic of software development. I work for ThoughtWorks, a software delivery company, where I have the exceedingly inappropriate title of “Chief Scientist”. I’ve written half-a-dozen books on software development, including Refactoring and Patterns of Enterprise Application Architecture. I write regularly about software development on martinfowler.com
My main interest is to understand how to design software systems, so as to maximize the productivity of development teams. In doing this I’ve looked to understand the patterns of good software design, and also the processes that support software design. I’ve become a big fan of agile approaches and the resulting focus on evolutionary software design. I don’t come up with original ideas, but do a pretty good job of recognizing and packaging the ideas of others, or as Brian Foote describes me: “an intellectual jackal with good taste in carrion”.
200 E. Randolph, 25th Floor
Chicago, IL 60601-6501
As someone who writes a lot on the web it’s wise for me to point out my financial and other interests so people have a sense of my biases. (And I think others should do the same.)
I am an employee of ThoughtWorks and draw a salary from ThoughtWorks. I do have a voice in our business direction, but I don’t have a significant day-to-day participation in it.
My other main source of non-investment income comes from my books, of which a few sell rather well.
Vendors do offer me their tools from time to time. Very rarely do I do any more than briefly play with them. Exceptions are JetBrains, from whom I use IntellJ Idea and Resharper very heavily. I used to be a Microsoft MVP and received an MSDN subscription as part of that, but that’s no longer the case.
I am an amazon affiliate, so if you buy books via my links I do get a cut. I also get a cut from my links to InformIT (the Pearson online store).
My investments are all in wide-ranging mutual funds. I do not hold any direct investments in companies at all, and so do not have any direct investments in the software business. The one exception is ThoughtWorks, where I do have some options lying around somewhere - although I don’t think it’s very much.
I started working with software in the early 80’s and in the mid 80’s I started getting interested in the then new world of object-oriented development. I started to specialize in bringing objects to business information systems, first with a couple of companies and then as an independent consultant. In the early days this was using Smalltalk and C++, now it’s Java, C# and Ruby. Every year I learn something new, but I also find that many of the lessons from the past still apply. This work has led me into taking a leading role in OO analysis and design, the UML, patterns, and agile development methodologies.
I’ve written seven books on software development.
- Analysis Patterns are those repetitive ideas that I have come across in the business (domain) modeling that I have done during my career. As such they bring together the important areas of patterns and business object development.
- UML Distilled is a concise overview (under half an inch!) of the notation, semantics, and an iterative development process. It won a Software Development Productivity award in 1998 and is now available in a third edition.
- Refactoring describes how to alter the design of existing software in a controlled and rapid manner.
- I wrote Planning Extreme Programming with Kent Beck - it describes how to do the intensive planning that XP demands.
- Patterns of Enterprise Application Architecture describes some of the common patterns I’ve seen in developing enterprise applications. It won a Software Development Productivity award and a best Java book award from JavaWorld.com.
- Domain-Specific Languages: is about little languages which can help clarify small, but important, areas of a software project.
- I wrote NoSQL Distilled with my colleague Pramod Sadalage. It’s a brief (150 page) introduction to the world of NoSQL Databases and the future of polyglot persistence.
I spent five years in the early noughties as the editor of the design column for IEEE Software magazine. In the late 90s I wrote a column for Distributed Computing magazine. I rarely write for magazines now, preferring to concentrate my non-book writing on my website, which presumably you’ve found by now.
As well as writing books, I’ve become the editor of an Addison-Wesley Signature Series of books. I do this to provide a home that highlights books that I consider to be worthwhile books on software design.
I speak at many international conferences on software development. I’ve served on program committees for OOPSLA, Software Development, UML World, XP 2001, and TOOLS. I gave closing keynotes at XP2000-2003, served as conference chair for XP2005 and for Agile Universe in 2001. These days I try to limit my conference speaking but still regularly speak at goto (the conference formerly known as JAOO) and QCon conferences.
I became an independent consultant in 1991 and since then have seen a lot of companies as a consultant. While I’ve enjoyed a lot of this work, I’d never imagined joining any of them. This was partly because of the fact that I wanted the independence to do the writing that’s become an important part of my life, but also because I hadn’t come across an organization that was the sort of company I’d like to work for.
I started working with ThoughtWorks in the spring of 1999 and found a company whose attitude to people and customers fitted remarkably with my own views. They build the kind of mission critical business systems that I like to be involved in with the quality that I always aim for. But the key reason I joined them is because they really do believe that people are their biggest asset. I’ve seen many companies say that as a cliche, but not here. And that to me is essential because I believe the biggest impact on successful software development is motivated, talented developers. If you don’t have that all the technology and methodology in the world can’t help you. By hiring and keeping the best people, ThoughtWorks have the key to succeed in this business - and I do enjoy being around the best.
I live in Melrose, a pleasant suburb of Boston MA with my wife Cindy, a structural engineer, and we like to get out of doors in our spare time. Summer finds us cycling around New England and hiking wherever we can get to. Winter finds us cross-country skiing and hiking in New England’s sometimes plentiful snow. We also enjoy exploring the varied theater scene in Boston. I enjoy living in the US even though I miss the beer, the deep pointlessness of Cricket, and the English countryside.
I grew up in Walsall, England, going to Queen Mary’s Grammar School. I went to University College London from 1983-6 where I got a BSc (ENG) in Electronic Engineering and Computer Science. After graduating I stayed in London working for a while at Coopers & Lybrand, and a small tech company called Ptech, before becoming an independent consultant in 1991. I moved to the Massachusetts in 1994 continuing as an independent consultant until I joined ThoughtWorks in 2000. I became an American citizen in 2005 (I retain my UK citizenship as well).