Locorotondo, Puglia, Italy
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.
My atom feed (RSS) announces any updates to this site, as well as various news about my activities and other things I think you may be interested in. I also make regular announcements via my twitter feed, which I copy to my facebook page.
Sat 08 Mar 2014 09:46 EST
Thu 06 Mar 2014 09:28 EST
It's common for software systems to make remote calls to software running in different processes, probably on different machines across a network. One of the big differences between in-memory calls and remote calls is that remote calls can fail, or hang without a response until some timeout limit is reached. What's worse if you have many callers on a unresponsive supplier, then you can run out of critical resources leading to cascading failures across multiple systems. In his excellent book Release It, Michael Nygard popularized the Circuit Breaker pattern to prevent this kind of catastrophic cascade.
The basic idea behind the circuit breaker is very simple. You wrap a protected function call in a circuit breaker object, which monitors for failures. Once the failures reach a certain threshold, the circuit breaker trips, and all further calls to the circuit breaker return with an error, without the protected call being made at all. Usually you'll also want some kind of monitor alert if the circuit breaker trips.
Thu 20 Feb 2014 20:42 EST
Tue 11 Feb 2014 12:34 EST
Tue 11 Feb 2014 10:47 EST
There are many factors that lead to the troubling DiversityImbalance that we find in the software community. Some of these, like the problems in teenage education that discourages girls from STEM subjects is a long term problem where our profession can't play a central role in fixing . But one factor that comes down directly to us is the alienating atmosphere that hangs over the tech community.
Thu 06 Feb 2014 12:22 EST
ThoughtWorks is joining with several organizations, including the EFF, Reddit, Mozilla, and Demand Progress in a call to the international community to fight against mass surveillance. If you are concerned about the growth of mass surveillance of our internet communications, I urge you to see how you can take part. On February 11th, many websites will be adding banners to their site encouraging people to make their opinions known, particularly those in the U.S. concerned about how our government is indulging in behavior that can lead to undermining democracy.
To find out more please visit https://thedaywefightback.org where you can find out how to join in by adding a banner to your web site. For more background on the rationale behind this day of action, read this statement from the EFF. Take a look at my explanation on why privacy is important, even if you think you have nothing to hide.
…and isn’t about me (or probably you)
An important debate in politics is the importance of privacy - in particular when or if privacy should be traded off in order to combat terrorism. In discussion I often hear people say things like “I have nothing to hide”, or as a friend of mine put it “the NSA doesn’t care about insignificant people like you or me”. In this essay I argue that this thinking is deeply flawed, as it isn’t our privacy that we should be primarily concerned about, but instead the privacy of various kinds of bothersome people. Compromising privacy undermines their actions, which will undermine the foundations of a free society.
“Big Data” has become quite the rage in the last year or two. While the hype is annoying, I do think it represents an important shift about the role data plays in our world. Earlier this year I put together an infodeck on Big Data to introduce the various aspects of Big Data: how the world of data is changing, and our responses: extraction from more sources, new tools for handling the logistics of data, using agile approaches to manage data projects, the challenges of proper interpretation of data, and the opportunities of new visualizations. For a video treatment of similar territory, you can watch a keynote that Rebecca Parsons and I gave at QCon London in 2012.
Adopting agile software development is neither a quick nor easy path. Diana Larsen and James Shore (experienced agile coaches) have come up with a way to think about how teams progress through stages of fluency in agile thinking. The path begins by focusing on value and then progresses to delivering and optimizing that value. Diana and James outline the benefits of each stage and the what investments you need to make to get there.
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.
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.