I didn't mean to start a big discussion so I'm not ready to state or develop my vision right now fully and logically⦠But let's try to start little-by-little. Considering Pharo as an example⦠there are few minor issues like lack of some code-producing features in debugger⦠the one I can remember right now is lack of code formatting there, but there are few more. Fixing such issues would be a first step towards TDD-oriented environment. Next steps would be about some more serious improvements: Test Runner improvements, auto-test running (it's already is implemented I think?), test annotations (expressing ideas behind every tests, relations between them, etc.), better test navigation and, perhaps, a "TDD-oriented" browser. Then, there should be introspection tools that for example silently save all the history and allow to review, analyze the development process regarding the idea-test-implementation triplets⦠â¦Sure, I rather have a "feeling" of the TDD-oriented environment then a good proposal right now. The feeling grows to something almost reasonable when I code, but I didn't have such chance for few months already, so I'm kinda caught off base :) -- Best regards, Dennis Schetinin 2013/6/6 Frank Shearar <frank.shearar@gmail.com>
On 6 June 2013 14:44, Dennis Schetinin <chaetal@gmail.com> wrote:
TDD is not about tests (as a bug-finding/debugger tool) at all. And the anti-regression feature of TDD is just the secondary one.
First of all, TDD is about structuring thinking/creation process. And "test" here is a tool that allows and makes developer to formalize requirements and to translate them to the language they will be implemented in. This starts and really drives coding. Thus, a programmer that really masters TDD (really means an ability to apply "pure" TDD for all programming activities: both top-down and bottom-up design activities) is expected to produce much better architecture/design/code.
⦠So, I don't think TDD is somehow obsolete by Smalltalk. Vice versa, TDD should be really efficient here. And it's a great pity TDD is not actually popular in Smalltalk society. One of the dire consequences is that modern Smalltalk environments are not "TDD-oriented" and don't advantage from good TDD methodology.
Why do you think Smalltalk environments aren't "TDD oriented"? What would an IDE need to be TDD oriented? (I can think of something like Ruby's guard, which runs tests every time you save a file.)
frank