• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Liutauras Vilda
  • Tim Cooke
  • Jeanne Boyarsky
  • Bear Bibeault
Sheriffs:
  • Knute Snortum
  • paul wheaton
  • Devaka Cooray
Saloon Keepers:
  • Tim Moores
  • Stephan van Hulst
  • Ron McLeod
  • Piet Souris
  • Ganesh Patekar
Bartenders:
  • Tim Holloway
  • Carey Brown
  • salvin francis

Implementing Lean Software Development: coding to API

 
blacksmith
Posts: 979
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hello again,

I like Joshua Bloch's general principle of coding
as thinking in API's, intuitively it can be seen
though as going against Lean Software Development,
what do you think about this?

Kind regards,

Gian
 
author
Posts: 62
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Im' sorry Gian, I really don't understand what you mean by "coding
as thinking in API's", so this is a difficult question to answer.

Mary Poppendieck
 
Gian Franco
blacksmith
Posts: 979
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hello Mary,

I really meant thinking in terms of API design,
where the importance lies in the decomposition
into well-designed, freestanding abstractions.

I was remembering an interview where Bloch was
asked how 'thinking in terms of API' contrasts
with extreme programming.

So my question should actually be whether 'thinking in
terms of API design' contrasts with agile practices.

Kind regards,

Gian
 
Sheriff
Posts: 6920
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
That's strange.

For me, considering everything as a an API is one of the major forces which powers my agile development. Every class I create is designed to satisfy a particular need, driven by unit tests for its API and operation, with other code in the system acting as clients of its API.

This is agile in the sense that the code base consists of a collection of minimal, expressive, reliable pieces, each with clear responsibilities, which can be assembled and/or refactored in any way appropriate to the evolving needs of the business.

In the great majority of cases, the API provided by individual classes is not propagated to the exterior of an application, but it is there nonetheless. These internal APIs are continually policed by a growing body of developer tests and unit tests to make sure that they are always ready (and trustable) for reuse.

To me this approach also seems "lean" in the sense that no code is written unless it is justified by a failing test (which may be a recently added test for a missing feature), and in the way that duplication is mercilessly refactored away to eliminate waste of code and developer effort.

Did Bloch approach this from a different direction?
 
author
Posts: 14112
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
To strengthen Franks point, it is also my experience that test driven development helps focusing on the interface of a class.

I found the interview you are probably referring to at http://www.artima.com/intv/bloch.html (praise to google!). He mentions XP an the first and second page (didn't read the other pages, actually).

I don't think that doing Agile right leads to the "massive refactorings" he is speaking of. But in fact he says in the interview that he actually doesn't think that there is a big conflict between his API based approach and XP.
 
Gian Franco
blacksmith
Posts: 979
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi,

Bloch was asked how Extreme programming programming
contrasts thinking in terms of API design, his reply
was that there is not a lot of difference really,
see interview

I'm interested to see if the agile methodology is
in it's own way very close to 'thinking in terms
of API design' as well.

Gian
[ November 08, 2006: Message edited by: Gian Franco Casula ]
 
Mary Poppendieck
author
Posts: 62
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Bloch advocates in the interview:

leaving out the bells, whistles, and features you don't need and add them later, if a real need is demonstrated. And that's incredibly important,



In our book we suggest that the biggest waste of software development is adding features that are not needed now.

Bloch also says:

you'll have less work to do if you design the intermodular boundaries carefully to begin with.



We recommend that a high level systems design (or architecture) is the starting point for a brilliant product design. There is a delicate balance between too much detail and the right initial systems vision. Experts in any domain will know the difference. I don't think there is any process that can substitute for such expertise.

Mary Poppendieck
 
It's a beautiful day in this neighborhood - Fred Rogers. Tiny ad:
Enterprise-grade Excel API for Java
https://products.aspose.com/cells/java
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!