James Shore, Llewellyn Falco, and Rebecca Wirfs-Brock on TDD and Architecture
In this week's podcast Richard Seroter talks to James Shore, author of The Art of Agile Development and one of the original signatories of the Agile Manifesto. Also on the podcast are Llewellyn Falco, creator of the open source testing tool ApprovalTests and co-founder of Teaching Kids Programming, and Rebecca Wirfs-Brock, inventor of Responsibility-Driven Design, as well as the author of books including Designing Object: Oriented Software and Object Design: Roles, Responsibilities and Collaborations.
- A lot of people know how to do TDD and refactoring for the back end, but not for the font, but the basics are the same.
- The basics of Test-Driven Development are the same for the front or back end.
- If you don't know what's wrong, you don't know how to fix it.
- The most common code smells, according to Llewellyn Falco: Clutter, long lines, long methods, duplication, and inconsistency.
- How do we make, in an agile way, the architectural work visible, and not ignore it?
- How do you have an incremental architecture and get measurements? If I say to you I'm going to go away for six months and figure it out, that's not very measurable.
James Shore | Agile Engineering for the Web
- 1m:10s - The talk 'Agile Engineering for the Web' was about how do you bring typical Agile engineering ideas like TDD and refactoring to the front-end languages.
- 1m:33s - A lot of people know how to do these things on the back-end, but when you get to the front end a lot of people just throw up their hands.
- 2m:24s - I see CSS bugs all the time, because it's very hard to refactor CSS without breaking something.
James Shore | Integrating Tools in your Test Cycle
- 3m:48s - [Karma] allows you to write tests that are shipped over the network to the browser, run in the browser so you can see and validate your results.
- 4m:14s - The basics of Test-Driven Development are the same for the front or back end. Regardless of where you are, you are going to be doing the same thing.
- 4m:40s - Something that distinguishes experts from people new to TDD is experts are capable of going smaller with their tests, a skill that takes time to develop.
- 5m:15s - I find that when I'm doing TDD in these small steps the amount of things that I've changed are so small that I can look at the code and see it almost instantly.
- 5m:55s - In a high-performance team that knows what they're doing they will have the ability to run everything on their local development environment. When you're doing TDD you need to get feedback on whether the last lines of code written are doing what you thought they were going to do.
- 6m:20s - There is a need for more intensive testing, I will frequently run my tests and get them to tell me in less than five seconds while testing against five to 10 browsers on my local development machine.
Llewellyn Falco | Touch Events
- 7m:18s - In order to test touch events you have to create simulated events and feed them to the browser, but the parameters are in different orders depending on which browser you are on
- 7m:55s - Once you know how to do something it's easy, and that's true for pretty much everything with TDD. In a new domain it can be difficult to figure out.
Llewellyn Falco | Teaching 'Style' and Kathy Sierra
- 12m:09s - Kathy Sierra, who wrote the Head First series, looked at a way of teaching people how to recognise things with their subconscious brain.
- 12m:30s - People have a good sense of what is a good idea, good design, or good code, done through a rapid series of good examples that they pattern-match.
- 13m:15s - There are a lot of people who didn't realise the code they had wasn't good. If you don't know what's wrong, you don't know how to fix it.
Llewellyn Falco | Recognising Code Smells
- 15m:15s - The most common code smells: Code has clutter in it, long lines, long methods, duplication, and inconsistency.
- 15m:45s - There's still a long journey from "That's not right" to "How do I fix it?"
- 17m:50s - Earlier is better for learning good habits, otherwise you have to untrain habits.
Rebecca Wirfs-Brock | Being Agile About Architectural Qualities
- 20m:55s - In our rush in an Agile world to deliver features sometimes the architectural work that we need to do to deliver features get slighted. How do we make, in an agile way, the architectural work visible, and not ignore it?
- 22m:00s - Often people get in trouble when they are on larger programs, and they've got to think about not just having the architecture emerge, hoping that I do it right before I do the feature but that it might take more planning or organisation
- 22m:46s - I may implement a story, and get good feedback that it works, but what are the fold out system qualities that I want to have to have it done with the qualities I need?
- 24m:30s - It's not that you want to throw away architects or long-term planning, but you need to have a mindshift that you need sustainability, and follow through. That requires accepting someone on the team with that mindset.
- 26m:27s - It's not that all architecture emerges at the same pace, if I know something is very risky it's ok to take it off and do bounded architecture explorations. But it needs to be bounded and have measurable results.
- 26m:52s - How do you have an incremental architecture and get measurements? If I say to you I'm going to go away for six months and figure it out, that's not very measurable.
- Llewellyn Falco
- Kathy Sierra
More about our podcasts
You can keep up-to-date with the podcasts via our RSS feed, and they are available via SoundCloud and iTunes. From this page you also have access to our recorded show notes. They all have clickable links that will take you directly to that part of the audio.