Wednesday, May 24, 2006

Book Review: UML Distilled

UML Distilled: A brief guide to the standard object modelling language
(3rd Edition)
by Martin Fowler

UML Distilled is good. It is written carefully and concisely and has been heavily revised to cover UML 2. It is a opinionated book - it presents Martin Fowler's view of UML. This is a good thing. Fowler concentrates on the parts of UML that he has found widely used in the industry, and the most useful in his own work. Fowler is not bound by the UML specification, he also describes "non-normative" diagrams (ie, variations on UML which are not standard but widely used). Fowler often provides his own view on a particular diagram or component. For example, I've often wondered when to use aggregation rather than association in a class diagram. Fowler cleared this up for me:

"Aggregation is strictly meaningless; as a result, I recommend that you ignore it in your own diagrams. If you see it in other people's diagrams, you'll need to dig deeper to find out what they mean by it. Different authors and teams use it for very different purposes."

UML Distilled starts with an introduction about UML's history and aims, and then a rapid look at different development methodologies and where to fit UML into them.

The core of the book covers the following diagrams/specs:

Class Diagrams
Sequence Diagrams
Object Diagrams
Package Diagrams
Deployment Diagrams
Use Cases
State Machine Diagrams
Activity Diagrams
Communication Diagrams
Composite Structures
Component Diagrams
Collaborations
Interaction Overview Diagrams
Timing Diagrams

Class diagrams and sequence diagrams are covered in detail, the other diagrams more briefly. The book is quite short, but gives enough information on each topic to allow you to understand and draw the diagrams. At the end of each chapter, there is a helpful "where to find out more" section and a "when to use this type of diagram" section.

There is also an appendix at the end of the book on changes between various versions of UML.

The book is surprisingly easy to read. Fowler's style is clear and friendly and examples are well chosen.

My only complaint is that perhaps the book could have been a little longer to allow a bit more detail on some of the diagram types. I would have liked to have read a little bit more on object diagrams in particular.

I'd recommend the book to anyone who wants a rapid and concise introduction to or revision of UML 2.

Rating: 9/10

Sunday, May 21, 2006

Happiness

A few weeks ago, I read an interesting article in the Sydney Morning Herald about happiness and also listened to a talk by the abbess of the Nan Tien Buddhist temple near Wollongong. These have merged together in my mind as they covered a lot of the same ground. I'm going to summarise the points that seemed important to me, and also include my own take on some of the ideas.

A mental approach
* If you're happy, and your emotions are generally well balanced, you enjoy life more, other people enjoy your company more, and you're more productive.
* Happiness is only in the mind.
* In your life, there's a lot of things that happen to you. Some of these improve your life and some of them negatively effect you.
There's a lot of chance involved that you can't control.
* Therefore, if you want to be happy, you can't rely on external events to make you happy.
* However, your mind is your own, and it is the organ through which you interpret everything.
* Since you are in control of your mind, you are in control of your interpretation of the events that happen to you.
* Therefore, by actively shaping your own interpretation and view of the events that happen to you in your life, you can choose to achieve happiness.

Completing goals
Completing goals makes you feel good.. for a little while. But there is always more to achieve. This means that you spend almost all your time trying to achieve, and the actual time after achieving is in fact very short before you need to rush on to the next task. Therefore, you've got to enjoy the path, not just the goal. Thus, see the mental approach above.

Ways that don't work
* Achieving happiness through possessing things never works. No matter how much you have, you always get used to that amount, and want more. This means you're always seeking, and the achievement is almost an anti-climax.
* No use comparing yourself with others to feel superior. Even if you are the "best" in your circle of acquaintances, it won't be long before you find someone who is "better". They'll always be people who are richer, faster, smarter or better than you in a particular area, so this approach will only lead to disappointment.

Other Thoughts
Since happiness is only in the mind, the reality of your situation is completely irrelevant. If you feel like you are in control of your life, you think you are achieving your goals and you think you are doing well, then you are.

Book Review: My Job Went to India, 52 Ways to Save Your Job

Full Title: My Job Went to India (And All I Got Was This Lousy Book), 52 Ways to Save your Job

Author: Chad Fowler of the Pragmatic Programmers

185 pages, Paperback

An interesting book written by Chad Fowler, who spent 1.5 years in India hiring and managing an outsourced team of developers. The book's main focus is on how you can make yourself as, a developer, more valuable to your company / community so that your job is not outsourced. There are quite a lot of valuable and interesting ideas in the book for professional development, and "getting your name out there". The book also gives the reader some idea of what development is like in India, some tips and the pluses and minuses of outsourcing.

The style of the book is conversational, and easy to read. I finished it in 2 days. I'd recommend it to developers wondering about outsourcing and looking for some tips on professional development.

Rating: 8/10