Who Am I ?
I am Paul Hammant, Chief Science Officer of a fintec startup. Until recently I was Senior Director of Engineering for the same employer and oversaw all software development. My employer has development teams in New York, Boston, Ireland, and Bulgaria. Teams make applications and services with different technologies, different release cadences, but all are agile and rest on DevOPS & Continuous Delivery best practices.
I used to work at ThoughtWorks (Martin Fowler's consultancy), and spent nearly all of 12.5 years there on client engagements (investment banking, finaincial services, an airline, retail, startups). Roles ranges from developer, tech lead and Director of Engineering. Before ThoughtWorks, I was Head of Development at a UK 'mobile-commerce' startup (before mobile data was cheap). In the early 90's I was a freelancer on green-screen systems development in the insurance field. Before the turn of the millenia, I was developing fat and thin solutions for enterprise Java needs.
I am in my late-40’s, have mostly been a software development consultant since 1989, an Agile advocate, and am passionate about open source development.
Dependency Injection Pioneer
I was rabid about Inversion of Control (IoC) long before I arrived in ThoughtWorks, or indeed before it was popular anywhere. I’m also one of the pioneers of the related topic Dependency Injection and guilty of defining some numerical sub-types for IoC, before ThoughtWorks’ chief scientist, Martin Fowler, wrote his widely-read article renaming what I was talking about to Dependency Injection (DI)
Back then in 2002, I was busy working on the first constructor injection DI container with Aslak Hellesoy (more famous for Cucumber these days) - PicoContainer, in Java.
Selenium Co-Creator
Selenium, is the defact-standard functional web-app testing technology. I’m co-creator of Selenium 1.0 (2004). The bit I did was Selenium-RC's browser process spawing side, to allow your choice of driving language, with your choice of browser (Firfox or IE, back then). That used a Comet mechanism, although it wasn't called that until later. These days Selenium 2 (WebDriver) is a huge force, with cloud testing grids, and just about every web-development team uses it. I was until 2016, in the Selenium management committee.
Flag Carrier For Trunk Based Development
I talk about “Trunk Based Development” (TBD) a lot. Enough so that you would think I invented it, or coined the term (I did not). Similarly associated practices, “Branch by Abstraction”, and Feature Toggles (or flags if you prefer). A lot of my consulting career featured the recommendation of, and planned migrations towards TBD.
Branch by Abstraction - a technique for avoiding multi-branch development and the source-control merging consequence of that. Again, not the inventor (or even the fellow that coined the term), but the chief advocate for the practice.
Read more: Trunk Based Development, Branch by Abstraction, Feature Toggles, and source-control best practice
Other Recurring themes
Aside from the above, there are some themes that I keep returning to in this blog over the years:
- Pseudo-declarative UI markup languages, delivered over HTTP
- Modern JavaScript web frameworks delivering Client-Side MVC
- Things that are backed by source control, that are not normally backed by source control
- Tier-reduction architectures, patterns and alike
- Agile, with a focus on XP, BDD, and ‘small stories’ in particular.
For the entire current millennia, I have been an advocate of Open Source, and eXtreme Programming (XP). I was participating in the former for a couple of years, before I became an advocate of the latter. The two communities feed off each other. Of course Lean and Kanban take over from XP these days, and I do what I can to avoid Scrum as well as correct people when they conflate it with Agile.
Linked in : has more job detail
Conference Speaking
- OReilly’s OCSCON (Portland OR, 2004): Constructor Dependency Injection with PicoContainer - A post J2EE Nirvana (Portland, OR). My Blog Entry and Slides for the same.
- Agile India (Bangalore, 2006): TDD, Refactoring and Dependency Injection (Agile’s answer to “Big Up-Front Architecture” : BUFA) (Bangalore)
- Agile India (Bangalore, 2006): Selenium Workshop (Bangalore)
- Agile 2009 (Chicago): Selenium and JBehave : A surprisingly successful shotgun wedding (Chicago). Second link. Co-presented with Mauro Talevi.
- Perforce MERGE conference (San Francisco, Sept 2014) - Keynote session Trunk Based Development in the Enterprise - Its Relevance and Economics
- Perforce MERGE conference (San Francisco, Sept 2014) - PANEL: Development Patterns for Continuous Delivery
- Perforce MERGE conference (San Francisco, Sept 2014) - An unrecorded Workshop on Trunk Based Development
Event Speaking
- June 20, 2012: The IEEE’s Austin Texas Chapter Client-Side MVC: The Next Big Thing for Enterprise Application Development. Video too.
- Apr 21, 2016: Panelist discussing "Pioneers, Settlers and Town Planners" (with Kevin Behr, and Jabe Bloom) at a Technology Workshop organizased by Hedge Fund Managzine
DZone eZine
- An article commissioned specifically for DZone (2012) - The Shift Towards Client-Side MVC
- DZone syndicates articles from this blog. There are more than a hundred of my articles syndicated, so far.
InfoQ eZine
- May 2006: Simple JAVA and .NET SOA interoperability. Commissioned for their very first edition!
Java Developer Journal
- Dec 2003: Inversion of Control Rocks. Duplicated here and here. The article was prettier in the print edition, which is sadly no longer available online.
Books
- 2010: Some of my artwork from a blog entry was used in Jez Humble and Dave Farley's Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation.
- 2015: Some of my artwork from a blog entry was used in Jez Humble, Joanne Molesky, Barry O'Reilly's Lean Enterprise: How High Performance Organizations Innovate at Scale .
Go to my archive for a full list of entries going back to 2002.
- January 27th, 2017 » Maven In A Google Style Monorepo
- January 1st, 2017 » Reducing Web-page Screenshot Size
- December 19th, 2016 » Infrastructure versus Config as Code
- December 14th, 2016 » Principles of Containment
- December 11th, 2016 » Permissions for composite in-house webapps
- November 21st, 2016 » Incongruous experience with a portal of multiple Angular1 SPAs
- November 15th, 2016 » QML's Squandered Opportunity
- November 2nd, 2016 » Blockchains for patent filings
- September 26th, 2016 » Visualizing the Theory of Constraints
- August 15th, 2016 » Introducing 'git size' (command and visualization)
Subscribe to my blog by email
Getting in touch
Email is best. First name at second name dot org.