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

May 2013 edition of ThoughtWorks Technology Radar

Wed 22 May 2013 16:35 EDT

The ThoughtWorks Technology Advisory Board (TAB) has released the latest edition of our technology radar. This is where we highlight some of the technologies that are currently attracting our attention and that we feel are worth you taking a look at. In this edition our themes include my long term interest in breaking down boundaries between people and groups, lightweight option for analytics, infrastructure as code, and applying the practices that have worked well for us in development to places that are missing them.


photostream 46

Tue 21 May 2013 09:34 EDT

Longwood Gardens, PA


Expansion to DIP in the Wild

Tue 21 May 2013 08:50 EDT

Brett’s article on the Dependency Inversion Principle (DIP) and how it works in practice has been a popular read on this site (over 24,000 views since it was published at the beginning of the month). Brett has now expanded the article with two more examples from his delivery experience: questioning requirements and handling time.


How do you estimate on an Agile project?

Fri 03 May 2013 13:36 EDT

If you’re interested in techniques for estimation, you should take a look at this pdf ebook. It contains half-a-dozen essays on estimating in agile projects, drawn from our experiences with a wide range of clients. We explain approaches based on story points and on story counting, which should give you a good overview for you to explore an approach that will work for you.


DIP in the Wild

Wed 01 May 2013 12:13 EDT

The Dependency Inversion Principle (DIP) was coined by (Uncle) Bob Martin several years ago. It’s a useful principle to help organize the dependencies in your system. Here Brett Schuchert shows how this principle works in practice to simplify designs with a couple of real world examples from his recent ThoughtWorks projects.


photostream 45

Wed 24 Apr 2013 19:18 EDT

Segovia, Spain



NoSQL Databases

I’ve been involved in enterprise software for two decades and while we’ve seen huge technological change during that time, the relational database has been a constant figure. Previous attempts to dethrone relational databases have failed, but some people think the new rise of NoSQL databases will finally consign relational databases to history. While I think relational databases are going to an important part of the landscape for a long time, I do think that there is a big change coming in the database field.

I’ve been collaborating with my colleague Pramod Sadalage, on exploring and explaining this shift. For a quick introduction into what is happening, take a look at our infodeck on why we think the future is not so much NoSQL but more that of Polyglot Persistence. For more depth take a look at our new book: NoSQL Distilled. On this site you can find more material by looking at the nosql guide.


Developing for Mobiles

Over the last couple of years, we’ve seen mobile development become an increasing part of our work at ThoughtWorks. A habitual question is how to deal with the many kinds of mobile devices that are out there. Recently I published an infodeck on developing software for multiple mobile devices. This explores the dangers of a naive cross-platform approach, explores the trade-offs between multiple native apps versus a web app, and looks into hybrid approaches.

In a complementary article Giles Alexander writes about how to allocate effort across different platforms . He outlines two opening gambits - laser focuses on doing a single platform really well while cover-your-bases maximizes the number of platforms to aim at. He talks about the choice between these openings and how to build on them. Giles is also the maintainer of Calatrava - an open-source framework to assist building hybrid mobile applications.


TW logo

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.


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…



Upcoming Talks
Jun
18-19goto: Amsterdam


tags

API design · academia · agile · agile adoption · agile history · analysis patterns · application architecture · application integration · bad things · big data · build scripting · certification · clean code · collaboration · conference panels · conferences · continuous integration · data analytics · database · delivery · design · dictionary · distributed computing magazine · diversions · diversity · documentation · domain driven design · domain specific language · domestic · encapsulation · enterprise architecture · estimation · evolutionary design · expositional architectures · extreme programming · gadgets · ieeeSoftware · infodecks · 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

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

All Content