Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
To get the free app, enter your mobile phone number.
The Rise and Fall of Software Recipes Hardcover – International Edition, May 23, 2016
|New from||Used from|
See the Best Books of 2018 So Far
Looking for something great to read? Browse our editors' picks for the best books of the year so far in fiction, nonfiction, mysteries, children's books, and much more.
If you are a strong believer in formal methodologies for software development, you must read this book. You will hate it. If you have doubts about the usefulness of recipes for how to develop software, you definitely should read this book, and you’ll love it. It is not just about methodologies. It is also about programming languages, garbage collectors, assertions, dogmas, rice on chessboards. It is about money, project, technology and more. But above all, it is about people.
Top customer reviews
There was a problem filtering reviews right now. Please try again later.
The book is neither intended to be a progression in presenting observations and arguments, nor is it based solely on one theme. It is a collection of essays, each self-contained, yet with tendrils that pull them together. As Blasband points out, there is no intended or recommended way of reading the book. I was tempted to hop around from chapter to chapter, focusing on the ones that looked most interesting and relevant to me while skipping over others. Yet this approach would have missed out on the many gems of wisdom and personal insight that decorate otherwise dense, esoteric discussions of programming language, constructs and capabilities comprehensible only by hardcore coders.
Throughout the wide variety of topics Blasband discusses, he generally makes at least a passing connection to the central tenet, that for the discipline of software development, “recipes bring no value whatsoever”. Unlike with “chocolate chip cookies and Toyotas”, software development does not seek to produce identical copies the same thing, it seeks constantly to improve and adapt. Moreover, it is the contribution of talented and creative people that is the critical factor in successful software development.
This last point is illustrated time and again in Blasband’s prose. In a chapter titled “Breaking the wheel”, he confronts the “don’t reinvent the wheel” dogma on software reuse—a recipe element that is taken as a given in modern object-oriented software development. Blasband argues that “some wheels don’t come in one size fits all”, and that “One’s added value may lie precisely in one’s ability to come up with a different wheel”. He presents persuasive opinions, supported by quotes from one of his idols, Donald Knuth, pointing out the pitfalls of blind reuse of “black boxes” of which only a small amount of functionality may be applicable to the task at hand. At the same time, he presents an illustration discussing the yacc parser generator, talking about “shift-reduce and reduce-reduce conflicts”, “non-compositionality” and other concepts that a reader without Blasband’s credentials, knowledge and education finds mystifying.
Certainly, Blasband’s command of his subject matter is impressive. A self-admitted “codeaholic”, someone with graduate degrees in computer science who also founded and is CEO of his own successful software company, he brings to light the fact that IT is not the dry, featureless world that non-practitioners often assume it to be. Indeed, it is a place of raging academic debate, of both scholarly and social thought, of innovation and achievement, and of colorful and thoughtful characters—Blasband himself being one.
As one would expect from an author of numerous academic theses, the book is peppered with citations of other sources (a dozen pages of references appear at the end, plus an additional several pages of Web references). Many of these are daunting to the casual or non-IT reader (“Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints”), but Blasband also quotes from Freud’s “The Interpretation of Dreams” and Joyce’s “Ulysses”. And some references cry out for further investigation, such as “Checking C programs with Lint”!
While I have been working in IT for decades and think of myself as reasonably up-to-date and well-informed, I found the book to be an eye-opening treasure-trove of information. Being introduced by Blasband to unfamiliar (to me) languages like Haskell and Mercury, and concepts like literate programming, domain-specific languages and ontology-centric applications has broadened my knowledge and sharpened my interest to explore these further.
Blasband reveals himself to be a man of many dimensions. Notwithstanding his codeaholic identity, he makes it clear that family and personal pursuits are of greater importance than his great love for coding. As a successful businessman, he offers legitimate commentary on technology monopolies, pleasing customers and doing work that has value to the workers and to society. Perhaps surprisingly, he admits to a certain level of technophobia—he’s not on Facebook and he doesn’t employ the latest and greatest smartphones and electronic trappings. And even in his element as a leading-edge software development practitioner, the nature of his business and his interests oblige him to be fully conversant in IT topics that are hardly leading edge: COBOL, Assembler, waterfall development methodology.
His style of writing is unconventional yet compelling once the reader engages with it. Facts and arguments are presented as normal text, but these are interspersed with personal anecdotes, observations and asides that are italicized and offset on the page. This technique humanizes and revives even the driest of technical passages, or illuminates them with the light of real-world experience.
Interestingly, Blasband’s writing is pleasingly digestible for North American readers. He is Belgian and multilingual, but does not write so that this is apparent to the reader. I credit this to both his editors and to his frequent travel to North America and regular interaction with North Americans. It makes the reading much more approachable than it might have been, especially when the reader is bogged down in “Euro-centric” subject matter like railway braking control systems and the Ariane rocket.
A clergyman I know always wanted to ensure that his Sunday congregation got a clear “take-away message”, and readers who invest the time and attention to reading Blasband’s book will have one: IT may depend on machines, but it is a human enterprise that is advanced not by repetition and doctrine but by creativity and enthusiasm—and pure skill. In this book, Blasband succeeds by challenging the reader’s—and the industry’s—thinking.