Showcase Driven Development is a really simple idea that can help teams to continuously integrate their work into a mainline branch thanks to the ability to showcase every stage of their progress.
continuously (as frequently as possible) integrate your work into some shared place, usually the mainline branch.” http://khanlou.com/2019/07/continuous-integration/
or horrible code reviews. • If you have to drop your work for months, [...] the work you’ve done isn’t in limbo, doesn’t go out of date, and can be built on by the rest of your team. • Not only do your teammates know what you’re working on at any given time, they can begin using it before you’re finished. http://khanlou.com/2019/07/continuous-integration/
• Replace big feature branches by several small branches • Split by sub-feature: List Screen → Detail Screen → Add / Edit flows → etc... • Split by layer: Model → Views → View Models → Coordinators → etc...
or horrible code reviews. • If you have to drop your work for months, [...] the work you’ve done isn’t in limbo, doesn’t go out of date, and can be built on by the rest of your team. • Not only do your teammates know what you’re working on at any given time, they can begin using it before you’re finished. http://khanlou.com/2019/07/continuous-integration/
or horrible code reviews. • If you have to drop your work for months, [...] the work you’ve done isn’t in limbo, doesn’t go out of date, and can be built on by the rest of your team. • Not only do your teammates know what you’re working on at any given time, they can begin using it before you’re finished. http://khanlou.com/2019/07/continuous-integration/
let headerView = ConferenceDetailHeaderView() headerView.conferenceName = "FrenchKit" headerView.formattedStartDate = "October 7th, 2019" headerView.formattedEndDate = "October 8th, 2019" headerView.tips = "Don't miss the cheese and wine " headerView.venueAddress = """ Le Beffroi de Montrouge Paris Avenue de la République 92120 Montrouge """ } }
7th, 2019" headerView.formattedEndDate = "October 8th, 2019" headerView.tips = "Don't miss the cheese and wine " headerView.venueAddress = """ Le Beffroi de Montrouge Paris Avenue de la République 92120 Montrouge """ let viewController = UIViewController() viewController.view.addSubview(headerView) /* Some autolayout code that doesn't fit this slide */ return viewController } }
let headerView = ConferenceDetailHeaderView() headerView.conferenceName = "FrenchKit" headerView.formattedStartDate = "October 7th, 2019" headerView.formattedEndDate = "October 8th, 2019" headerView.tips = "Don't miss the cheese and wine " headerView.venueAddress = """ Le Beffroi de Montrouge Paris Avenue de la République 92120 Montrouge """ return ViewController(headerView) } } final class ConferenceDetailSubviewsShowcase: Showcase { func makeViewController() -> UIViewController { let headerView = ConferenceDetailHeaderView() headerView.conferenceName = "FrenchKit" headerView.formattedStartDate = "October 7th, 2019" headerView.formattedEndDate = "October 8th, 2019" headerView.tips = "Don't miss the cheese and wine " headerView.venueAddress = """ Le Beffroi de Montrouge Paris Avenue de la République 92120 Montrouge """ return ViewController(headerView) } }
the cheese and wine ", address: Address( place: "Le Beffroi de Montrouge Paris", street: "Avenue de la République", postalCode: "92120", city: "Montrouge", country: "France" ) ) let talk1 = Talk(...) let talk2 = Talk(...) let talk3 = Talk(...) let viewModel = ConferenceDetailViewModel() return ConferenceDetailViewController(viewModel: viewModel) }
App a month later • Biggest PR diff was ~700 lines of code • Cummulated diff would have been ~7'000 lines of code • Only 5 comments per PR in average • 19 separated Pull Requests