Archive for the 'books' Category

Dawkins reviews Hitchens

21XPNHQadZL._AA_SL160_.jpgOne of the best (no, scratch that, it was the best) books I read this summer is Christopher Hitchens’ God Is Not Great: How Religion Poisons Everything. I was thinking about writing a review of it, but as much as I can be fairly competent and eloquent on matters of technology, computers and programming languages, I have no illusions about my ability to review an essay about religion, philosophy, and politics like Hitch’s latest work.

So it was with delight that I saw the review written by another of those Uppity Atheists™, none other than Richard Dawkins at The Times Online and I will do no more than promptly point you to it, since I—obviously— couldn’t have said it better.

Speaking of Dawkins, I had previously read his own The God Delusion. Dawkins’ book reads more like a reasoned, scientific discussion of why we can’t call ourselves theists without giving up a good share of our rational thinking, whereas Hitchens’ one is more like a collection of essays, witty and scathing. To each his own style, I guess, but I suggest you read both to have a good picture of what all this New Atheism is all about. Hint: it’s nothing more than good old atheism, but finally we are coming out of the closet and are stopping to pay undue reverence to religion’s supposed virtues and all that nonsense about non-overlapping magisteria.

Book Review: Producing Open Source Software

21NEKV6MS8L._AA_SL160_.jpgIf you have already read pretty much everything that there is to be read about why you’d want to start, manage, fund or participate in an Open Source project, but want to know everything about how best to do it, then Karl Fogel’s Producing Open Source Software is the book for you.

Drawing from his extensive experience with the Subversion project, Fogel provides in this book a comprehensive overview of all aspects of Open Source software development, covering technical, social, political, economical, legal, and managerial aspects.

While the book is more aimed at medium-to-large scale projects, especially those involving some kind of corporate entity, there is much in it that is applicable to most projects, excluding maybe only those little, one-man efforts that rarely become successful. But if you are the originator of one of the latter, should it suddenly attract a wide following, you’d better be prepared to face the unavoidable problems that popularity brings. This book will come in handy in this case.

Here are, in my opinion, the strong points of the book:

  • Providing a concise, yet comprehensive, overview of all aspects of Open Source development. This is really the manual of open development.
  • Demonstrating that there is much in open development that is similar to more traditional, corporate-style software development (you cannot always rely on good will and volunteers), but also much that is different, in motivation, rewards and objectives.
  • Putting the accent on the human aspect of development: mutual respect between participants is often the deciding factor in determining whether a project will thrive or fail. Since even the best of intentions sometimes are not enough to foster a peaceful, productive and collaborative environment, Producing Open Source Software contains a lot of useful, practical advice that you can follow if you want to keep developers happy and motivated.

Table of Contents

  1. Introduction
  2. Getting Started
  3. Technical Infrastructure
  4. Social and Political Infrastructure
  5. Money
  6. Communications
  7. Packaging, Releasing, and Daily Development
  8. Managing Volunteers
  9. Licenses, Copyrights, and Patents

Book Review: In Search of Stupidity

1590597214.01._AA_SCMZZZZZZZ_V39338621_.jpgIn Search of Stupidity: Over Twenty Years of High Tech Marketing Disasters, Second Edition (Paperback) by Merrill R. (Rick) Chapman.

This is the second edition of Merril R. Chapman’s best-seller In Search of Stupidity. To the first edition’s collection of episodes of strategic blunders, marketing disasters and outright hubris on part of various high-technology companies during the 80’s and the 90’s, the new edition adds a few notable episodes. Companies listed include: IBM, Digital Research, Apple, Microsoft, MicroPro, Ashton-Tate, Siebel, Borland, Intel, Motorola, Google, Novell, Netscape, and various dot-coms from the Internet bubble times.

Apart from being a fun and enjoyable read, In Search of Stupidity is also a valuable resource for high-tech entrepreneurs, marketers and geeks wanting to turn their technical prowess into a profit. There’s nothing like learning from the mistakes of others in order to avoid repeating them, and one of the merits of this book is that it does not limit itself to making fun of clueless companies, but extracts and digests from their tales a number of immediately useful advice.

