Posts made in 2013

  

Maintaining Business Velocity

Much has been written about how to increase and maintain the velocity of development, especially in an Agile context. But relatively less is said about business velocity – the ability of the product owner or business team to produce sufficiently refined requirements (e.g. user stories) to keep up with the pace of development. Lean thinking […]

Are Organizational Standards Harmful?

As a senior architect I work with and in some cases help create a wide variety of organizational I.T. standards: Architectural guidance Build and deployment standards like semantic versioning Development practices like unit testing and continuous integration Enterprise libraries, components, or services providing reusable functionality Enterprise infrastructure like single sign-on, backups, or corporate desktop support […]

The Two Domain Problem

Most professions and trades only need to know their own domain of practice, not the customers. When you see a dentist or a plumber they do not need to understand what you do in order to work on your teeth or your plumbing. Software development is different: its essence is the automation of work. So […]

Analyzing System Dependencies

Analyzing dependencies might seem like a simple concept, but recently I have come to appreciate even more the multiple layers to this topic. To start, why as I.T. professionals should we care about dependencies between and within systems? The core reason is that understanding dependencies allows us to determine the impacts of change. This aids […]

Bad News Early

For a software development project, when is the best time to communicate to stakeholders bad news like having insufficient budget or schedule? From the behaviors I have observed of some managers and leads, their answer would seem to be “never” – upon learning bad news they hope things will turn out in the end and […]

Architects Anonymous

As an architect observing and helping multiple teams build and maintain enterprise software, sometimes I think I am living in an alternate reality. I see systems fail on a nearly daily basis, teams under intense schedule pressure, a lack of awareness of basic developer quality practices, repeated failures of communication, servers taking weeks to provision, […]

Exposure to Extremes

I love being exposed to different ways of doing things, especially when they are extremes that provide a sharp contrast with standard, commonly-accepted methods. I deliberately search out such examples because I feel they provide great learning opportunities to reflect on the true principles underlying successful endeavors. If someone can be successful while doing the […]

Hierarchy of Advice

As an architect over the years I have given a lot of advice, some of it even asked for :) Over time, my choice of words when providing advice has evolved into a very precise hierarchy. Random Thought At this lowest level this is not advice but merely thoughts that are thrown out with very […]

Faster Builds via Concurrency

Recently I have been looking for ways to make a Java build run faster. This is something I seem to do at least once a year, typically as a result of the application’s production code base and automated test suite both growing in size over time. The build had previously already been split into multiple […]