A few of my colleagues and I have decided to write, with Martin's permission, a Ruby version of Refactoring.
To begin with this will be a port of the existing Refactoring text. After we finish the port, we are going to look at Ruby specific refactorings. As I go through porting the text I'm going to post what I work on to my blog.
This is realy awesome news. If it's any help, I translated the code in chapter one (for each refactoring). I'd be happy to send it to you. Just drop me an email.
ReplyDeleteHi Jay,
ReplyDeleteI was wondering what's the progress on Refactoring: Ruby Edition. http://www.rubypatterns.com/ has just one chapter on it.
On a side note, what have your experiences been on deferring refactoring and accruing technical debt? As a team, we constantly keep struggling between getting stories done functionally ("do the right job") and keeping the code base clean ("do the right job the right way"). :-( How do you decide when and how much to invest in refactoring?
On another side note, Happy New Year!! :-) Keep doing the good work you do and spreading the knowledge around.
Hi Aman,
ReplyDeleteLook for an announcement (via my blog) in late January.
As far as technical debt, it's a constant struggle. I would say that if existing code is slowing you down on writing new code, and you know of a better way to do something, then you are likely in a position to do some refactoring.
However, I don't think those activities are always at odds. You may find the sum of the time spent refactoring and then implementing the feature is less than if you simply went ahead with implementing the feature. Additionally, if several upcoming stories are within a section of the application that needs some refactoring, then the refactoring can save you time when implementing each of the stories.
As long as you remember that the goal is working software, not beautiful code, I believe you will be able to balance time spent refactoring and time spent implementing features.
Happy New Year to you also.
Cheers, Jay