Posts Tagged ‘excellent’

Book: Domain Driven Design

octobre 1, 2010 1 commentaire

When I first started to work, I knew I was doing crap. Yep, really. We were using old stuff, copy/pasting heavily, editing config files by hand before deploying in production and so on. However, knowing you do crap doesn’t help you doing right, even if you had the occasion.

As time went by, however, I was lucky enough to work with real Software Developers, craftsmen as we would say today, learning a lot on the way.

Yet, even these bright guys were sometimes uneasy. Not on technical stuff, not on infrastructure, but, well, you know, on the classes and the like you’ve to do for your customer. How shall we split the different parts of the requirements? What should be top level code or just « code that works », intended not to be touched more afterwards. To which extend shall we integrate what’s the business requires, or shall we adapt it a bit to our stuff ?

Yet, these foggy stuff are the value of an application. Customers don’t care too much about how nice your XML described UI is. Nor does he care too much about maven and the like. He cares about these (often messy) code doing what he asked for. The code which enables dealership to get their good in time. The code which triggers automatically some buy on some mutual funds. The code which allows to display the breaking news. The user’s code. And on top of that, whatever the nice technical layers around, if the users’ domain is badly understood and/or translated into code, then it’ll be a mess and massive pain to work with.

Domain Driven Design is all about this code which actually is, or at least should be, the heart of your application. This « domain » code is where the real value is. Ṫhe book makes the obvious visible again: the domain, the users’ stuff, is what matters. Even better, the books describes plenty of means to handle this part of your application, from quite low lever to high ones. How to handle large domain. How to refactor towards greater insight (a chapter title actually). It even has a chapter called Strategic Design, speaking about how to handle these different domains which always coexist, and how to make the best of them. Most important of all, the books is all about the UBIQUITOUS LANGUAGE.

The uppercase is not mistake: the UBIQUITOUS LANGUAGE is what allows users and developers to understand each other effectively and over time. It matters. The UBIQUITOUS LANGUAGE deserves its uppercase. And by doing so constantly in the book, with the core concepts, Eric Evans makes it obvious what matters or not. After reading the book all these big uppercase words will stick to your mind with ease. ANTI CORRUPTION LAYER. REPOSITORIES. BOUNDED CONTEXT. They’re all still there 🙂

To tell more about the UBIQUITOUS LANGUAGE, it’s the language used to describe the domain, both by the users and the developers. It is should be reflected in the code. And, of the highest importance, is should evolve with the comprehension of the needs. This is the domain. This is the added value of your work. Eric Evans takes care of showing ways to handle this UBIQUITOUS LANGUAGE and make it pervasive and effective. His examples are clearly first hand ones, which smell and look like what you could expect tomorrow (or on Monday rather lol). No big word on SOA or Agile Manifesto. No, just how to make your users needs properly fulfilled. On top of that, the author speaks of organization at the code level and higher ones (like what to do with big blobs of codes or legacy systems). This uncommon « elevation » is very nice and helpful. Speaking of more than the GOF patterns as a way to make your code base intelligible is very nice. In fact, the book’s title second part « Tackling Complexity in the Heart of Software », is true and right to the topic.

I guess you got it, I liked this book. It makes you think and ponder often, on your current practices and on « industry wide » ones. Like the habit of affecting the best developers to the infrastructure teams. Common isn’t it ? These top notch guys can then develop some stack able to solve both desktops and web needs, transparently and recursively. Sounds all good, but is this what your users want ? They want their needs fulfilled, they want their reality to be tackled. And whatever your bells and whistles, if you can’t move stuff Y to point 1243, it’s no help.

Well, I fear I’m too verbose. By the way, the book is quite verbose as well. More than 500 pages and extensive texts. Reading it took quite some time, even if I liked it. It was just big, both in volume of text and on impact of its content. But it didn’t go in the way, apart that at the end I was wondering about stuff explain at the beginning. But then, no big deal: for sure I’ll read it again.

To kind of conclude, this book is the last bit of theory I was missing towards making great software, in the long run, in a sustainable way, for the users. It has already changed the way I approach design and it looks like my users felt and liked it already.

I already said too much: I’m off !


Étiquettes : , , , ,

Must read : The unspoken truth about managing geeks

février 19, 2010 Laisser un commentaire

Thanks to Nathan on coderspiel, I stumbled upon this excellent article : Opinion: The unspoken truth about managing geeks.

So true !


Étiquettes : , ,

Book: Don’t make me think

janvier 28, 2010 Laisser un commentaire

I had already read some books on usability. The last one had about 400 pages and lots of texts. It laid out 10 (or 12) rules regarding usability. I can’t even remember one !

On the other hand, Steve Krug’s Don’t make me think is still deeply in my mind. Not only the author applied usability to his book (about 200 pages, very easy to read with drawings right to the point), but, even better, what he wrote is enlightening.

First, Steve Krug introduces the « guiding principles », all evolving around his First Law of Usability : Don’t make me think. Simply put, the aim is to remove all questions, even unconscious ones, when browsing the web. All these littles inconveniences or inconsistencies which go in the way must disappear. And Steve Krug presents this with way more skills and drawings than I do, making it really impressive and long lasting.

He goes on speaking on the way we use the web (scanning, not reading), than that we should « Omit needless words ».

These first chapters are still vivid in my mind. They come with very relevant examples that we’ve all seen before, and thus that we’ll see again in the future, bringing back the good stuff of this book.

