Good points, but a very important part of being a 'good' developer is prioritizing goals based on relative impact, and ultimately Getting Things Done. 'Sharpening the axe' and programming for its own sake is great, but when it gets in the way of your overall goals, then it becomes a self-indulgent hobby.
I disagree. It's like saying crappy musicians make better music.<p>Development is means to an end. The better you know your tools the more productive you'll be. Its true with anything.
I would argue that crappy developers are more productive "initially" but in the longer term may end up with unmanageable code bases that will slow them down.<p>That being said, one can also spend so much time writing "perfect" code that it misses the shipping date entirely.<p>I guess in the end you need to balance these priorities and hope you will have time for a refactor after the product has shipped.