A View of Development Roles
Specialization in teams allows team members to do what they are good at and what they like to do. There are at least three types of specialization in software development teams: functional...
View ArticleIteration Pipelining
Iterative and incremental development (IID) is the established practice for dividing software projects in time. IID is often interpreted to mean a succession of complete development cycles, meaning...
View ArticleCode Stewardship
The benefits of collective code ownership are well-known. Everyone in the team needs to be able to contribute to every part of the code base. But collective code ownership has an Achilles heel. The...
View ArticleTask Dependencies in Plans
The GANTT chart, as embodied in Microsoft Project, has become the de facto method of representing software development plans in many organizations. This is unfortunate. For, the precise temporal...
View ArticleSome Consequences of Pull
There's been a lot of interest recently in the application of lean principles to software development. See for example the 2003 book Lean Software Development: An Agile Toolkit for Software Development...
View ArticleMonads through Pictures
Here is an excerpt from the introduction to my recent write-up on monads. Monads in functional programming provide a framework for aspect-aware computations to be composed to build higher-level...
View ArticleIterative Time-Boxing
Iterative time-boxing, or ITB for short, is the strategy of strictly time-boxing successive stages of work on a software requirement. In this note, I'll contrast ITB as a planning technique with...
View ArticleThe Google App Engine Data Model
Decades ago in my college database class we learned about relational databases, network databases, and hierarchical databases. Back then, relational was cool. And hierarchical was definitely passé....
View ArticleVector Clocks for Representing Temporal Relations between Distributed Events
In this blog I'll review the use of vector clocks for comparing the times of occurrence of dispersed events in a distributed system. Vector clocks are well-known in the literature, and there are plenty...
View ArticleUpdate Succession in Replicated Key-Value Stores
In an earlier blog we looked at the use of vector clocks for keeping track of temporal relations between events in an asynchronous event system. To recap: In an asynchronous event system each event is...
View Article
More Pages to Explore .....