Last week wasn't a very good week. The rate of work that I did vs. the work that I expected to do was very low. Basically, I should have done all that work in about a day or two.
Most of the issue was because I had no time in the zone this week, meeting, pairing on other people's code, etc have taken a lot of little pieces, but the main issue was that I kept going in the wrong direction. I needed to implement something similar to Outlook's rules, but for search, where you can add more criteria for your search, and the user can specify and/or condition, etc.
And all my solutions where of increasing complexity. So far, I worked on the same feature for about the estimated time that I given it, but it is not complete by any mean. I finally decided that I am not going to take this kind of cheek from my code and deleted it. Then I started from scratch, I run into some of the same problem, but now my goal was to make it stupid. Not make it work, just make it stupid enough to look like it would work.
That approach have worked, surprisingly. I got the first big piece of it working (the and / or with UI and client/server interactions) in about three hours, and the rest was fairly smooth sailing from there.
I keep telling my team members, if you are on something more than 15 minutes, either call someone or move to something else. I really should start listening to myself, occasionally I actually says something that I ought to do.
Anyway, I think that I covered in about a day the entire feature, and I now can extend it to the next feature with great ease.