Clean Code: A Handbook of Agile Software Craftsmanship
by Robert C. Martin
Pragmatic Programmer, The: From Journeyman to Master
by Andrew Hunt; David Thomas
Mythical Man-Month, The: Essays on Software Engineering, Anniversary Edition
by Frederick P. Brooks Jr.
Working Effectively with Legacy Code
by Michael Feathers
Cloud Application Architectures, 1st Edition
by George Reese
Pragmatic Programmer, The: From Journeyman to Master
by Andrew Hunt; David Thomas
Web Service Contract Design and Versioning for SOA
by Thomas Erl; Anish Karmarkar; Priscilla Walmsley; Hugo Haas; L. Umit Yalcinalp; Canyang Kevin Liu; David Orchard; Andre Tost; James Pasley
SOA Design Patterns
by Thomas Erl
By recognizing that software development is not a mechanical task, you can create better applications.
Today’s software development projects are often based on the traditional software engineering model, which was created to develop large-scale defense projects. Projects that use this antiquated industrial model tend to take longer, promise more, and deliver less.
As the demand for software has exploded, the software engineering establishment has attempted to adapt to the changing times with short training programs that teach the syntax of coding languages. But writing code is no longer the hard part of development; the hard part is figuring out what to write. This kind of know-how demands a skilled craftsman, not someone who knows only how to pass a certification course.
Software Craftsmanship presents an alternative—a craft model that focuses on the people involved in commercial software development. This book illustrates that it is imperative to turn from the technology-for-its-own-sake model to one that is grounded in delivering value to customers. The author, Pete McBreen, presents a method to nurture mastery in the programmer, develop creative collaboration in small developer teams, and enhance communications with the customer. The end result—skilled developers who can create, extend, and enhance robust applications.
This book addresses the following topics, among others:
Understanding customer requirements
Identifying when a project may go off track
Selecting software craftsmen for a particular project
Designing goals for application development
Managing software craftsmen
Software Craftsmanship is written for programmers who want to become exceptional at their craft and for the project manager who wants to hire them.
0201733862B07242001
Average Amazon.com® Rating: ![]()
![]()
![]()
![]()
Based on 24 Ratings
I expected more - 2005-04-21
Reviewer Rating: ![]()
![]()
![]()
![]()
![]()
I'm disappointed. I expected more from this book. Being that I want to become a software craftsman (more on software.kubasek.com), I thought this book is going to give me a fairly clear direction on how to get there. There are some bits and pieces of it, but not very convincing.
What I did not like about this book, is that the author is a craftsman himself, but he wrote in 3rd person. If this was based on his experiences, if this book was more personal, it would have been more convincing. It would have been a lot more interesting. Even though I believe in software craftsmanship, I don't necessarily agree with bashing software engineering in favor of craftsmanship. I belive both fit together well.
Don't get me wrong, you'll find some useful information in this book (that's why I give it 3.5 stars), but overall it is just a light treatment of Software Craftsmanship.
A grassroots movement manifesto - 2008-03-05
Reviewer Rating: ![]()
![]()
![]()
![]()
![]()
I'll begin with a couple of quotes from the book which will set up the frame of further discussion.
---QUOTE---
In the [NATO 1969] report Peter Naur and Brian Randell stated "The phrase 'software engineering' was deliberately chosen to be provocative, in implying the need for software manufacture to be based on the types of theoretical foundations and practical disciplines that are traditional in the established branches of engineering."
...
In the same spirit, it is the intention of this book to be deliberately provocative in implying the need for practitioners to start paying attention to the craft of software development. Software craftsmanship is important because it takes us away from the manufacturing metaphor that software engineering invokes and makes us pay attention to the people who do software development.
...
This book is a call to arms: We must insist that developers really know their craft before we trust them to create systems for us or with us.
---/QUOTE---
Like some other books on the topic, this one is about the importance of the actual people who do the development. But this one is special in that it argues that the traditional approach to software development - exactly the "software engineering" has a viable alternative - the "software craftsmanship". Not only it suggests that good team is important, it goes further explaining how groups and individuals should be working differently.
The author draws a rather arbitrary line of 100 man/years of development and suggests that any project less than that would benefit from following software craftsmanship. Software craftsmanship thus does not deny the software engineering, but limits its niche to huge military projects and alike where a horde of average programmers work to rule.
Compared to that, software craftsmanship is a perpetual development of the team and each of its members while producing a high quality applications of typical size. In other words, both software engineering and software craftsmanship are ways of developing software, but whereas the former is about projects, the latter is about projects AND PEOPLE.
---QUOTE---
A key problem with the software engineering mindset is that programmers can be misled into thinking that they know everything there is to know about a subject. Software development does not work like that.
...
With software craftsmanship, the intention is to get the best possible tools into the hands of capable developers so that small teams can create applications that once required the services of the lots of people.
---/QUOTE---
One other aspect, just as important is that software craftsmanship is not only about the team dynamics. It also suggests the healthy long-term relationships between the developers and the customers where customers *gasp* actually work to help the developers build the application for them.
---QUOTE---
Overall, because developers who adopt the software craftsmanship approach accept responsibility for the applications they create, customers benefit from the long term relationship that this implies. A long-term relationship with developers is crucial because the best person to maintain an application is the person who developed it.
...
Software craftsmanship gives customers what they need - namely, stable, long-lived applications rather than old-style legacy applications that cause significant disruption and trauma every few years when they have to be replaced.
---/QUOTE---
My guess is that most of the developers that perform actual active development would support the idea. At the same time the common managerial practice, the belief in "one true way", "best practice" and "big M methodology" would prevent it from cutting to the core of many organizations. Well, too bad. Pete McBreen, you have grassroots support, that's for sure !
Developer, or manager alike, do read the book. It will give you a different perspective and hopefully will push you to action.
This book feels like an essay rather than "a book on software development". The language is free and relaxed, and there are practically no technical references or examples. The citations from other sources found in this book are often more concise, clear and to the point than the surrounding discussion.
As far as call to arms is concerned, the book outlines the attack direction, but does not give any ground for it. Take this book to the heart (like I did), you will still to engage in countless fights and arguments over ways of doing things.
Great book, a grassroots movement manifesto for better software development.
Software Craftsmanship is a "must" read for software professionals. - 2005-11-05
Reviewer Rating: ![]()
![]()
![]()
![]()
![]()
An excellent comparison of software engineering and software craftsmanship. Pete McBreen clearly illustrates the the traits of software craftsmanship and details the steps required to go from apprentice to journeymen and possibly to master craftsmen if desired. After reading this book, you'll begin to appreciate the finer skills of software development along with the knowledge of knowing when the "classical" software engineering approach is more appropriate. The concepts covered include: achieving quality, selecting a team, mentoring others, requirements, maintenance / extensibility, and estimation / scheduling.
If you are looking for directions on how to become one of the software programing elite, this is the map. This book is also an excellent guide for those trying to staff software projects with quality talent in that you'll know who the true craftsmen really are. Perfectly edited, filled with solid references, clear examples, and easily readable text.
A well stated point often over-looked - 2005-10-07
Reviewer Rating: ![]()
![]()
![]()
![]()
![]()
Practical software development versus over-engineered software and one of my favorite fundamental building block books ever. The book illustrates the common problems of how we think we're smarter today than we were decades ago .. exemplified by the fact that decades and centuries ago, we trained people up through mentoring, pairing and example across time; while today, people believe if they have a degree from a Big 10/12 university they are due a US$60k salary and the privileges of a king. The book discusses the art of evolving as a practitioner and the associated value versus believing each hurdle crossed demands and merits unbelievable reward at high rates of speed.
Otherwise stated, this book observes the behavioral shifts that have occurred through time enabling many to believe humanity has evolved to such a great extent that we're actually smarter, and more capable - earlier in life. The subsequent logic is supported by the comparison of historical pairing/mentoring relationships starting as an apprentice grunt and having to work your way up to master craftsmen in various trades. Escalation through the ranks to "experienced master" historically required evidential, mentored experience. Today, for some reason, we no longer believe it necessary and give people too much responsibility, too early.
Mr. McBreen nails an issue that few would actually like to discuss I believe .. the fact that in order to construct and deliver artful software solutions to the benefit of the customer, it actually requires an experienced resource who's seen the good, the bad and the ugly.
Good but not fantastic. 3.5 stars. - 2005-11-14
Reviewer Rating: ![]()
![]()
![]()
![]()
![]()
I picked this up at SD West a few years ago and Pete McBreen was there to sign copies of the book. I believe he had won a Jolt award the night before. So I was expecting amazing things.
I had read through a couple of times the Pragmatic Programmer book and found it to be considerably more pragmatic than this one. SW Craftsmanship had many good points to make but the format left me wanting something a little different and more applicable to my job.
This is worth a read but I'd pick up Pragmatic Programmer if my money were tight - it provided more utility than this one.
My position may be somewhat colored, however, by the development environment I work within. Agility and mentoring are interesting ideas but in the end the customer doesn't understand it and senior managment appears uninterested in changing horses midstream. Instead we plow ahead in a flawed, heavyweight CMM 3 world.
Top Level Categories:
Software Engineering
Sub-Categories:
Software Engineering > Architecture
Software Engineering > Methodologies
Some information on this page was provided using data from Amazon.com®. View at Amazon >