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

Creating a ticketing app with three developers

Creating a ticketing app with three developers

Lean development allow us to control the app size so we can deliver faster, getting customer feedback and fixing errors as fast as possible. This talk shows the different decisions we had to take when developing a complete ticketing app with three developers.

Carlos Coloma

January 28, 2015
Tweet

More Decks by Carlos Coloma

Other Decks in Technology

Transcript

  1. Creating a ticketing app with three developers Carlos Coloma -

    Cloud Engineer at Extrema Sistemas Spring Certified trainer @ccescribano
  2. Cloud Platform solutions IaaS PaaS Infrastructure-as-a-Service Platform-as-a-Service Applications Data Runtime

    Middleware O/S Virtualization Servers Storage Networking Applications Data Runtime Middleware O/S Virtualization Servers Storage Networking Packaged Software Applications Data Runtime Middleware O/S Virtualization Servers Storage Networking You Manage Vendor Managed
  3. Client side Google Trends do not give us a solution:

    - Searching errors - Name is incorrect - Everyone with less than 2-3 years (except JQuery)
  4. Backbone.js Advantages: - Models with key-value binding and custom events

    - Models connects to a RESTful JSON interface transparently - Views with declarative event binding - Routers to manage browser history
  5. Backbone.js - Model Creating a model: var UserModel = Backbone.Model.extend({

    urlRoot: ‘/users’ }); var user = new UserModel(); Setting attrs: user.set({firstName: ‘Carlos’, lastName: ‘Coloma’}); Do you want to create this user? user.save(); // POST request to ‘/users’ And if you want to update an existing one? user.save({id: 1}); // PUT request to ‘/users/1’ And you can propagate your changes too user.on(‘change:firstName’, function() { console.log(‘First name has change...’); })
  6. Backbone.js - View Defining and using a view: var UserView

    = Backbone.View.extend({ events: { ‘click .my-link’: function() { // whatever } }, initialize: function() { this.listenTo(this.model, ‘change’, this.render); }, render: function() { this.$el.html(this.template(this.model.toJSON())); return this; } }); var userView = new UserView({ model: user }); $(‘.my-view-container’).html(userView.render().$el);
  7. Backbone.js - Router Defining a router: var UserRouter = Backbone.Router.extend({

    routes: { ‘users/list’: ‘list’, ‘users/:id’: ‘show’ }, list: function() { // show a paged list }, show: function(id) { // retrieve the user with the specified id } }); new UserRouter(); Backbone.history.start();
  8. Features Not so obvious: - Discounts - Invoices - Form

    fields - Sales notification - Transfer events - Mailing lists - Invitations - Reports - Max tickets per user - Unlisted events - Access control - ...
  9. Lean development Adapted from Toyota Production System, is a translation

    of lean manufacturing and lean IT principles and practices to the software development domain, based on 7 principles: 1. Eliminate waste 2. Amplify learning (Try it, test it, fix it) 3. Decide as late as possible 4. Deliver as fast as possible (it is not the biggest that survives) 5. Empower the team 6. Build integrity 7. See the whole Summary: Think big, act small, fail fast, learn rapidly
  10. Basics Some basics, that every project should have, are: -

    TDD - Refactor - Customer feedback All of them allow us to apply lean principles
  11. Q? A! Carlos Coloma - Cloud Engineer at Extrema Sistemas

    Spring Certified trainer @ccescribano