Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Time Driven Development

Time Driven Development

Working with companies from early-stage startups to Fortune 500, I’ve seen first hand how the architecture approach affects team performance. It’s as easy to overengineer a simple app if you rely too heavily on good design principles, as it is to create a very coupled architecture if you don’t. In this presentation, we’ll cover different scenarios and try to choose the proper architecture depending on the business requirements. We’ll see how the time we spend on development is defined by our design choices and how that impacts the overall performance of the team.

Katerina Trajchevska

August 30, 2019
Tweet

More Decks by Katerina Trajchevska

Other Decks in Programming

Transcript

  1. Exclusive Developers’ Network Katerina Trajchevska • Software Engineer & Mozilla

    Tech Speaker • Co-founder of Adeva, an exclusive developers’ network. • Consultant with startups and Fortune 500 @ktrajchevska
  2. @ktrajchevska I often leave the office 1-2 hours later than

    my co-workers after polishing some piece of ultimately meaningless code. This is time I don’t spend with my family. Because I’ve learned to care about Clean Code. - Johannes Broadwall, Forget about Clean Code, let’s embrace Compassionate Code
  3. @ktrajchevska We fully test our software. or We practice TDD.

    or We follow SOLID principles. The bottom line is simply that we go home every night, look in the mirror, and are proud of what we accomplished that day. - Uncle Bob, The Obligation of the Programmer
  4. We’ve created a toxic environment that values the usage of

    good design pracNces above creaNng value for the user.
  5. App\Http\Controllers\CandidateController.php Controller knows too much and is open for modificaNon.

    Methods depend directly on the CRM storage and their naming convenNons.
  6. @ktrajchevska What does it take to switch the storage? 1.

    Add Eloquent models to use with MySQL. 2. Change controller dependencies from CRM class to Eloquent. 3. Use Eloquent instead of CRM to pull data for the view. 4. Switch all variables to the new naming convention. 5. Change the way we access data in the views. 6. Adjust the unit tests to work accordingly.
  7. @ktrajchevska What does it take to switch the storage? 1.

    Add Eloquent models to use with MySQL. 2. Create MysqlCandidateRepository that implements CandidateRepositoryInterface. 3. Change the binding for CandidateRepositoryInterface in AppServiceProvider.
  8. @ktrajchevska Why Time Driven Development? • Software design practices come

    with trade-offs. Know them. • Software design principles should simplify your life, not complicate it. • Thinking about the bigger picture will help you create more than just software. It will help you create value.
  9. @ktrajchevska How to start pracDcing Time Driven Development? • Talk

    to your lead to understand the business goals before proposing an architecture. • Always have the context in mind when designing soeware. • Don’t shame others for not adhering to “the best” soeware design pracNces.