Archive for the 'books' Category

Page 2 of 2

'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

(0)

“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.

(1)

The Third Law of Marketing

The Secrets of Consulting
These days, I'm reading Gerald M. Weinberg's The Secrets of Consulting. Basically, I ordered it when I was seriously thinking about becoming a free-lance consultant, but even if this won't probably happen anytime soon, there are still lots of gems in this little red book.

One of those is “The Third Law of Marketing”:

Spend at least one day at week getting exposure.

In 1985, when the book was written, there were no blogs, not even the Web. But today, for a consultant or a professional, what better way too get exposure than keeping a blog?

Keep this in mind next time you feel you're wasting too much time blogging (which of course entails reading lots of other blogs). If you're not spending at least one day per week doing it, you aren't doing it enough.

(0)

'Joel on Software' review

book coverJoel on Software, by Joel Spolsky.

This book by the well-known software developer, entrepreneur and blogger Joel Spolsky is a comprehensive collection of the most interesting articles that have appeared on the Joel on Software website in the course of the last five years.

If you're a devote follower of Joel, like me, there's almost nothing here that you haven't probably already read online. Still, it can be useful to have all this content nicely reorganized and reprinted. As Joel puts it, the book is a heck of a lot more cohesive than the website, where by cohesive I mean «can be read in the bathtub without fear of electrocution.» At the very least, it can be a nice present from a developer to his/her manager, who might get a couple of clues they're still missing.

Inside here, there's plenty of clues indeed and Joel will be very happy to share them with his readers, drawing from his experience as developer, program manager at Microsoft, software entrepreneur and Israeli paratrooper.

Not everything here has to do with technical matters, but you'll also find something about the economy, managing people, business strategy and insulating pipes. This makes for a pleasant and varied reading, particularly if your ambitions go beyond being a good developer. In any case, you can count on the first third of the book to give you plenty of advice in this respect, while the second third deals with managing developers. The third part is a semi-random collection of topics, the majority of which deal with strategy. At the end of the book, you can find three articles on .NET and an appendix with questions and answers taken from the website.

Joel's basic approach can be described as very down-to-earth, beware-of-hype, no-silver-bullet philosophy. This is not to say that what he writes is bland and clichéd. Quite the contrary. He does not refrain from being original and even controversial at times, at the risk of being unpopular in denouncing the excess hype that sometimes surrounds topics like eXtreme Programming or Open Source, or attacking entrenched myths like network transparency or software reuse.

In any case, he his always witty, sometimes downright humorous and never haughty.

Highly recommended!

(0)

So you want to manage software projects?

If your job is managing programmers and software development projects, being a program manager or a team leader, there are some books that are considered classics of the genre. I've put together a brief list of the ones I've been reading recently and I plan to post a brief review of each one in the coming days. Stay tuned if you're interested.

(0)

Author Hunter S. Thompson Kills Himself

CaricatureAuthor Hunter S. Thompson Kills Himself: “DENVER (Reuters) – Hunter S. Thompson, who pioneered 'gonzo' journalism and became a counterculture celebrity with works such as 'Fear and Loathing in Las Vegas,' fatally shot himself at his Colorado home on Sunday night, police said. He was 67.”

(Via Reuters: Top News.)

(1)

'User Stories Applied' Review

User Stories AppliedUser Stories Applied : For Agile Software Development (Addison-Wesley Signature Series)
by Mike Cohn

Writing user stories is one of the twelve practices of the XP software development methodology. User stories summarily describe features of the software that must be developed, from the point of view of the user. This means that no implementation detail is present on stories.

As with all the XP practices, the emphasis is on traveling light, producing only those artifacts that are absolutely necessary. Thus, user stories contain a brief description of the feature as a reminder, to the developers and to the customer, that sometime in the future they will need to meet and flesh out the details. This is in contrast to techniques like use cases, which might seem similar but are much more formal and rich.

