Agile software development

November 5th, 2006

In some sense I’ve always done agile programming. I’ve been in the Python community for a while, and a lot of agile practices are very common. I’ve done a lot unit testing (even if not really before coding but just afterwards) since the very first years as a developer.

In fact, it was even before my Cocoa and ObjectiveC studies that I learnt about patterns and how to use them. In fact patterns are well known in the ObjectiveC community even among newbie programmers, for exampl Anguish, Buck and Yacktman describes Cocoa showing which patterns are used in the framework and how their names differ from the classical GOF ones.

Of course this is not enough to say “Agile Development”: I only had some practices in common with some (most) agile developement methods. I also find quite natural to use tests and code to learn instead of documentation (that is quite common for a lot of open source libraries). What I missed was a theoretical mind-framework.

In some software engineering courses I was introduced to UP. And in fact I could not believe that some people are convinced that it could work well (I agree that you may make it work, however, I think it’s a suboptimal way to develop). It is like freezing insects in order to take pictures of them. While frozen, they stand still and are easier to photograph: however, if you want to photograph insects in the wild this just doesn’t happen to work.

Some of my concerns were also due to Java and to the quantity of code that is not part of the problem but needs to be written for the way Java works. Python leans quite naturally towards agility: the way components interact, the way you can change things and refactor (even without complex refactoring tools like Eclipse).

After some time I discovered Ruby and got in touch with the Ruby community and all the hype about agile programming.

Eventually, I decided to buy Kent Beck’s book on Extreme Programming. However, I wanted a technical book about agile programming. I bought Martin’s Agile Software Development

I love them both and I will talk about Beck’s book another time.

Agile Software Development is a very interesting book. There is plenty of information on agile techniques, and even if you are not a Java developer (which in some sense is my case, since I rarely work in Java) there are lots of interesting stuff.

You learn how to use test driven development and to think using TDD (there is a big difference between writing tests and thinking in a ‘test oriented way’). You learn how to design interfaces while writing tests, and there are examples on software evolution driven by tests.

You definitely have to read the sources (that are really readable and easy to understand): while the explanation is great, the sources would be enough by themselves.

The book also offers a clear explanation of classical principles of object oriented software design (OCP, SRP, LSP, DIP) and packaging (ADP, SDP, SAP). So, you may want to buy this book even if you are not into agile programming and are only interested in a book about Object Oriented software development.

Open Source and Free Software, Programming | Comments | Trackback

2 Responses to “Agile software development”

  1. 1Lawrence OluyedeNo Gravatar
    November 5th, 2006 @ 15:45

    Nice post. I think I’ll add the book to my Amazon Wish List :-)
    Someone recommended me “Agile Software Development Ecosystems” by Highsmith and I’m currently reading “Agile Software Development” by Cockburn

  2. 2Enrico FranchiNo Gravatar
    November 6th, 2006 @ 18:55

    As far as I can see from Amazon review, Cockburn’s book has a different focus from Martin’s. While the first is more about methodologies/management, the latter is on code. Similar to these ones I have Hunt/Subramaniam Practices of an agile developer from Pragmatic Programmers. I started reading it, but right now I’m more into Hudak’s book… oh, and of course seminal Kent Beck works (which I also read).

    In fact Martin’s book is an excellent compendium for object oriented classical principles/techniques from an agile perspective.

    However the other two ASD (ASD e ASDE) seem pretty interesting. I put them on my wishlist too, that now tends to resemble a library catalogue more than a wishlist.

Leave a Reply

  1.  
  2.  
  3.  
  4. XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
You can keep track of new comments to this post with the comments feed.

Recent Posts

Blogroll

Siti amici

Misc

Recent Comments

Categories

Enrico Franchi graduated in Maths and Computer Science and is now studying for a Computet Science MSc (though because of italian bureaucracy that very course is to be cancelled).

RiK0's Tech Temple is using WP-Gravatar