Save 37% off PRO during our Black Friday Sale! »

“Why Swift?” for everyone else & so much more

D3c5f7382824133c2718c8effb5894fb?s=47 Ayaka Nonaka
September 18, 2015

“Why Swift?” for everyone else & so much more

Talk given at NSSpain on 18 September 2015

The Venmo iOS team has spent the past 8 weeks rewriting our entire app (full of crufty old code dating back to 2011) in Swift. There were a lot of great things that we got out of this, but one of the biggest questions that we get is “That’s awesome, but how do I convince the rest of my team/company/stakeholders that it’s worth it?” This talk will cover subtle techniques and pitfalls to avoid to get what you want and how to apply it to other situations like giving code review feedback and working as a team in general.

D3c5f7382824133c2718c8effb5894fb?s=128

Ayaka Nonaka

September 18, 2015
Tweet

Transcript

  1. WHY Swift? FOR EVERYONE ELSE & SO MUCH MORE NSSPAIN

    2015 !
  2. Hi! I’m Ayaka. @AYANONAGON

  3. None
  4. WE REWROTE OUR ENTIRE APP IN SWIFT.

  5. ▸ 8 weeks ▸ 5 iOS Engineers

  6. VENMO-IOS-CLASSIC ▸ > 66,000 lines of Objective-C ▸ 2011

  7. None
  8. None
  9. VENMO ▸ 16,000 lines of Swift 2.0 ▸ A lot

    of new frameworks, like VenmoKit, ContactsKit, and Static
  10. WHY Swift? FOR EVERYONE ELSE & SO MUCH MORE NSSPAIN

    2015 !
  11. How do I get what I want?

  12. CONTINUOUS INTEGRATION

  13. ACCESSIBILITY

  14. WATCHOS 2 APP

  15. Why?

  16. Why DO WE WANT TO WRITE Swift IN THE FIRST

    PLACE?
  17. MORE PREDICTABLE AND SAFER ▸ Type-safety ▸ Immutability & strict

    compiler ▸ Nicer syntax
  18. ABSyncOperation.m

  19. Thou shall not touch ABSyncOperation.

  20. THIS WOULDN’T EVEN HAPPEN IN Swift BECAUSE IT CAN’T!

  21. MORE ENJOYABLE AND FASTER TO WRITE

  22. LYFT’S REWRITE “On the old version, that was a project

    that took more than a month, with multiple engineers. And with Swift, that was a project that took a week for one engineer.”
  23. ATTRACT GREAT DEVELOPERS

  24. Why? ▸ Write more predictable and safer code ▸ Make

    development more enjoyable and faster ▸ Attract great developers
  25. We want to ship a great product.

  26. ENGINEERING IS A means to an end

  27. TIE IT TO ANOTHER PROJECT

  28. Hey can we just have like 2 months to rewrite

    our entire app in Swift? !
  29. MAKE IT INCREMENTAL

  30. NON-PRODUCTION USE

  31. NON-PRODUCTION USE ▸ Scripting ▸ Tests

  32. 2. NEW CODE IN SWIFT

  33. None
  34. None
  35. ▸ Bi-weekly demo ▸ Make it a part of daily

    conversation ▸ Less foreign !
  36. 3. NOW WE WANT TO REWRITE THE ENTIRE APP IN

    SWIFT
  37. MAKING THE CASE

  38. LOGIC LOGIC LOGIC LOGIC LOGIC

  39. QED

  40. AIRTIGHT

  41. RIDICULOUS

  42. ILLOGICAL

  43. ! ! ! ! ! !

  44. ! “SURE...”

  45. ☕ "

  46. YOU MIGHT WIN

  47. … BUT THEY’LL FEEL AWFUL !

  48. … AND YOU’LL PROBABLY LOSE NEXT TIME !

  49. ASK FOR THEIR OPINIONS

  50. What if we miss something?

  51. What about the other projects that are in the backlog?

  52. ! " # $ %

  53. FIGHT OR FLIGHT DEFENSIVE

  54. OPPOSING OPINIONS ARE BASED IN SOME FACT

  55. TAKE IT AS AN ✨ OPPORTUNITY ✨

  56. How are we going to make sure we don’t miss

    anything?
  57. That’s a great question. Can you help us make sure

    we don’t miss anything?
  58. RESULT ▸ Way better QA plan for release ▸ More

    confidence in the rewrite and timeline ▸ Felt more like we were working together
  59. The UI Changed. Can you update it?

  60. !

  61. !

  62. That’s going to be harder to build and take a

    lot longer.
  63. Is there a middleground that we can reach?

  64. “ya, of course”

  65. “What do you think?”

  66. NOT YOU VS. THEM

  67. LESS stress & animosity

  68. MORE happiness & collaboration

  69. RECAP 1. Find a shared goal 2. Make it incremental

    3. “What do you think?”
  70. RESOURCES ▸ Fast Company’s article on Lyft’s Swift rewrite ▸

    Getting More by Stuart Diamond ▸ Stuff coming from our team soon!
  71. DON’T ASK FOR PERMISSION.

  72. DON’T ASK FOR TOO MUCH PERMISSION.

  73. THANK YOU Gracias

  74. QUESTIONS? @AYANONAGON

  75. None