User stories also play a fundamental role in the planning game, one of the other XP practices. During the planning game, the development team and the customer together discuss the stories, the developers estimate the time necessary to implement each story, in terms of story points and the customer prioritizes them. During the next iteration, developers will implement those stories that the customer deemed more urgent, up to a number whose total sum of points does not exceed the estimated team velocity.

All of this is explained in a couple of the XP series books, namely Extreme Programming Explained: Embrace Change and Planning Extreme Programming You'd better have already read at least the former of those before picking up Mike Cohn's book.

User Stories Applied does a good job explaining in detail what user stories are, what goes into them —and what doesn't —, how they should be estimated and what to do with them after the stories have been implemented.

There's a lot of good sense advice in this book, which might induce someone to think that user stories and all other XP practices are just a bunch of generic suggestions that you might apply or not, as you wish. That's certainly not true, as XP is a methodology whose effectiveness lies in the combined action of all the practices when they are taken to the limit. This takes determination and discipline and, in my experience, it's just too easy to fall into the habit of following only some of them, say when you're not under deadline pressure, and still pretend that you're an XP shop.

I would have liked more real-life stories in this book, in order to spice it up a little. As it is, everything that is there sounds highly reasonable (at least to me) but it wouldn't convince anyone who is skeptic of XP's supposed benefits. The example at the end of the book sounds contrived and hollow.

On the other hand, if you have been already convinced by Kent Beck's white book and want to start adopting XP, I can heartily recommend Mike Cohn's book. Recommended!.

(0)

Shooting Digital

Book cover
Just finisehd reading Shooting Digital: Pro Tips for Taking Great Pictures with Your Digital Camera by Mikkel Aaland.

Nice book, full of very interesting tips for taking the best digital shots. I should really start to put them to good use by going around more with my new Panasonic Lumix DMC-FZ20.

panasonic_dmcfz20.gif
The problem is that this time of the year, in this part of the world, the weather is either foggy or completely overcast and it’s not easy finding a good subject. Well, at least not along the road from home to office and back.

(0)

Hibernate in Action Review

bauer_cover150.jpgHibernate in Action by Christian Bauer and Gavin King, Manning Publications.

Hibernate is arguably one of the most interesting and useful Open Source projects around. If you develop enterprise Java applications that have to do with a relational database (and which one doesn’t?), then you should seriously consider using an Object/Relational Mapping (ORM for short) tool as an alternative to straight JDBC, in particular if you have a rich domain model and you’d like to exploit the object-oriented features of the language, like polymorphism, and core libraries like the Collections API.

This book comes straight from the source. Gavin is actually the founder of the project and Christian is one of the most prominent developers. It is not surprising, therefore, that the book explains some of the design decisions that have shaped Hibernate into what it is now, like using runtime bytecode generation in preference to source code generation or post-compilation bytecode manipulation.

Hibernate is not easy to learn and use proficiently if you’re not prepared to study it thouroughly and this book does a good job of explaining tricky subjects like the persistent objects’ lifecycle, exotic mappings, transactions and so on. However, it would be quite hard to use it as a single reference source while working with Hibernate. You should be prepared to refer constantly to the reference documentation, the API docs and the huge knowledge base available through the online forums.

At a little more than 400 pages, it is not a particularly thin book, yet I would have appreciated a more systematic treatment of the APIs and the different types of mappings, with more code samples. As it is, you’ll find it a very useful and interesting book if you’re about to start a new project and want to know whether Hibernate is the right solution to your persistence problems. If you’re a developer interested in using Hibernate, I suggest giving it as a present to your technical mamanger or team leader. In this case, I’d give it five stars

On the other hand, if you’re already experienced with Hibernate, it is much less useful but nonetheless very iteresting and well-written, so I’d give it four stars.

Average evaluation: 4.5 out of 5.

(0)

Hibernate in Action

bauer_cover150.jpg
I’m currently reading Hibernate in Action by Christian Bauer and Gavin King. Having read the first five chapter so far, I’m pretty much impressed by the thourough treatment that is given to the rationale behind using an ORM tool and Hibernate in particular. The chapter on transactions is very illuminating.

I hope to post a comprehensive review once I have finished reading it.

(0)