<- Googleoff: index -> <- googleon: index ->
The term craftsmanship is increasingly used by software developers as a reaction to the negative news about failing software projects in organizations. Where does this come from and is it a good development? Provides craftsmanship for better software? Or serve you as a client especially watchful for these self-appointed craftsman? Passion and pride prevail. In this blog I will explain why
.
Pete McBreen, one of the first to use the term, writes in his book Software Craftsmanship (2001):
Becoming a good software developer Involves a lot more than just learning to write programs. Software development is a craft, it blends science, engineering, mathematics, linguistics and art.
An interesting consideration that requires some elaboration. Until now, software development often sees as engineering
History in engineering
.
Large software knew until recently often an “engineering” approach. We therefore speak often about a software engineer. Engineering is engaged in developing and constructing products and systems where scientific knowledge is used for. Examples include construction, engineering and mechanical engineering. The emphasis is on planning and creating a detailed design before construction starts (waterfall). Within engineering, there is much focus on processes to ensure controllability, measurability and predictability. This also led to the emergence of licensing, certification (eg Microsoft, Oracle, etc.) and manuals for the exchange of engineering knowledge and the adult making the field.
With the rise of Agile work and emphasis on agility (instead of predictability), software development is going to a more creative process seem than engineering. It is creating more than build. Software development is a young profession without significant minimum entry requirements. There are no mandatory training, protected titles or rankings available to measure the competence, eg. A doctor or lawyer. Companies also have Microsoft, then with languages such as Visual Basic, programming accessible to the masses. This easy entry, ample reward and physically light work had a great attraction for the labor market, making a big difference in skills originated in the field. Reputation also often determines the level of software developer, because objective standards are lacking.
At the same time software development has become a labor-intensive industry. Developers are now the most expensive resource in a software project. In history, craftsmanship often used for crafts with expensive labor and difficult to learn skills for beginners went into the leather to the box below the knee.
As a reaction against failing projects and the large influx moderately talented developers, seek software developers that represent their profession himself as a craftsman stand out from this crowd.
What is a craftsman?
There is often a parallel with Europe in the Middle Ages where craftsmen in a guild, a kind of profession, were trained as a professional with a master-apprentice approach. Think of the training as a lawyer or a medical specialist. In a guild has knowledge and experience exchanged. New guild members were trained in the profession. After a thorough education could be recognized as an apprentice technician with the title journeyman and finally the title “master” get after doing the guild or master thesis. The guild represented the interests of the guild members, and protected them. Often a guild had a monopoly on the exercise of the profession, which led to the assurance of quality of work, sometimes even to a monopoly.
A great social disadvantage of the guilds the corrupting effect of it monopoly. The age-old methods were not renewed, let alone be changed. Someone with new ideas had to either join the guild (and thus give these ideas), or choose another profession.
(http://nl.wikipedia.org/wiki/Gilde_ (profession))
Agreements with software development
In his blog Doug Bradbury describes a craft historically determined by an important collaboration between the hands and the eyes of the practitioner. A glassblower can be done by a trained hand-eye coordination blow the perfect glass.
Only when the effect is quickly visible to the hand elopment be adjusted in order to perfect the result. Agile work promotes an iterative process in which short sprints working (visible) software is delivered. Each sprint enables the hand Elingen make adjustments, like the craftsman of the Middle Ages.
While engineering chooses in advance a detailed design with little room for adjustment. Other parallels with medieval craftsman are both design and develop the product (where in engineering is often divorced), presence of material (steel), tooling and method of learning (apprenticeship / by doing).
The challenge now is that a trained glassblower not get any decent blown glass and therefore no glassblower (craftsman) can call. However, a mediocre software developer can present a working application where the client is happy with it. It is for the client simply does not show how the software ‘under the hood’ was born. To be able to say something about is arranged in parallel with Agile manifesto a manifesto craftsmanship. The question is whether this is really adding anything and does not have a high open-doors content. I especially miss the why and how behind these 4 principles. In addition, everyone is free to sign the manifesto, without being asked or looked at the record. There is more substance needed in my view. I give a cross
Properties and temptations of a craftsman
.
A good software developer is distinguished by knowledge and skills. Knowledge of languages, architecture, design patterns, methodologies and frameworks. However, this knowledge is not unique and freely accessible and available on the Internet. For skills is a different story. Skills you learn by practicing. Practice makes perfect. Skills are crucial to the success and quality of the software development process. Especially since knowledge is accessible to everyone. We see this also in the definition of McBrean, which it calls a fusion of science, engineering, mathematics, linguistics and art. Especially in the latter, the focus on skills
Skills testing as software, advise, analyze, ‘clean coding’, communicating with stakeholders, plan, collaborate, and perhaps most important:. Continue to improve (learning) . You constantly ask how it could be done better next time, both technically and in cooperation. Engineering also plays an important role. Within Groupon combine them to make these two currents which:
While engineering is about the macro goal of delivering economical software that’s reliable and efficient, craftsmanship is about the micro process of mastering the skills to Achieve That macro goal.
I am of the opinion that a software developer as a craftsman must bet by striving always better to be in the box. Each command can be better (faster, cheaper, more attractive) are carried out than the last, because the skills again are better trained. It is important to use good skills. The purpose of a software development project is to deliver working software that meets the demands of stakeholders. Nothing more and nothing less. A Rolls Royce while making a Golf was asked, does not make you craftsman. Scott Norberg describes this threat in his blog based on his experiences as a flute repairman. As a professional, he carried out repairs that cost many times the value of the flute. It was also playing the flute for the owner difficult. As a professional, shot by Scott. In his argument, moreover. Gold plating is at everyone with a passion lurking. It is the professionalism of the engineer watches for unprofitable decisions. These are skills that are used to achieve the result, not so much the result
Quality and tools
.
The skills also involve the deployment the right tools and techniques such as unit testing, DevOps / continuous deployment, standardization, design patterns, etc. With proper I mean especially those techniques and tools that contribute to the required result. That are appropriate in the work. It seems to be obvious, but just choose the appropriate skill requires much practice and knowledge sharing. This also requires a lot of insight and understanding of the needs of the client. For throw-away software (eg once for an event.) Have different requirements for design and maintainability than for example a shop
Passion and pride create a software craftsman
What qualities make a software craftsman? Neil Roodyn comes to:
– A craftsman devoted his working life to be better at his job;
– A craftsman learns skills as ‘companion’ in practice;
– A craftsman seeks mastery of the box after
– A craftsman teaches beginners the art as ‘master’;
– A craftsman building a reputation based on what he produces, not on the basis of extracted examinations;
– A craftsman works closely with the customer to realize what is requested;
– A craftsman discuss implications with the customer;
– A craftsman assures itself that the client is satisfied with the outcome;
In other words, passion for the job and proud of the results are decisive. Passion creates continuous learning and sharing skills with colleagues. Pride actually means that the craftsman also his signature on the result because he dares to put the customer and his satisfaction with the result. Passion and pride have direct impact on reputation, so the position of the craftsman is rising in the market. This distinguishes the craftsman from the crowd.
No comments:
Post a Comment