So you can expect to learn how to avoid the same sort of positioning mistakes that doomed MicroPro, how not to inimicate the developer community that constitutes the lifeblood of your products, like Ashton-Tate constantly did, how to avoid damaging your relationships with the press, and many other useful tidbits. In this respect, the Stupid Analysis chapter at the end of the book is especially useful, in case you missed some of the more subtle lessons that were contained in the narrative presented in previous chapters.

In summary, this books is valuable both to entrepreneurs and managers, and to geeks who want to enter marketing, management or start their own company. Even if you are content with keeping a purely technical role, should you start recognizing the signs of stupidity on part of your company, you could at least be prepared to polish up your resume.

To be honest, it could be argued that some of the most egregious screw-ups described in the book were, at least in part, due to sheer bad luck, and that hindsight is always 20/20. Still I think that the stories told here teach some extremely valuable lessons. External circumstances alone cannot account for all that happened; it takes much stupidity and arrogance to turn unfavorable events into total disasters.

If you want to be picky, there is a couple of instances where the message of the book sounds a bit off. The first one can be found in the story of Google’s fight with CNET.com over the issue of privacy, and its supposed bowing to the censorship imposed by the Chinese government. You can argue how much you like that Google acted stupidly in these circumstances. Its behavior might have tarnished its ethical image—”Don’t be evil”, remember?. However, it doesn’t seem to have affected Google in any serious way; few people remember the episodes and Google is going as strong as ever. Compared to the other examples found in the book, this is a case of very mild stupidity, if at all, and it looks like Chapman seriously wanted to pick on Google but couldn’t find any real damning evidence.

The second point is in chapter 12, The Strange Case of Dr. Open and Mr. Proprietary, where the author traces the beginnings of the Free Software movement to the first hackers who started out by illegally copying Microsoft’s Altair BASIC. If one didn’t know better, one might start to think that Free Software pioneers were just a bunch of freeloaders, if not thieves. In the rest of the chapter, however, Chapman makes it abundantly clear that the only example of stupidity, in this case, can be found on the side of proprietary companies who failed to understand the Open Source/Free Software movement and its effect on the software industry.

To sum it up, In Search of Stupidity is a very good book, especially if you missed the first edition. Five stars are well deserved.


Robert Anton Wilson needs our help

Mark Frauenfelder, Boing Boing: “I’m not exaggerating one bit when I say Robert Anton Wilson is one of my heroes. His writing has had a profound influence on the way I view life, more so than any other writer. If I had not read his books, there would definitely be no Boing Boing.”

I won’t go as far as saying that Robert Anton Wilson is one of my heros, but I read The Illuminatus Trilogy and found it intriguing, stimulating and fun. So I decided to part myself from a small sum of money and donate it to him. It’s not much, but if you feel like, please do the same. I think he deserves it.

Moreover, I pledge to donate to him all proceedings I will gather from sales made through the affiliate that you see here on the right.

Technorati Tags: , .

Book Review: JPod

JPod, by Douglas Coupland.

1596911042.01._AA_SCMZZZZZZZ_.jpgWhy should I spend my money to carry around thirty or so pages of random numbers and digits of pi (with an error inside, so they’re not even good for cryptography) just because Coupland felt he needed to use filler when he had nothing interesting to write?

Predictable. Stereotyped. Not fun. The portrait of twenty-something geeks in the game development industry might be accurate, but totally uninteresting. What a letdown.

Book review: Programming Ruby

0974514055.01._AA_SCMZZZZZZZ_.jpgProgramming Ruby, by Dave Thomas.

I finally decided to review this book, having read it quite some time ago. The reason I waited this long is that I feared I wouldn’t have been able to provide a fair assessment of the merits of this book. My problem is that, nowadays, I get easily bored reading yet another programming book. And a book entirely dedicated to a single programming language was bound to bore me infinitely.

That’s what happened, actually. I got so bored that it took me a really long time to finish it, even after skipping entire chapters. I managed to finish it only because I forced myself to do it.

I know Ruby is cute, and has lots of nice and innovative features, but I just can’t stand anymore reading operator precedence tables, variations on the basic control structures and core libraries. Last time I got excited by a programming language was with Java, and that was circa 1995. I’m too old for that.

But I must try to stay objective and think how useful “Programming Ruby” could be to a young programmer and I have to admit the answer would be: a lot! As is customary with titles from The Pragmatic Programmers, quality is very high, both from a content point of view and from a presentation one as well. Well written, it even manages to inject a bit of humor into a dry subject. If you want a one stop shop reference for all Ruby, that’s it! Not much more to say, except that I’d have liked, at times, the code samples to be longer, more structured and less contrived, but it’s a minor nit.

