Silicon Valley Code Camp : October 5th and 6th 2013
I consider myself a pragmatic software architect – someone who finds that adaptive design appears in the friction between ideas and implementation, vision and application, abstraction and ground reality. I have found that - contrary to expectation - velocity comes from this process of emergent design. Consequently I use design patterns, TDD, the cloud and Agile methodologies as the means to develop and deploy systems.
Business always demands quicker turn around times for product delivery. And in this climate, the notion of "Design" (along with the term Architect) has become taboo. The prevailing notion is that design is "slow" with designers living in ivory towers, slowly creating power-point presentations or documents bearing little resemblance to the reality of the system.
Recent trends have moved away from this and now the approach appears to be "code first - think later". And managers like this because to them fingers moving on the keyboards is equivalent to forward motion.
However, as time goes on it has become apparent that neither of these extremes have delivered on their promise. The former leads to analysis-paralysis and the latter provides a sugar-rush of immediate delivery and a crash when the system so built neither scales nor performs.
There is another approach: one which I call the Test Driven Life Cycle which blends product modeling, design patterns and continuous testing at every stage of the life cycle to rapidly deliver frameworks, platforms and domain models that are supple, extensible and scalable.
This talk is about that methodology.