Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Developing more in less time

29 views

Published on

The art of developing more in less time

Published in: Mobile
  • Be the first to comment

  • Be the first to like this

Developing more in less time

  1. 1. The art of developing more in less time - how to not get caught by long build times? @EliSawic
  2. 2. About me Eliasz Sawicki Blog: www.eliaszsawicki.com Twitter: @EliSawic www.brightinventions.pl @EliSawic
  3. 3. A short story about Love @EliSawic
  4. 4. A short story about Love 1. Friendship @EliSawic
  5. 5. A short story about Love 1. Friendship 2. Love @EliSawic
  6. 6. A short story about Love 1. Friendship 2. Love 3. Doubt @EliSawic
  7. 7. A short story about Love 1. Friendship 2. Love 3. Doubt 4. Betrayal @EliSawic
  8. 8. A short story about Love 1. Friendship 2. Love 3. Doubt 4. Betrayal 5. Starting over again @EliSawic
  9. 9. A short story about Love 1. Friendship 2. Love 3. Doubt 4. Betrayal 5. Starting over again 6. Rebuild the trust @EliSawic
  10. 10. How does it end? @EliSawic
  11. 11. Friendship @EliSawic
  12. 12. Objective-C @EliSawic
  13. 13. The UIKit @EliSawic
  14. 14. Why do we need UIKit? @EliSawic
  15. 15. Love @EliSawic
  16. 16. $wift @EliSawic
  17. 17. Practice @EliSawic
  18. 18. Tests! @EliSawic
  19. 19. Why do we need tests? @EliSawic
  20. 20. Why do we have brakes in a car? @EliSawic
  21. 21. To stop? @EliSawic
  22. 22. To go faster! @EliSawic
  23. 23. Test Driven Development @EliSawic
  24. 24. Think @EliSawic
  25. 25. Doubt @EliSawic
  26. 26. Long build times @EliSawic
  27. 27. Slow feedback loops @EliSawic
  28. 28. No tests for you today @EliSawic
  29. 29. Betrayal @EliSawic
  30. 30. React Native @EliSawic
  31. 31. Testing feels natural @EliSawic
  32. 32. Quick reloading @EliSawic
  33. 33. Not a silver bullet @EliSawic
  34. 34. Starting over again @EliSawic
  35. 35. What was the problem? @EliSawic
  36. 36. Long build times @EliSawic
  37. 37. Slow feedback loop @EliSawic
  38. 38. Rebuild the trust @EliSawic
  39. 39. Tackling compilation times @EliSawic
  40. 40. Type Inference @EliSawic
  41. 41. Type Inference let viewController = UIViewController() viewController = UIView() // Nope @EliSawic
  42. 42. Bottleneck @EliSawic
  43. 43. Warnings -Xfrontend -warn-long-function-bodies=200 -Xfrontend -warn-long-expression-type-checking=100 @EliSawic
  44. 44. Debug information format @EliSawic
  45. 45. With or without you? @EliSawic
  46. 46. DWARF with dSYM file? @EliSawic
  47. 47. Take a look at your build phases @EliSawic
  48. 48. Build phases @EliSawic
  49. 49. Build phases @EliSawic
  50. 50. Build Active Architecture Only @EliSawic
  51. 51. Active architecture @EliSawic
  52. 52. Whole module optimization @EliSawic
  53. 53. Drastically decreased time in which the project compiles @EliSawic
  54. 54. A catch @EliSawic
  55. 55. A trick @EliSawic
  56. 56. Why isn't it turned on all the time? @EliSawic
  57. 57. Managing dependencies @EliSawic
  58. 58. Cocoapods @EliSawic
  59. 59. Carthage @EliSawic
  60. 60. Build tools @EliSawic
  61. 61. Bazel, Buck @EliSawic
  62. 62. Xcode @EliSawic
  63. 63. Xcode @EliSawic
  64. 64. Xcode settings defaults write com.apple.dt.Xcode IDEBuildOperationMaxNumberOfConcurrentCompileTasks 8 @EliSawic
  65. 65. Optimizations @EliSawic
  66. 66. Optimizations • Compilation costs @EliSawic
  67. 67. Optimizations • Compilation costs • Don't trust defaults @EliSawic
  68. 68. Optimizations • Compilation costs • Don't trust defaults • Understand tradeoffs @EliSawic
  69. 69. Easy way to decrease the compilation time by half @EliSawic
  70. 70. Write smaller apps! @EliSawic
  71. 71. Modularizing the code @EliSawic
  72. 72. More things to think about... @EliSawic
  73. 73. Is it bad? @EliSawic
  74. 74. When do we want to split? @EliSawic
  75. 75. We don't need it at the beginning @EliSawic
  76. 76. It will be harder later @EliSawic
  77. 77. What should we do? @EliSawic
  78. 78. Do it later @EliSawic
  79. 79. How do we split? @EliSawic
  80. 80. Don't bite off more than you can chew @EliSawic
  81. 81. Step by step @EliSawic
  82. 82. What is the code that I write? @EliSawic
  83. 83. We write apps! @EliSawic
  84. 84. Do we really write apps? @EliSawic
  85. 85. Tests! @EliSawic
  86. 86. Why do we compile the UI code? @EliSawic
  87. 87. Separating the UI @EliSawic
  88. 88. Is it bad that we break up with UIKit? @EliSawic
  89. 89. Nope @EliSawic
  90. 90. MVC @EliSawic
  91. 91. MVC @EliSawic
  92. 92. MVVM @EliSawic
  93. 93. MVVM @EliSawic
  94. 94. Why would you remove UIKit? @EliSawic
  95. 95. Can be used anywhere @EliSawic
  96. 96. Can be tested anywhere @EliSawic
  97. 97. How do we achieve it? @EliSawic
  98. 98. Passive Views @EliSawic
  99. 99. What is a passive view? @EliSawic
  100. 100. Logic @EliSawic
  101. 101. Why are they still together? @EliSawic
  102. 102. Multiple targets @EliSawic
  103. 103. One for UIKit @EliSawic
  104. 104. One for logic @EliSawic
  105. 105. Two for Tests @EliSawic
  106. 106. More things to handle @EliSawic
  107. 107. Better architecture @EliSawic
  108. 108. Speeded up tests @EliSawic
  109. 109. Faster builds @EliSawic
  110. 110. Modularizing @EliSawic
  111. 111. Modularizing • Take small steps @EliSawic
  112. 112. Modularizing • Take small steps • Use tests as your first client @EliSawic
  113. 113. Modularizing • Take small steps • Use tests as your first client • It's not always worth to modularize @EliSawic
  114. 114. How does the love story end? @EliSawic
  115. 115. Stronger relationship @EliSawic
  116. 116. The art of developing more in less time @EliSawic
  117. 117. How to not get caught by long build times? @EliSawic
  118. 118. Time is not the only issue @EliSawic
  119. 119. The art of developing more in less time @EliSawic
  120. 120. It's about the experience @EliSawic
  121. 121. Protect your feedback loop @EliSawic

×