About the craft of software development and why it matters.
Effectiveness: the capability to achieve a chosen set of goals.
(Effectiveness = doing the right thing, efficiency = doing it right.)
By “craft” I mean focus on the following:
- Making our organizations more effective
- Building the right software, building it right, building it quickly
There are multiple aspects – organizational, human (motivation, mastery, …), technical (skills, …).
People, organizations, values
- Drive: The Surprising Truth About What Motivates Us
- Bob Marshall: Rightshifting – according to the author, 80% of knowledge work organizations are very ineffective, wasting resources on non-value-adding activites; only few are effective, even fewer highly effective. Rightshifting is the attempt at shiting them to the right, towards higher effectiveness. Links to a few videos explaining it more. Related: Steve McConnell’s Business Case for Better Software Practices, referring to a study by SEI; “The actual distribution of software effectiveness is asymmetric. Most organizations perform much closer to the worst practice than to the best.” – the best performing 10 times better then the worst/average (productivity, speed, defects, value)
- Tim O’Reilly: Create More Value Than You Capture (30 min + questions) – build apps that matter, that change how we do things. Thinking just about money is bad. Try to make the society better, smart, create more value than you capture, solve important problems, help people. Ex. startups: Uber, Square, Code for America.
- Kent Beck: Making Making CoffeeScript [video, 20 min] – a wonderful and inspiring demonstration of some of the key values and practices of efficient software development (while developing a test framework for/in CoffeeScript) – focus on shortening the feedback loop and application of parallel change; iterative evolution/emergence.