In almost all cases, IвЂ™m opposed to setting aside time for refactoring. In my view refactoring is not an activity you set aside time to do. Refactoring is something you do all the time in little bursts.
Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly.
It is impossible not to notice Ruby on Rails. It has had a huge effect both in
and outside the Ruby community... Rails has become a standard to which even
well-established tools are comparing themselves to.
Why is composing symphonies tough? I don't know. It's just very few people in the world can do it well. And I think that's the case with upfront design. It is very hard to do well.
One of the things I've been trying to do is look for simpler or rules underpinning good or bad design. I think one of the most valuable rules is avoid duplication. "Once and only once" is the Extreme Programming phrase.
When you actually sit down to write some code, you learn things that you didn't get from thinking about them in modeling terms...there is a feedback process there that you can only really get at from executing some things and seeing what works