I suggest that you read it in bits and pieces, not cover-to-cover and if boredom gets you, you can always get a little of why’s (poignant) guide to Ruby as an antidote.

Whatever … for Dummies

Some time ago, I used Ajax for Dummies as a post title. Not only that, I also reproduced, with some changes, the cover of a Wiley “For Dummies” book. Now I’m wondering: Will I get a slap on the wrist like Jason did?

Mr. Wiley, can I have my own little letter from your “Trademark Coordinator”, please? I will bitch and moan for a while on my weblog, just hoping to get some nice incoming links, then I will dutifully comply. I promise.

Book review: Agile Web Development with Rails

Agile Web Development with Rails, by Dave Thomas, David Heinemeier Hansson.

Book coverRails, or more appropriately Ruby on Rails is the new web application development framework that everyone is so excited of and raving about how it cuts development time by a factor of 10 and does away with the cumbersome XML configuration files that are the hallmark of J2EE.

Being an old Java hand, I wanted to see firsthand if there was some substance beneath all the hype. I was also intrigued by the fact that many other old Java hands whom I respect and admire, like James Duncan Davidson, Elliotte Rusty Harold, Bruce Tate, Graham Glass, and Brian McAllister are now fervent (to different degrees) rubyists and Rails-enthusiasts. If it weren’t for them, I would never have undertaken this journey, probably.

But anyway, this is supposed to be a book review, not a chronicle of my ongoing discovery of Rails.

I mostly like using books to discover and learn about new technologies, so it’s perfectly natural that I decided to take off with what is considered the book about Rails. And how could it be not, with Rails’ creator David Heinemeier Hansson as one of its authors?

It is also the only one published so far but, even though the choice was a bit, uhm … limited, I wasn’t disappointed. The book, as is customary with titles from The Pragmatic Programmers’ bookshelf, is very good. It lays down in detail almost everything you need to know to be productive with Rails, save for the language Ruby itself. To be honest, the book includes an appendix introducing the basics of Ruby, but it’s just the bare minimum. I suggest getting yourself a good Ruby book (like Programming Ruby, also from The Pragmatic Programmers, which I am currently reading and will review shortly) if you really want to get the most out of Rails.

Another caveat you have to be aware of is that Rails is a quickly moving target. The book covers version 0.13, which was current around mid-2005. There was a 0.14 version after that and we are now at 1.0, since a few weeks ago. However, I didn’t find I had much to change while experimenting with Rails following the book. As always with Open Source software, resorting to the mailing lists, forums or the #rubyonrails@freenode.net IRC channel is the best avenue for finding answers to your doubts and asking support questions.

The book is organized in four parts:

Part I introduces the design principles behind Rails, its most important concepts and briefly covers how to get started by installing it and writing your first program. The part about installation is the one that is bound to become quickly obsolete, as new and easier installation methods for the various supported platforms are developed.

Part II dives into Rails by guiding you along the development of a real (albeit much simplified) e-commerce application. I find this approach to be very good and “pragmatic” indeed. Of notable interest is the chapter on testing. It’s great to see that providing a good test scaffolding was one of the main design concerns in Rails and not just an afterthought.

Part III goes deeper into Rails and can be used as a reference for its components, like Active Record, Action Controller, and Action View. Bonus chapters on AJAX, Web Services, security, deployment and scaling issues are included here and will make the book even more valuable when you need to deal with “real world” applications.

Part IV contains the appendices, like the above mentioned introduction to Ruby, a reference of configuration parameters (be warned again: these might change), the full source code for all samples (of dubious value, in my opinion), and a list of online resources (once again, a list bound to be more and more incomplete as time passes and the excitement around Rails grows).

Overall, I find the quality of this book to be excellent. It’s not thick to the point of being too heavy to carry around in your laptop bag, for those times when you need to peek at it, yet it covers enough of Rails to be considered a complete and authoritative reference. This is probably a testament to Rails’ simplicity too.

The writing style is eminently readable. You can read it cover to cover, if you like, without getting bored. The frequent sidebars make it lively without being too distracting. A great amount of care and craftsmanship went into producing this book, and it shows.

