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

Negotiating for performance

Negotiating for performance

As a developer you need to be able to champion performance to the business you work in. This is because performance matters and as a developer you are best placed to understand the implications things have on how fast a web page will load.

As part of championing performance, you need to be able to negotiate with the stakeholders of the site. This might involve working with the designers to work on building a user experience that loads fast and working with the project managers to put aside time to spend optimising the site performance.

Jonathan Fielding

August 02, 2016
Tweet

More Decks by Jonathan Fielding

Other Decks in Programming

Transcript

  1. A bit about me… • Technical Architect at Beamly (WE

    ARE HIRING) • Author of ‘Beginning Responsive Design’ • Regular contributor to open source, including SimpleStateManager, Echo.js, CriticalJS, FT’s Polyfill Service, Doccy among many projects • Here as a warm up prior to the Pizza
  2. So today we are going to be focusing on how

    we can make performance the centre of our process
  3. And ultimately we will start to understand the language we

    should use when trying to communicate with others about performance
  4. Stakeholders aims are: • Feature rich • Tracked • On-brand

    • Achieve KPIs • Appealing design • Eye-catching
  5. We first need to look at how we make our

    stakeholders more aware of performance
  6. There are three key types of performance that you need

    to make your stakeholders aware of
  7. Page load performance - The time it takes to fully

    load a page and be fully interactive
  8. Walmart saw for every 1 second decrease in page load

    they had a 2% increase in conversions
  9. If we take Beamly for example, our site is a

    lot like Buzzfeed so we want to benchmark against that
  10. and due to the audience here today we will also

    throw the FT and Guardian into the mix
  11. Tim Kadlec “For example, say a competitor’s site loads in

    5 seconds. 20% of 5 seconds is 1 second. So to be perceived as faster than them, you need to have your pages taking no longer than 4 seconds (5 seconds load time - 20% difference).” https://timkadlec.com/2014/01/fast-enough/
  12. So we should expect to be a minimum of 20%

    faster than our competitors
  13. This data can then be used to link a increase

    in performance to an increase of KPI’s
  14. It is not uncommon for a developer to first see

    a design when they are asked to build it
  15. It is down to a problem in the processes we

    are going through to build our sites
  16. This is why you need to ensure that one of

    your project goals is for the site to be performant
  17. Then as you carry out your research look at the

    connection speeds your users have
  18. Tim Kadlec “The purpose of a performance budget is to

    make sure you focus on performance throughout a project. The reason you go through the trouble in the first place though is because you want to build a site that feels fast for your visitors.” http://www.timkadlec.com/2014/11/performance-budget-metrics/
  19. In order for you to determine what your performance budget

    should be, you need to determine what you’re going to measure
  20. Andy Davies To me a perf budget needs to be

    "an event that matters to the visitor within a set time under defined network conditions" Tweet: https://twitter.com/AndyDavies/status/534474109741465601
  21. To identify our metric we therefore need to identify the

    event that matters to our users on our site
  22. The FT might simply want to lay out their page

    ready for content to load into as it loads
  23. For our site, an event that matters could be the

    user being able to start interacting with the page
  24. Therefore the time it takes until it gets to this

    point should be our performance budget
  25. So we might decide that we want our page to

    be interactive within 5 seconds on a slow 3G connection
  26. If we then decide we want to add web fonts

    to our website we then adjust our budget
  27. The budget only covers the data required until we reach

    the event the budget is based upon
  28. Using WebPageTest has given us a wealth of data that

    we can use to put together a performance budget
  29. Having determined a budget for the existing site we now

    need to look at where we want to make improvements
  30. Firstly we identify areas of concern HTML CSS JavaScript Images

    Fonts Other 20kb 98kb 632kb 658kb 46kb 29kb
  31. # BeamlySite Performance Budget ## Expectation A page is expected

    to load in 5 seconds on a slow 3G connection. ## Budget | HTML | CSS | JavaScript | Images | |:----:|:----:|:----------:|:------:| | 30kb | 40kb | 50kb | 360kb | ## Contributors * Jonathan * Sasha * Izzy
  32. Nicole Sullivan wrote a great post on how having a

    living style guide can help you improve performance
  33. She also noted on her blog post that it also

    led to the design being used across their site being more consistent
  34. To help prevent this there are a number of tools

    you can use to monitor your budget
  35. Aside from using it to run one off tests, we

    can also use it as part of our Continuous Integration
  36. A special thanks goes out to to Charlie Fielding for

    being so patient and watching this talk 100x, Andrew Davies for design, Phil Nash for looking through and advice and Kate Montgomery for proof reading