News and Updates
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.
Mon 30 Nov 2015 09:14 EST
Many software projects that use agile and lean approaches have difficulties with
enterprise architects, whose role changes significantly in this context. Kevin
Hickey has been working with enterprise architecture groups with our clients and
shares his observations on how enterprise architects can engage successfully in this
context by building a vision and building bridges between groups to help realize
Sat 21 Nov 2015 13:18 EST
Sat 21 Nov 2015 12:08 EST
I need to find all the photos that I've taken in November over the last few
years. I can't express this query easily in Lightroom, so I figured out how to write
a Lua script that would make this query. These notes describe what I did, as someone
who had never before programmed with Lua, nor used the scripting environment in
Thu 19 Nov 2015 10:38 EST
I now move onto the second, more awkward, section of the
imperative code to refactor to an adaptive model. This shows how
I need to massage both the imperative code to make it fit the
model's structure better, and the model to support more
capabilities. I then finish by comparing the imperative and
active model approaches.
Wed 11 Nov 2015 10:55 EST
Our regular programming languages are where we usually like
to keep our logic, but there are times when it's useful to embed
logic into a data structure. Logic in a JSON file can remove
duplication when that same logic has to run on multiple
platforms that use different languages. This essay looks at how
to refactor logic from imperative code into such a data structure.
Sat 31 Oct 2015 05:34 EDT
Continuous Integration and Delivery
For a long time I’ve been a champion of Continuous Integration which
reduces integration risk by integrating early and often, an
application of the principle of Frequency Reduces Difficulty. We’ve
found CI to be a core technique at ThoughtWorks and use it almost all
the time. At the heart of this is a style of development that
minimizes long feature branches with techniques like Branch By
Abstraction and Feature Toggles.
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 Deployment Pipelines to
reduce this risk, moving closer to our aim of Continuous Delivery:
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
For more information: take a
look at my guide page on Continuous Delivery.
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 be 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 more information take a look 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 2500 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, Selenium, Frank, and
Moco as well as commercial products.
I have many opportunities, but I’ve stayed at ThoughtWorks because of
the quality of my colleagues, who include both well-known speakers and
those who may not be famous names but do an excellent job of software
delivery (and feed me the information to write about). We are inspired
by working with each other and our unusual three-pillar philosophy
that raises professional excellence and social justice to the same
level as financial performance.
And we are always looking for more great people to
join our curious company. Maybe I’ll see you in one of our
offices some day.