Highly recommended!

Book review: “Practical Subversion”

Book CoverPractical Subversion, by Garrett Rooney, Apress

I picked up this book because, after having worked for a long time with CVS as my only source control system, I moved to Subversion and needed to acquire a deeper knowledge of it (Incidentally, you would be crazy to still use CVS now that Subversion is stable and freely available). And deep does this volume go indeed. It’s written largely from the perspective of a repository administrator or a power user wanting to extend the system and develop new applications on top of it, as the long (73 pages) chapter on Subversion APIs demonstrates.

But even if you are a developer wanting to know more about Subversion because your company or favorite Open Source project just standardized on it, you’re bound to find a good deal of useful information in it. Just don’t think to be able to understand everything is you’re totally inexperienced when it comes to source control systems. In this case, I’d suggest “Pragmatic Version Control Using Subversion” as a more accessible alternative.

The introductory chapter (A Crash Course in Subversion) and the Best Practices chapter are very good even for beginners, anyway.

The writing style is clean and linear. Typography is good, apart from the horrible font used for the headings and the table of contents.

In conclusion, I don’t think you can find anything better, either online or in print, if you really want to make the most out of Subversion, so I give it five stars. The fact that it is not an introductory text should not detract from this judgment but, as always, caveat emptor.

The Fog Creek reading list

Joel Spolsky: “The management training program we’re starting up here at Fog Creek will take about three years and will be relatively intensive. Among other things, there will be a required reading list consisting of about 75 books (we’re working on the theory here of one book every two weeks)”

Interesting book list. Personally I’ve read ten of them:

All of them are great books, so I think the same can probably be said of the others on the list.

Plus, I have The Search on order at Amazon, so I think I am well equipped to apply for the Fog Creek Software Management Training Program ;)

“Foundations of Ajax” review

1590595823.01._AA_SCMZZZZZZZ_.jpg
Foundations of Ajax, by Ryan Asleson, Nathaniel T. Schutta — Apress.

The Ajax phenomenon is quite new — even though the underlying technologies have been around for years — but in a few months it’s already become mainstream. It’s still in the early-adopters, pre-oreilly-book phase, but some books are already starting to appear. Kudos to Apress for being able to publish a quality product so early.

This is really a foundations book, as the title says. It does a good job of explaining the underpinnings of Ajax, even though the initial chapter on the history of the Internet could have been edited out without much harm. It explains very plainly and clearly the basic Ajax techniques and presents a good overview of some of the best tools available to the Ajaxan craftsman.

Being an introductory text, you can’t really blame the authors for not going too deep into the most complex technical and architectural issue. However, if you already tried doing some simple Ajax applications, there’s not much here that you haven’t probably already read somewhere else. To be honest, there’s a good number of hints, tips, and tricks and many pitfalls are dutifully pointed out, but you are left wondering whether there a more systematic approach wouldn’t have been better suited.

This is the main defect of the book, in my opinion. It feels rather disorganized at times. There just doesn’t seem to be a linear progression from the basic to the more complex issues. Some subjects are barely skimmed over whereas for others (the Venkman debuggers for instance) there’s even too much detail.

In particular, the final chapter on Ajax frameworks would have been great if it hadn’t dedicated just a few lines to each framework.

If it were not for this, I would have given “Foundations of Ajax” a five-star rating. As it stands, it’s only four.

“The Best Software Writing” review

1590595009.01._AA_SCMZZZZZZZ_.jpgThe Best Software Writing I: Selected and Introduced by Joel Spolsky

The blurb on the back cover reads:

At my own company, we instituted a policy: we only want to hire software developers who can write, and write well. Just try submitting a résumé to me with grammatical errors or a cover letter that reads like it was written by that guy who translates those instruction manuals for really cheap consumer electronics. I dare you.

I think this is a great policy. Being able to communicate well is one of the greatest and most overlooked assets to look for in good software developers. With this book, Joel Spolsky shows us some of the best examples of good writing in the field of software.

If it were just a matter of good writing style, the importance of this book would be rather limited. But its real value, besides the stylistic aspect, is the great content. Most articles are not just well written, but also very interesting, insightful or outrightly funny. Great content in a nice package.

