June 13th, 2020
One of the more pervasive myths in software development is that naming things is hard.
April 22nd, 2020
If you are working with a lot of “twelve-factor” services then probably, yes. That said, you may get a creeping feeling that Kubernetes was designed to solve problems at a scale that most people never reach…?
February 19th, 2020
Code coverage can be a useful technique for discovering untested parts of your code base, but it makes for a useless target.
November 17th, 2019
Publishing a public API involves many considerations, from billing and metering through to documentation and on-boarding. These are likely to be addressed through a collection of solutions rather than a single all-singing, all-dancing API management platform.
June 22nd, 2019
Many of the apparent benefits of monorepos can be realised through improvements in engineering culture and architecture rather than adopting a specific approach to source code storage.
June 8th, 2019
Maturity models are a popular way of looking at development challenges. The problem is that they are an arbitrary and inflexible tool and they tend to encourage the wrong mindset.
March 23rd, 2019
The problem with SAFe is that you can implement it without writing a single unit test or automating a single build…”scaled agile” may be an oxymoron.
February 24th, 2019
Standardisation does have a place, but it should be reserved for infrastructure and collaboration rather than languages and tools.
August 30th, 2018
There is a growing sense of unease around how larger organisations have implemented agile. In particular, there is a tendency towards centralised control that can be at odds with the agile preference for individuals over process.
February 16th, 2018
Agile teams still need to make architecture decisions, but in supporting them architects should seek “just enough” architecture over “big design up front” and practical solutions over large-scale abstract thinking.
December 13th, 2017
Finely-grained, entity-based services seem to be advocated by some pretty authoritative sources. This is unfortunate as they are something of an anti-pattern that can undermine many of the benefits of decomposing an monolith into micoservices.
November 18th, 2017
Technical debt may be a useful metaphor for describing how bad code design undermines productivity to non-technical audiences, but it does not help in understanding the longer term problems that affect code bases.
August 14th, 2017
Swagger enables the same kind of automated discovery and integration that WSDL was invented to support. In doing so it undermines the design of REST APIs and doesn’t even provide adequate documentation.
June 19th, 2017
Refactoring describes a very specific and controlled technique for improving code. The problem is that it is often used to describe wholesale changes to code bases that should be treated as a rewrite.
May 16th, 2017
No self-respecting integration platform is complete without an API management story these days. Is this just a RESTful return of the enterprise service bus?
January 28th, 2017
No architect will ever admit to being out of touch with software development. However, unless you are writing code then it’s difficult to avoid becoming an “ivory tower” or “PowerPoint” architect that can only discuss systems in the abstract.
December 19th, 2016
Test coverage statistics are much loved by management teams and code quality tools. They tend to associate a high level of coverage with robust, well-managed code bases. Wrongly, as it turns out.
September 20th, 2016
Three-lettered acronyms can be a useful tool for providing brevity, but they can also give rise to a coded language that contributes to a cold and impersonal development culture.
April 14th, 2016
In most cases “business logic” just refers to the poorly-defined “gloop” that sits between user interfaces and databases in layered architectures.
September 27th, 2015
Change in an API is inevitable. Attempting to manage this change through version numbering usually creates more problems than it solves.
August 11th, 2015
The best architecture diagrams act as a map – if an architect can’t express a system clearly and concisely then they probably don’t understand it properly.
July 25th, 2015
You might be able to identify cross-cutting concerns in a monolith, but in a service-orientated world they should melt away into specific implementations.
November 22nd, 2014
Debates on the finer points of REST can bring out the worst in people as they seek to define what is and is not “RESTful”. In most cases the debate is unlikely to make the difference between success and failure for an API.
October 3rd, 2014
GUIDs do solve an important problem. It’s just rarely the problem that developers are trying to address…
July 9th, 2014
An architecture based on tiers or layers is too inflexible to deal with the more flexible demands of modern systems, particularly when you working with high-volume systems that require distributed processing.
April 21st, 2014
Structured and “Hackable” URIs are a staple part of SEO-friendly websites. Although developers generically expect to see them in HTTP-based APIs, they should be irrelevant to consumers of a fully RESTful API that leverages HATEOAS.
March 27th, 2014
A lot of hot air is wasted on CMS selection. Having lived through many implementations, it’s not the platform decision that determines whether or not you will be successful.
February 21st, 2014
Lean development’s “last responsible moment” should address uncertainty, not justify procrastination
Deferring decisions to the “last responsible moment” can help you to adapt to the inevitable uncertainty that comes with agile development. The risk is that it can become an excuse for uncertainty that undermines development velocity.
August 12th, 2013
Agile does not necessarily lend itself to management reporting. The few metrics it exposes are designed to support internal planning rather than external measurement. It can be tempting to re-purpose velocity as a measure of productivity, though this will only distort team planning without saying anything meaningful.
February 22nd, 2013
Shared databases risk turning into performance bottlenecks that encourage close-coupling and create a single point of failure. There’s no justification for using them to integrate processes and applications.
June 19th, 2012
Having to pull the plug on a new version of your product is unfortunate. Scrapping it months after it’s been released is just plain careless.
July 3rd, 2011
A proof of concept is often proposed as a way to quickly demonstrate viability. In most cases it does nothing of the sort and merely delivers a quick hack that can undermine good system design.
May 25th, 2010
The success or otherwise of the Times Online’s imminent paywall shouldn’t be judged on the number of subscribers. After all, content isn’t the only source of revenue.
January 14th, 2010
Despite the predictions that Apple’s tablet computer will be a game-changer I wouldn’t be writing off paper-based media for a while yet…
October 7th, 2009
Another quarter, another set of statistics from Adobe claiming “worldwide ubiquity” for the Flash plug-in. As with many vendor-commissioned surveys, the results of the Flash penetration survey are based on a truth that is spun out to an absurd degree.
April 13th, 2008
As a medium where people could share ideas and be genuinely creative for the sheer hell of it, fanzine culture was like a small-scale internet.