Front End Development

at DriveTime


A brief overview of the current state of front end development at DriveTime and a look at what is on the current roadmap

in 2016

Presentation by Allen Rice

Frame up



Where we are
john travolta animated GIF
Where we're going

Front end dev stack refresher



Where we are /  How do you develop?

We've put a lot of time into internal engineering to
make our devs lives as easy as possible

  • We have tight control over the developers experiences via custom visual studio extensions

  • Major architectural pieces live in shared libraries and tooling so we get consistent build patterns and practices

  • We compile as much as we currently can by referencing our C# directly in our TypeScript via TypeLite

  • Our larger applications are built with the mediator pattern

Highlights

  • Unit tests are automatically created to cover our front end code

  • Small pieces of shared code is starting to be created and used

  • Training (ease and duration), day to day work and project kickoffs are greatly impacted by our tooling
     
  • Feature switches and feature branches are giving the business a lot of options and flexibility

Speaking of highlights

We're among some interesting company


Where are we going?


  • Code generation

  • Improved unit testing

  • Improved tooling

  • Improved patterns

  • Invest in creating shared code

  • Investing more into R & D

Code Generation

Currently, every dev hand write their ajax calls

# of ajax calls:
  • MyDriveTime: 13+ 
  • VisionLTE: 46+ 
  • POS: 50+

Those are all prone to error and took time to write

Solution:  MvcControllerToProxyGenerator

Getting more out of our compiled languages

Unit testing

Right now, no one knows what the current code coverage is

Devs, Dev managers, and QA all need to know code coverage

Answer: Istanbul and Jenkins

What does it look like


Just another addition


Improved Tooling

Our scaffolders are very basic, aren't intelligent, 
and are used very frequently

We want to reduce the amount of work
 required and empower our power users

Desired Features:
  • Settings and templates stored in project
  • Apply common UI/UX patterns

Tooling cont.

before / after

Improved Patterns


Working in a mediator can be tough

Getting it right is important

A new pattern for the mediator itself:
events, orchestration and processors 

We're trying it with LeadManagement

New Mediator Design pattern

Mediator topology example

Shared Code

We built the foundation for sharing, now we need content

  • Common functionality

  • Shared UI components

  • Mediator & Sandbox pieces

  • Code examples

  • More 3rd party integration (AI, GA, etc)

Shared Code Cont.

All of this work should be seen as its own product

  • DriveTime Template Pack

  • DriveTime.UI.Package
    • DriveTime.UI (bower)
    • DriveTime.Build (npm)
    • DriveTime.UI.NuGet (nuget)

  • Need to allocate resources for contributions
 

Research & Development


Spend more time looking at tooling:
MvcControllerToProxyGenerator  was  discovered by accident

Collecting data:
Using analytical data collected via our tooling


Ultimate re-use:
Running TypeScript from Xamarin for mobile apps

Stretch goal:
Enabling strongly typed views via JSX modifications

R&D Continued


Need to stay on top of feature lists!

Angular, 
React
BreezeJS
Backbone
Ember
Xamarin
Web Essentials

RECAP!


  • Formalizing our development ecosystem

  • Formalizing our architectural implementations

  • Getting coverage data out of the system for the first time

  • Getting free stuff with shared code and code generation

  • Natural evolution of front end software development at DriveTime

Front End Development At DriveTime 2016

By Allen Rice

Front End Development At DriveTime 2016

A brief overview of the current (mid 2016) state of front end development at DriveTime and a look at what is on the current roadmap

  • 1,012