I’ve previously referred to Paul Graham’s essay “Great Hackers”, which is one of the best. My other favorites are Ken Arnold’s “Style is Substance” and why the lucky stiff’s introduction to the Ruby language.

My only small gripe with the book is the fact that most, if not all, the material inside is already available on the net. It sure is pleasant having it all nicely collected and printed in a book, so that you can read it on the plane or at the beach, but I find it quite improbable that all good software writing can be found on the net and none in print magazines and book. Or maybe it is simply easier to obtain republishing rights for online material than it is for printed stuff? A couple of comic strips seem quite out of place, too.

Apart from these minor details, a very entertaining and stimulating read. Highly recommended.

“Pro Hibernate 3″ review

Pro Hibernate 3, by Jeff Linwood, Dave Minter (Apress)

The good stuff:

  • Clear and consistent.
  • Very few errors (spotted just a couple, minor ones).
  • Good typography.
  • The authors know their stuff, and it shows.

The not so good stuff:

At 242 pages, this book is too thin. No, let me restate it: it is way too thin. I’m not particularly fond of very thick books, but when the subject matter is complex, you simply can’t get away with a cursory glance at its intricacies. You see, at 408 pages, I still think that Hibernate in Action, though it is probably the best book on the subject, would be just great if it packed a few more pages.

The problem with Hibernate is that beneath its apparent simplicity lie a large number of difficult problems. Don’t get me wrong, I still think Hibernate is the best ORM tool out there. Unfortunately, Object-Relational Mapping is a hard problem. Solving the Object-Relational impedance mismatch in a fully transparent way is probably impossible: all proposed solutions so far are, in the end, yet another abstraction layer. And as we all know, all abstractions leak, one way or the other.

If you are just beginning to approach Hibernate and think that you will get a decent coverage of the complexities, traps and pitfalls of a tool like Hibernate in just 242 pages, you’re bound to be disappointed. Here are just a few subjects that I would have liked to see covered much more deeply:

  • HQL syntax. The official Hibernate documentation already gives some more complex samples, but their explanation is too concise. A good complement to the docs should probably clarify what you can and what you cannot do in HQL.
  • Exotic mappings.
  • Tuning and optimization.
  • Caching. What are the benefits and drawbacks of the various caching strategies and implementations?
  • Lazy loading. It is my experience that novices sooner or later will get the dreaded LazyInitializationException. What techniques can be used to avoid it?
  • Cascading rules and their effect on the lifecycle of entities.
  • Bulk loading and saving.
  • Using versioning to implement optimistic locking.
  • Others that I don’t remember at the moment.

All in all, I don’t think this is a bad book. Quite the contrary. It’s just that I think the authors could have dispensed some more of the goodness they are evidently capable of. As it stands, you will at the very minimum need to have a copy of the official Hibernate documentation, plus Hibernate in Action, on your desk, together with Pro Hibernate 3.

“The World is Flat” review

I might be treading on dangerous waters by reviewing Tom Friedman’s latest book “The World is Flat” (Farrar, Straus and Giroux, ISBN 0374292884) instead of the usual computer books. I am no economy or geopolitics expert, so I might be flamed for writing something really stupid, but after all this is my blog, so I’m allowed to say anything i like, right?

First of all, I liked the book. Not as much as “The Lexus and the Olive Tree”, which I found more varied and lively, but still I think it’s a very interesting and stimulating book.

I also do not agree with some of the critics, who pointed out that the world is still round and that there are many inequalities yet. To say so is to overlook the fact that Friedman himself admits (p.375: “Indeed, this is the point in the book where I have to make a confession: I know that the world is not flat.”) the same.

The one point where, in my opinion, Friedman downplays the risks to the flattening of the world that are brought by globalization itself, is when he talks about the impending energy crisis caused by the growing of China’s, India’s and Russia’s economy (”Too Many Toyotas”). He dedicates too little space to this problem and it is obvious that he has no real solutions to propose. But on the other hand, who has them?

As a geek and Open Source advocate, I obviously appreciate the importance given to Open Source as one of the “ten flatteners”. I would just like to object to the statement that “In 1991 […] Linus Torvalds […] posted his Linux operating system to compete with the Microsoft Windows operating system.” In 1991, Windows was at version 3.0: not much more than a graphical shell on top of MS-DOS and nowhere near complete dominance of the desktop market. We all know that Linus wrote Linux because he wanted a free Unix-like operating system to play with and Tanenbaum did not want too release Minix for free. I don’t think the existence of Windows played any role in this.