Then, Steve Krug goes on a more general level : why/how to avoid these endless discussions about « mine design is better than yours », how to do « real size » usability tests (and not the ones requiring huge resources/teams/testers/rooms/… as was put in this previous book!) and how to deal with Pointy-Haired Bosses. Less crazy than the first chapters, but really helpful.

Overall, this book really helped me. I now have quite a tool set (and mindset) to deal with usability questions. To put it shortly, I feel now empowered on this topic, quite a change from my previous readings.

To conclude, if usability is remotely some of your concern (and you don’t know it all already), read this book !


More details on Advance Common Sense.
Review written first on codesmell.

Étiquettes : , , ,

Book: Scrum and Xp from the Trenches

octobre 7, 2009 Laisser un commentaire

At work, we’re currently reviewing our Agile process. So I thought it was a nice occasion to read again Scrum and Xp from the trenches, esp. since we have a paper edition of it.

Simply put, this book is why I started to be so much interested in Agile software development : the process it described is really compelling. The author hardly presents what is an Agile process (from a theoretical point of view), rather it dives immediately on how they did it. Still, he provides the different choices they faced and explains why they went for such or such solutions, all in order to accomplish the various “agile steps” which are to be done. It really enlightens the reader, helping to grasp properly what it’s all about. Furthermore, it gives ground to the author’s claim that it’s just how they did it : one gets easily that’s adaptation is the key, that Agility is not a stone graved process. This helps to consider it’s own environment with a fresh eye.

At the end of the book, I had the feeling I had a proper overview of the whole process, on how these teams worked. Added to the explanations on why they choose such solutions, it makes it all reasonable, sound and efficient. Attractive and, hosnestly, a real breakthrough compared to all these RUP, ITIL and others crappy acronyms. What else could we expect from a process ? It actually seemed like helping and being efficient ! Crazy ! The only question I had left was “when can I start ?” (which is part of the reason I moved to Thomas Daily by the way lol).

In retrospective, now that I’ve been working in a Agile shop for now 7 months, the book didn’t answer all the questions I had since. Furthermore, more theoretical books have helped me really grasp why such a process was working, that it was all about the empiric nature of each IT project. Still, when coming back to this book, it was once again compelling. Going through the experience and writing of Henrik Knibberg has helped me once again, spotting points where we didn’t get it all.

As such, I really advice this book (which comes as well as a free ebook, both having been updated since publication) for all people interested in getting Agile, how it works, what it provides or even to improve one’s own way of applying it. So don’t hesitate : read it !


Side note : Henrik speaks of other “from the trenches” stories in his book. I never found any, so if anyone knows some other, I’m interested !

More details on infoQ.
Review written first on codesmell.

Étiquettes : , , ,

Book review : Effective Java, 2nd edition

août 9, 2009 1 commentaire

I bought Effective Java 2nd edition last year. I loved it immediately, and since I’m frequently reading bits of it again. I even think I should read it all over another time.

Indeed, Joshua Bloch items are more than just « do this, do that » : he takes care of explaining them in great depth. It allows the reader to ponder both the advantages and drawback of all these items, but even more important it gives real good insight of the Java language (and object oriented languages in general).

Still, it’s a very pleasant read, far from pedantry. He explains everything with clarity and efficiency, whatever the topic and complexity. And that’s something : I was just amazed by this guy knowledge of so many different fields in Java : he writes not only about object oriented design, like « Prefer class hierarchies to tagged classes », but good as well into complex matters like Concurrency or Serialization (see the TOC here to see the full extent of it). It’s funny to realize how we (uwe and I) have been using AtomicInteger as singleton since we read this book. Similarly, when looking back at the Serialization chapter recently (after some Serialization related issue and questions), I was struck by elements I hadn’t properly understood before, like the readResolve() method when dealing singleton. It shows, if needed, that’s really a book worth reading more than once, in order to get all the depth of it.

To conclude, this book is really a must read for all Java developers : if you don’t have it yet, rush for it 😉

Étiquettes : , ,

Livre : Effective Java, 2nd edition

Comment dire… Pour faire simple, pour moi, ce livre devrait être obligatoire pour tous les développeurs Java. Rien de plus, rien de moins, simple non ?

Au lieu des habituels « comment faire une boucle », l’auteur y aborde comment utiliser au mieux les différents éléments constituant le langage Java, en justifiant et expliquant le tout, permettant au lecteur de bénéficier de son ample connaissance du langage. Le sommaire donne d’ailleurs une bonne idée de l’ampleur des thèmes abordés.

Pour ma part, cela m’a vraiment donné une meilleure vision du langage et des problématiques objet en général. On comprend dès lors mieux les forces et faiblesses, tout en ayant ce qu’il faut pour en tirer le maximum.

Ainsi, pour peu que vous vous posiez des questions en codant, ce livre se dévore et permet vraiment un approfondissement du langage. Personnellement, j’en suis à ma deuxième lecture…

Enfin, en écrivant cette critique, je me suis rendu compte que des pointures tels James Gosling ou Heinz M. Kabutz (de Java Specialists) partageaient pleinement mon opinion.
Pour conclure : foncez l’acheter !

Plus de détails sur JavaBook.
Première parution de cette critique sur

Étiquettes : , , ,
%d blogueurs aiment cette page :