Amazon: Distributed Architecture, Distributed Teams
I love this piece on Amazon from Leading Lean Software Development, by Mary and Tom Poppendieck...“Amazon.com is all about growth. Back in the late 1990’s, when the company was getting started, it...
View ArticleIterating a Design
Some great quotes from Inside Steve's Brain:"When you start looking at a problem and think it's really simple, you don't understand how complex the problem really is,....Once you get into the...
View ArticleProject Tax
Beyond the skill of the team, the amount of time to deliver functionality is significantly influenced by a combination of:team size, the process they use,and technology they base their application...
View ArticleReek for Ruby
Kevin Rutherford's Reek is a great code analysis tool for Ruby.It's available as gem:$ gem install reek$ reek file_or_directoryMore info at http://wiki.github.com/kevinrutherford/reek/
View ArticleHTML Emails: Design like it's 1996
The guys over at mailchimp have some great tips for coding HTML email newsletters.http://www.mailchimp.com/articles/how_to_code_html_emails/Email newsletters can be a design nightmare based on the wide...
View ArticleDefinition of Done
Kent Beck is the master of abstraction, capturing the essence of complex topics in stunningly simple soundbites. I'm a commited follower of his definition of good code.Recently on the XP Programming...
View ArticleCode Coverage Metrics and TDD
I am wary of metrics as a "Done" marker. The most common is something like "code coverage must be at least 75%". That is a strange position to take:We are happy with a quarter of the entire codebase...
View ArticleAgile SOA: WSDL Generated code is not Domain Model code
Over the last 5 years I've worked with companies attempting to combine Agile software development with SOA. From the software development point of view, one of the biggest challenges I've seen is...
View ArticleNot Release Planning is flying blind
I have seen quite a few Agile projects go bad over the last few years. This has either been down to poor engineering or poor planning. The biggest problem with poor planning is with inadequate Release...
View ArticleAgile and the cost of change curve
In YAGNI and the cost of change curve we said:"With traditional "waterfall" approaches it is accepted that it gets more expensive (often much more expensive) if we make changes later in the...
View ArticleYAGNI and the cost of change curve
YAGNI is not a practice - it is just a bet. When someone says YAGNI they are betting that something is unnecessary.If we win the bet, we win lower costs and less complexity. If we lose the bet, we have...
View ArticleREST Client for Java
The other day I was looking for a decent Java REST client to let me use existing REST services. I couldn't find anything simple enough so thought I'd build my own. It's pushing YAGNI somewhat...
View ArticleAutomated Test Problems?Address the Root Problem!
I've just finished a gig helping a team get to grips with automated testing on an existing project. Most focus was on creating and running Junit based developer tests.By the end of the assignment we...
View ArticleAn Agile Architect
Agile software development approaches promote lightweight feedback focused evolutionary design techniques such as test driven development. Within that context where does the role that has become known...
View ArticleUsing Ruby’s Eval method to dynamically declare Active Record classes for a...
Active Record is useful outside of Rails as a general database access layer. This post shows how to dynamically create ActiveRecord classes for a given database schema using the eval method.When faced...
View ArticlePatterns for Automated Customer Testing with Watir (with example)
The reduced cycle times of Agile methods increases the need for Automated Customer Testing. I want my Customer Tests to be interesting for the customer. As such, I generally prefer GUI driven testing...
View Article‘Managers and Minions’ or ‘Talent and Admins’
It seems in software development, and in the general world of work there are two views of how best to structure organisations. At one end there is the ‘Managers and Minions’ view and at the other the...
View ArticleTDD and Code Quality
Micheal Feathers expressed a nice observation on the XP list:The thing that I notice, though, is that unit level TDD gives a quality improvement no matter what else we are doing. It's not the testing...
View ArticleBetter code friendly hashes in Ruby with method_missing
I've previously posted on using method_missing to make friendly hashes in ruby.Just thought I'd update it here with the ability to set values easily too.class Hash def method_missing(key, *args) return...
View ArticleCreating a "Loading" image
"Loading" images are great to show that the system is busy, especially in Ajax based sites where the browser doesn't make it clear when loading is happening. Ajaxload is a nice quick loading animated...
View Article