Apart from these minor critiques, I recommend “The World is Flat” to anyone wishing to understand where this world is going. You might not agree with everything that Friedman says here, but it will surely give you much food for thought.

Top 100 English-language Novels

Today’s meme is: Indicate which books from Time’s list of top 100 English-language novels from 1923 to the present you have read. Since English is not my mother tongue, I must be forgiven if my list isn’t as complete as someone else’s.

  • Animal Farm
  • The Big Sleep
  • The Catcher in the Rye
  • The Confessions of Nat Turner
  • The Crying of Lot 49
  • The French Lieutenant’s Woman
  • Gravity’s Rainbow
  • Herzog
  • Lolita
  • Lord of the Flies
  • The Lord of the Rings
  • Neuromancer
  • 1984
  • On the Road
  • Ragtime
  • Snow Crash
  • The Spy Who Came in From the Cold

Two Pynchon’s and two Orwell’s. I don’t know if that means something.

To my personal list, I would surely add “The Hitch-Hikers Guide to the Galaxy” by Douglas Adams, “High Fidelity” by Nick Hornby and something by Robert Heinlein, Tom Wolfe (”The Bonfire of Vanities”) and Tom Robbins. Not exactly classics, though, but neither “Neuromancer” nor “Snow Crash” are.

(Via Andrew)

Astroturfing on Amazon

Steve Loughran: “But wait a minute, check out those reviews. Every single one of the 5* reviewers calls it ‘ANT’, not ‘ant’, and is so full of unqualified praise you’d think this is the best contribution to Java literature ever. Yet these people have never reviewed anything else, except for some who do nothing but praise a single publisher, or cross-link to it.”

Thankfully, Amazon has put in place some methods for countering this type of behavior. If you see a “Report this” link beneath an obviously fake review, click on it and, assuming you have an account at Amazon.com, a report asking to take down the review as inappropriate will be sent to them. I guess that if enough people do this, we’ll soon see those reviews disappear.

It’s sad that a publisher like Virtualbookworm is engaging in these slimy tactics. Well, I guess they went a little too far in committing to the mission statement that is written on their homepage:

This means we are truly dedicated to the success of our authors!

Update: The saga continues. Far from being ashamed of their own behavior, those slimeballs are reaching new lows like copying the single honest and negative review they got and pasting it as if it were a review of every other Ant book on Amazon, as can be demonstrated here. Fucking spammers!

Update [Aug. 14]: Looks like Amazon took care of this, as all fake reviews (together with the only true one, unfortunately) on all books by A.T. Bell have been removed. I had also emailed Virtualbookwork.com about this and they were kind in replying promptly that is not their policy to post fake reviews and they would have investigated whether it was one of the authors. I’ll give them the benefit of doubt, even though there are other suspicious cases on Amazon yet, like books having seven or eight 5-star reviews by anonymous reviewers.

Seth’s New eBook is ready

knock.jpgSeth’s Blog: Seth’s New eBook is ready: “My new ebook is ready.

It’s called KNOCK KNOCK, Seth Godin’s Incomplete Guide to Building a Web Site That Works. It costs $9 and you can buy a copy by clicking this handy button.”

OK, Seth, I’m really tempted and $9 is nothing, but give us a sneak preview, a table of contents, a free chapter, just to overcome the psychological threshold and click that Paypal button ;).

Buy now!

The System of the World

systemoftheworldmedium.jpgI just finished reading Neal Stephenson’s The System of the World, the third and final volume of the Baroque Cycle (after Quicksilver and The Confusion). I mostly liked all three, but I won’t try to convince you to read them: at about 900 pages each, they are filled with detail, complicated plots, historical references and a bit of supernatural events. It takes a good deal of determination to go through them, especially considering the many slow and overly erudite parts.

Anyway, I’m not going to write a full review here. I can review technical books but I won’t even try to write about “real” literature, least I make too much a fool of myself in public.

I would however like to discuss some of the questions that were left lingering in my mind even after the closing of the plot. One of the questions is the same one that was asked some time ago by one of the best-known Stephenson experts, Elliotte Rusty Harold: What’s up with the gold?. Or, more precisely, what did Jack Shaftoe put inside the Pyx? Unfortunately, Elliotte apparently did never put up the page where he promised to collect people’s response to that question. I also coulnd’t find anything interesting via Google.

