Mike Dunn 2013.04.17Software Craftsmanship:An Often Ignored Focus
Mike Dunn 2013.04.17Status QuoWe are deluged with information about how toimprove software product creation and deliveryby using different development methodologiesfor:● Teams and/or● Organizations and/or● Companies
Mike Dunn 2013.04.17Status Quo● Different software creation methodologies aresupported by a plethora of training programs.● There are training programs that focus at differentlevels: Organization Team or Project● There are also a considerable number of rolefocused training programs.
Mike Dunn 2013.04.17Status Quo● So what is missing??●How about Software Craftsman1training??● How about Software Craftsman1emphasis??● Yes, we have role level training.● Yes, Watts Humphreys PSP does exist.● But, how many software developers reallyunderstand the software development craft??1To those members of the political correctness brigade, I prefer the traditional gender neutral usage ofthe word craftsman. Just because a word ends in man does not make it a male reference – like theword woman.
Mike Dunn 2013.04.17Status Quo● Do software developers consider themselves to becraftsmen??● My limited anecdotal analysis says most do not.● The majority of software developers desire toproduce high quality work products.● The majority of software developers are capableof delivering higher quality work products.Let us explore.
Mike Dunn 2013.04.17Status Quo● First, let us review one of the key elements of anysystem with variable inputs and actions –feedback.● If one looks at any successful quality system, it isobvious that it is a closed loop system makingfeedback the critical factor.● To be effective, feedback should be captured andrecorded in a timely manner and then analyzed.
Mike Dunn 2013.04.17Status Quo● Now let us take a look at an example sequence: Developer analyzes some requirements andcreates an estimate. Developer writes tests [in some cases],implements the requirements, tests theimplementation and delivers the work products. Developer performs instant self assessment –“I got close”, “oops, I missed it”, etc.● And what gets captured, recorded, and analyzed??
Mike Dunn 2013.04.17Status Quo● Most developers operate in near open loop mode,focusing primarily on inputs and outputs andoccasionally using recent coarse feedback withminimal analysis.● The primary feedback used by most softwaredevelopers is compiler errors and test failures.● If one were to identify most developers correctivemethodology as a personal quality system, itwould be classified somewhere between ad hocand reactive.Why is this the case??
Mike Dunn 2013.04.17Status Quo● The initial cause is education and training.● Students aspiring to become software developersare not taught that their ideal skill set is a craft thatcan become predictable and be continuouslyimproved.● Software developer interns and new hires are notshown or taught that their ideal skill set is a craftthat can become predictable and be continuouslyimproved.How are they to learn??
Mike Dunn 2013.04.17Status QuoWhile there are some star software developers andsome pockets of a craftsman culture, where is theencouragement and momentum for softwaredevelopers to take a craftsman approach to softwaredevelopment by using a closed loop personalquality system??
Mike Dunn 2013.04.17Post Status QuoIf we look at the activities of a software developerand apply the same processes that a modern softwaredevelopment team would use, each developer wouldhave a precise set of metrics that could be used forcontinuous improvement of their craft.The ideal solution is a formal process similar to Watts Humphreys PersonalSoftware Process (PSP).
Mike Dunn 2013.04.17Post Status QuoIt is time for folks to step up and proactivelypromote the concept of a Software Craftsman.Software Craftsmen use a closed loop personalquality system that uses historical data analysis,metrics, and personal performance data tocontinuously improve their work products.This will bolster the foundation of softwaredevelopment teams.
Mike Dunn 2013.04.17A Possible Software Craftsman Path● The journey to becoming a Craftsman begins bybecoming an Apprentice, working under the closesupervision of a Craftsman or Master Craftsman.● The next stop along the way is to become aJourneyman, working under the loose supervisionof a Craftsman or Master Craftsman.● Next step is to become a Craftsman under theguidance of a Master Craftsman.● Software Master Craftsman are the experts.
Mike Dunn 2013.04.17Software Craftsman Journey● Apprentice level concepts should be includedearly in any software developer education.● Concepts like personal discipline to plan andassess ones own activities.● The beginning could be as simple as keeping apersonal journal with specific logic points of dataentry and review.
Mike Dunn 2013.04.17Software Craftsman Journey● Software development education should deliver aJourneyman capable of:● Delivering work products with supervision.● Using internalized processes for planning,assessing, developing, testing, evaluating,andimproving their personal work products.● The internalized processes are based onprinciples that are adaptable to differentmethodologies.
Mike Dunn 2013.04.17Commentary● The purpose here is not to propose a specificmethodology, but to raise awareness for the need.● The reference concept of Craftsman may be loston todays generation – we can call it IGCSWWP2or whatever.● We just need to increase the emphasis and inertiaof solid individual development principles.2– InterGalactic Creator of SoftWare Work Products.
Mike Dunn 2013.04.17Status Quo No More??● Yes, some developers function as SoftwareCraftsmen.● Yes, there are software groups that promote,encourage, and train Software Craftsmen.● But the momentum for individual SoftwareCraftsmanship pales in comparison to all of thehype and hoopla for various team and projectmethodologies that are being promoted.● Can some of the momentum be redirected??