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

Symfony Grows Up: The Developer Experience Initiative

F5dfeeef276fcfd4751f4063487a5a3f?s=47 weaverryan
October 10, 2014

Symfony Grows Up: The Developer Experience Initiative

The Symfony Developer Experience is all about reducing complexity (and perceived complexity) but keeping the same high-quality framework and best practices we love. In this talk, I'll show you what we've done together and where we're going next.



October 10, 2014


  1. by your friend: ! Ryan Weaver @weaverryan Symfony Grows Up:

    The Developer Experience
  2. KnpUniversity.com github.com/weaverryan Who is this Hipster? > Lead for the

    Symfony documentation
 > KnpLabs US - Symfony Consulting, training, Kumbaya ! > Writer for KnpUniversity.com Tutorials > Husband of the much more talented @leannapelham
  3. Ephemeralization* @weaverryan

  4. * shamelessly “borrowed” from David Zuelke http://bit.ly/dzuelke-ephem

  5. R. Buckminster Fuller

  6. None
  7. do more and more with less and less until eventually

    you can do everything with nothing “
  8. Think of Measuring Distance Tools let us measure further, and

    with less effort by the human measuring
  9. https://www.flickr.com/photos/chandramarsono/4324373384

  10. https://www.flickr.com/photos/krawcowicz/4153762400

  11. limited by site https://www.flickr.com/photos/40132991@N07/3715292940

  12. https://www.flickr.com/photos/avlxyz/4999120709

  13. Easiest scaling ever Simplest Deployment Process @weaverryan The complexity is

    hidden. The visible pieces are simple.
  14. Do More, With Less

  15. Less is not about size

  16. Less …
 ! …effort
 …drain on my patience ! …drain

    on my energy ! …design on this slide
  17. Accomplish more SnapChat, but with less time, energy and barriers

  18. UX @weaverryan

  19. Do More, With Less

  20. Less is not (necessarily) about code written

  21. Less… ! ! …Dev Time ! …Learning Curve ! …Complexity

  22. Build BIGGER and more interesting applications, but with less time,

    less effort and less barriers
  23. DX @weaverryan

  24. Complexity: Consisting of many different and connected parts

  25. Simple vs Easy @weaverryan

  26. Simple Easily Understood

  27. Easy Achieved without great effort

  28. Losing Weight @weaverryan Simple: Eat well and exercise ! Not

    Easy: Waking up at 6am every morning to run!
  29. Drupal’s Hook system @weaverryan Not Simple: I don’t know what’s

    going on or how it works ! Easy: Just create a function!
  30. Installing a Bundle @weaverryan Installing a bundle may be easy

    because the documentation was simple (i.e. direct, clear, uncluttered)
  31. @weaverryan Symfony is simple: define a URL, create a function,

    return a Response
  32. @weaverryan Symfony aims to be simple and clear above all

    else Once something is simple, you can make it easy (but not in reverse - that’s “magic”
  33. Developer Experience Initiative @weaverryan

  34. 2.0-2.5

  35. Loooong Names src/MyCompany/ContentBundle/Controller/ ContentAdminController.php use SymfonyLive\FabienBundle\Entity \Product $this- >render('SymfonyLiveFabienBundle:Product:new.html.twig')

  36. Many Files app/config/routing.yml src/SymfonyLive/FabienBundle/config/routing.yml src/SymfonyLive/FabienBundle/Controller/ BestPracticesController.php src/SymfonyLive/FabienBundle/Service/BestPracticeanator.php app/config/config.yml src/SymfonyLive/FabienBundle/config/services.yml src/SymfonyLive/FabienBundle/Resources/views/BestPractices/

  37. Scattered Files app/config/routing.yml src/SymfonyLive/FabienBundle/config/routing.yml src/SymfonyLive/JMikolaBundle/config/routing.yml src/SymfonyLive/HHamonBundle/config/routing.yml app/Resources/views/base.html.twig src/SymfonyLive/FabienBundle/Resources/views/BestPractices/ index.html.twig src/SymfonyLive/JMikolaBundle/Resources/views/Wurst/sausage.html.twig

    src/SymfonyLive/HHamonBundle/Resources/views/HowToTravel/ inStyle.html.twig web/assets/css/layout.css web/bundles/symfonylivefabien/css/merging.css web/bundles/symfonylivejmikola/css/wurst.css web/bundles/hhamon/js/JetLagSuperSuperman.js
  38. Bad Bundle README’s ! :( @weaverryan

  39. Pre-DX VichUploaderBundle docs

  40. None
  41. The DX initiative asks…

  42. How could this problem have been solved in a simpler

    way? “
  43. How could we do this new thing, with less code,

    less effort and less barriers “
  44. The DX Initiative Process @weaverryan

  45. You say: “this kinda sucks” One @weaverryan

  46. None
  47. We (all) work to fix it Two @weaverryan

  48. Hi! I can improve that for you!

  49. Celebrate! Three

  50. None
  51. None
  52. Repeat Four @weaverryan

  53. None
  54. None
  55. None
  56. None
  57. None
  58. None
  59. None
  60. not done yet…

  61. Stay Strong!

  62. None
  63. None
  64. None
  65. New composer require behavior

  66. New Installation! (not yet merged)

  67. File structure before best practices

  68. File structure after best practices

  69. Up Next for DX @weaverryan

  70. 0) Symfony @weaverryan

  71. 1) Community Bundles @weaverryan

  72. None
  73. 2) Blogs and Documentation for the most common problems @weaverryan

  74. You drive DX… * So open issues on any repository

    with a [DX] at the beginning of the title
  75. …and move us towards Ephemeralization @weaverryan

  76. … so we can accomplish so much more with less

  77. Thanks! Ryan Weaver @weaverryan KnpUniversity.com PHP , Behat, Twig, OO,

    etc Tutorial Screencasts