'Facts and Fallacies of Software Engineering' Review

Here's another short book (195 pages) that cannot be missing from a good software engineer's personal library. Robert L. Glass condenses in 55 facts and 10 fallacies — some of them well known, others more controversial — his vast knowledge of the field.
ffse.jpg

The 55 facts are subdivided into four main sections:

  1. About management
  2. About the Life Cycle
  3. About Quality
  4. About Research

The ten fallacies are instead grouped as follows:

  1. About Management
  2. About the Life Cycle
  3. About Education

This organization could provide a hint as to what sections of the book you'd better read first if you are managing programmers rather than if you're more involved in coding. But in any case, I suggest that whatever your positions, you will be better served by reading it all.

Glass, a member of the “old guard” of software engineering, having been a practitioner of the field since its very beginnings, is a bit wary of espousing the latest trends in software, like eXtreme Programming. Some of his facts and fallacies fly right in the face of some XP principles and practices. See for instance fallacy nr. 3:

Programming can and should be egoless.

How can you reconcile this with collective code ownership and pair programming?. In other instances, he shares some of XP's convictions. See for instance fact 28:

Design is a complex, iterative process. Initial design solutions are usually wrong and certainly not optimal.

In the end, no matter what development process you like best, you're bound to find some controversial statements inside this book. If this makes you think about what you're doing and how successful you're being at it, I think the book will have fulfilled its purpose. By being apparently dogmatic in its format (what sounds more dogmatic than a list of asserted “facts”?) Glass manages to teach us that what you should be avoiding mostly is indeed dogma. In the current climate, dogma typically takes the form of a new development methodology that promises to end all debates on methodology. To fight this, everyone should memorize fallacy 5:

Software needs more methodologies.

Highly recommended!

Facts and Fallacies of Software Engineering by Robert L. Glass, Addison-Wesley Professional; 1st edition (October 28, 2002), ISBN: 0321117425

“The Secrets of Consulting” review

The Secrets of Consulting
The Secrets of Consulting - A Guide to Giving & Getting Advice Successfully, Gerald M. Weinberg, Dorset House Publishing.

I picked up this book when I was thinking of becoming a full-time, free-lance consultant. Even though consulting clients will probably occupy only part of my time in the near future, I still find this book very useful.

Being a successful consultant, according to Weinberg, essentially means learning to deal with a couple of inescapable elements of every business: irrationality and change.

Consulting is hard because clients are not acting rationally. They will have a problem but will never admit it, and the problem is always a people problem, no matter how technical it might seem at first. These two facts are so well established that Weinberg labels them as The First — and respectively, The Second — Law of Consulting.

This is one of the features of the book: lots of hard-learned facts are distilled into succinct — and at times pithy — laws, principles and rules. In order to make it easy to remember them, they are given fanciful names like Rudy’s Rutabaga Rule or The Titanic Effect.

Weinberg’s advice is not to try to be rational at all costs, and don’t force clients to admit their problems and fears. Consultants should be reasonable rather rational, cultivate a paradoxical frame of mind and help clients solve their problems by themselves.

Consulting is also mainly about change: A consultant will be called in either to foster or to prevent change. Clients will typically be stuck in a troublesome situation and will need someone to jiggle them in order to become unstuck. A good consultant will need to learn how to amplify his own impact in order to act effectively on a client’s organization, which is much bigger than him and with much more inertia.

The last part of the book deals with marketing one’s own services and putting a price on one’s head. In my opinion, the best advice on this matter is The Principle of Least Regret:


Set the price so you won’t regret it either way.

This basically means that you should not set the price so low, in order to get the assignment, that you’ll regret it if you obtain it. And you should not set it so high that you’ll regret it when the client is unable to pay it. Rather, you should set it so that you’ll feel about the same whatever happens. You shouldn’t feel too bad if you’re turned down and you shouldn’t feel too bad if you’re accepted, either.

The book is highly readable, the format is entertaining and the number of useful tips per page is very high. It’s also quite short, which is a virtue. No matter what your job is, if you’re dealing with people, you should be reading it now!

What more can I say? Highly recommended.