FAC6 / FAC7

5 stars 2 forks source link

Week 2 - TDD #5

Open jackcarlisle opened 8 years ago

sohilpandya commented 8 years ago

@Joshua-Ronan-Phillips @sohilpandya we think it should be week 1.

WEEK 1 -

katpas commented 8 years ago

@hdrdavies

thegsi commented 8 years ago

@katkelemen @thegsi

rug1 commented 8 years ago

Frontend testing - simpler workshop than stopwatch, maybe write tests for simple maths functions that people can already visualise what will be the output.

Conorc1000 commented 8 years ago

Conor and Matt

jackcarlisle commented 8 years ago

@Jbarget + @jackcarlisle

Day 1: Intro into TDD

Day 2: Workshop -TDD Building a simple program using Q Unit

Day 3: Workshop - Asynchronous in more detail

sohilpandya commented 8 years ago

@mantagen @Joshua-Ronan-Phillips @Conorc1000 @rug1 @naazy

WEEK 1.

TDD and introduction to methods/functional programming.

katpas commented 8 years ago

@jackcarlisle @Jbarget @hdrdavies @katpas

rug1 commented 8 years ago

Agreed by all of FAC6

Week 2 Structure

Day 1 - Intro to TDD (as Jack and Justen have suggested above). Learning objectives. Day 2 - Workshop on writing and passing simple functions using qunit. Showing what ping pong is. Project - Stopwatch project. Tests need to pass. Good CSS on stopwatch.

Morning challenges - array methods and functional programming introduction.

nelsonic commented 8 years ago

@rug1 simpler TDD Project, simple maths function ... https://github.com/dwyl/learn-tdd#scenario-vending-machine-change-calculator-micro-project ?

sohilpandya commented 8 years ago

@nelsonic we will be using the simple vending machine one as part of a workshop on monday.

iteles commented 8 years ago

@sohilpandya The only comment I made before the planning started yesterday was that if we don't introduce TDD in week 1, week 2 is already too late in my experience, it gets put to one side as 'too much work' after the week it's brought in.

iteles commented 8 years ago

On the readme, I would suggest that teaching people the mechanics of TDD before actually explaining what TDD is (down as day 2 in your suggested timetable) goes against what FAC6 discussed multiple times in the stop go continue - when the readme days provide context, they should be on the Monday. (Conversely, when the workshop days provide a more guided understanding, they should be on the Monday - but that's not the case here).

And a question: Are you still planning on using the dwyl TDD tutorials as we used for FAC6? Do they need to be iterated on (I know you were simplifying Natalia's Git tutorial for week 1 for example)?

rjmk commented 8 years ago

@iteles I'm not sure we can really say that 'week 2 is too late in [our] experience' seeing as far as I can tell there has never been a successful inculcation of TDD on any FAC! On FAC 5 there was a bit of BDT (Badge Driven Testing) but not a whit of Test Driven Development. There was also quite a bit of harmful mocking and general weirdness in pursuit of coverage badges.

And it doesn't look like FAC6 are doing much testing

sohilpandya commented 8 years ago

@iteles Regarding TDD being week 1, the consensus in the room was that we were overwhelmed with week 1 as it was, but we still think TDD is a must, so we have made the whole of week 2 focused around TDD, and shifted rest of the course back a week. we are hoping that this will get TDD ingrained into how they work. :smile:

nelsonic commented 8 years ago

@rjmk totally agree that "Badge Driven Testing" is probably not the best idea (at least until people _understand why_ they are testing their code...) ... harmful mocking indeed ... :disappointed:

Yes, we do not have much experience with TDD in FAC because FAC3 did zero unit/functional/acceptance testing during their course, FAC4 barely did any testing and some of FAC5 did not embrace the idea of testing their work because they did not feel the pain of not having tests.

But, in our professional experience, once a team/project is launched without tests its rare to adopt the TDD discipline because there is never "enough time" to write tests retrospectively for existing code ... and as a result most people "out there" don't test their work ... :sob:

Ask @ronanyeah @benjaminlees or @adamdiy who have gone out into the industry and seen/felt the pain of working on projects without tests ... maybe @ronanyeah should come in and tell FAC7 how much of his life has been wasted trying to build on code without tests.

rjmk commented 8 years ago

@nelsonic If the concern is that people will not retroactively test their code, that doesn't seem to give much reason to introduce TDD in week 1. We start a new project every week anyway!

nelsonic commented 8 years ago

@rjmk the concern is based on the painful experience of working with (too many) people who refused to write tests on the grounds that it "takes longer" and then leave the team/company with a shoddy codebase ... cowboy developer

Similar to documentation unless its captured in a Readme while the work is being done, it will rarely be done retrospectively ...

rjmk commented 8 years ago

@nelsonic Good examples re: readmes! :laughing:

Re: testing, I think I'm misunderstanding the concern. It sounds something like

if we don't teach testing in the first week, no one will learn TDD because many people refuse to write tests because it "takes longer"

but that doesn't sound like I'm getting your gist.

I'm not saying that it's not true that TDD needs to be taught in the first week. I'm just saying that the evidence we have from previous FACs doesn't really have much to say about whether that's true or not.

Obviously you have a lot of other relevant experiences and I recognise that I am speaking from a position of relative ignorance. I would still like to see why the first week of FAC is a special opportunity for teaching TDD.

nelsonic commented 8 years ago

@rjmk === Test Coverage :heart: