What pictures do we have in our minds when we think about effective software development? Code quality, continuous integration, pair programming or what have you. While I’m a big fan of all of them I would challenge the concept that this is the only, or the most important, area which developers should focus on.
Building software is a collective effort of people working in different roles and this should always be a starting point to a discussion about effectiveness. The missing piece may be software craftsmanship but it may also be handful of dull chores that few would fancy doing. How can we tell? What should we use as guidance? And, at the end of the day, how to build software effectively?