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

Build to Last

Cd8da976054ea4915eafc5d9dd096d38?s=47 blowmage
October 10, 2015

Build to Last

How to design rails apps to avoid a rewrite in 5 years.



October 10, 2015


  1. Build to last Build to last How to design rails

    apps to avoid a rewrite in 5 years
  2. O HAI

  3. Super excited!

  4. first post!

  5. larubyconf noobs?

  6. rubyconf noobs?

  7. ruby/rails noobs?

  8. programming noobs?

  9. Welcome!

  10. “the problem”

  11. “the pain”

  12. “the rewrite”

  13. “the question”

  14. “the answer”

  15. You’re doing it wrong

  16. You’re thinking about it wrong

  17. What is software?

  18. “instructions for a computer to follow”

  19. None
  20. https://mitpress.mit.edu/sicp/

  21. “Our design of this introductory computer-science subject reflects two major

  22. “First, we want to establish the idea that a computer

    language is not just a way of getting a computer to perform operations but rather that it is a novel formal medium for expressing ideas about methodology…”
  23. “Thus, programs must be written for people to read, and

    only incidentally for machines to execute…”
  24. “Second, we believe that the essential material to be addressed

    by a subject at this level is not the syntax of particular programming-language constructs, nor clever algorithms for computing particular functions efficiently, nor even the mathematical analysis of algorithms and the foundations of computing…”
  25. “…but rather the techniques used to control the intellectual complexity

    of large software systems.”
  26. intellectual complexity

  27. “Underlying our approach to this subject is our conviction that

    “computer science” is not a science and that its significance has little to do with computers…”
  28. “The computer revolution is a revolution in the way we

    think and in the way we express what we think.”
  29. we think about software wrong

  30. we express what we think about software wrong

  31. Big Ball of Mud

  32. “A big ball of mud is a casually, even haphazardly,

    structured system…”
  33. Its organization, if one can call it that, is dictated

    more by expediency than design.”
  34. http://www.laputan.org/mud/

  35. The Big Ball of Mud says: “You are not smart.”

  36. But you are smart!

  37. Techical Debt

  38. None
  39. https://youtu.be/pqeJFYwnkjE

  40. Communicate ideas (intellectual complexity) in a better way

  41. Intent

  42. (sekrit sauce)

  43. None
  44. Anthropomorphization

  45. Counterintuitive

  46. Metaphor

  47. Code neighborhoods

  48. None
  49. None
  50. None
  51. None
  52. None
  53. None
  54. Domain

  55. None
  56. None
  57. None
  58. Permissions

  59. None
  60. None
  61. None
  62. None
  63. None
  64. None
  65. Tests

  66. None
  67. None
  68. None
  69. Testing is fun!

  70. Testing is easy!

  71. (Once you get the hang of it.)

  72. Testing is how you avoid a rewrite

  73. None
  74. None
  75. None
  76. None
  77. “Often people, especially computer engineers, focus on the machines. They

    think, "By doing this, the machine will run faster. By doing this, the machine will run more effectively. By doing this, the machine will something something something." They are focusing on machines…”
  78. “But in fact we need to focus on humans, on

    how humans care about doing programming or operating the application of the machines. We are the masters. They are the slaves.” Yukihiro Matsumoto
  79. Be a wise master

  80. Mike Moore

  81. Mike Moore blowmage

  82. Mike Moore blowmage Stickers!