Software Is A Mess And I Feel Fine

Software Is A Mess And I Feel Fine

Fc6a528fe2b60482971b1642577ae43d?s=128

Alan Stevens

October 09, 2015
Tweet

Transcript

  1. Software Is A Mess And I Feel Fine H. Alan

    Stevens
  2. Beauty is the ultimate defense against complexity. David Gelernter

  3. The vast majority of production code is a mess.

  4. The production code that is not a mess is akin

    to a statistical anomaly or a rounding error.
  5. Messy code is: Code that is difficult to change in

    unexpected ways
  6. Clean code is: Code that can change in unexpected ways

    with minimal effort
  7. Technical Debt?

  8. There is no such thing as legacy code.

  9. There are two kinds of code: 0. Production Code 1.

    Abandoned Code
  10. Successful software: 0. Delights Users 1. Makes money

  11. Building the right thing matters more than building it right.

  12. It doesn’t matter how well you build the wrong thing.

  13. BACKGROUND

  14. All Projects 1 mess 2 mess 3 mess 4 clean

    5 mess 6 clean 7 mess 8 mess 9 mess 10 clean 11 mess 12 clean 13 clean 14 mess 15 clean 16 mess 17 clean 18 mess 19 mess 20 mess 21 clean 22 mess 23 clean
  15. Messy Projects vs. CleanProjects 61% 39%

  16. 1 mess existing 2 mess existing 3 mess existing 4

    clean new 5 mess existing 6 clean new 7 mess existing 8 mess existing 9 mess existing 10 clean new 11 mess existing 12 clean new 13 clean new 14 mess existing 15 clean new 16 mess existing 17 clean new 18 mess existing 19 mess existing 20 mess existing 21 clean new 22 mess existing 23 clean new All Projects With Status
  17. Existing projects that were a mess. 100%

  18. Most production code is a mess.

  19. Messy code is the rule, not the exception

  20. Code is a mess and I feel fine.

  21. CAUSES

  22. Messy code is a failure of design.

  23. Where should this code go?

  24. Failure to ask this question leads directly to a mess.

  25. Don’t Repeat Yourself
 &
 Separation of Concerns

  26. Separation of Concerns

  27. None
  28. None
  29. D RY Don’t Repeat Yourself

  30. See it once: do it See it twice: notice it

    See it a third time: Abstract It! The Rule of Three
  31. Is the descent into a mess inevitable?

  32. Good enough?

  33. Skill is not enough.

  34. Lack of skill is no crime.

  35. Compassion

  36. COPING

  37. When you find yourself stuck in a hole, stop digging.

  38. Embrace the suck!

  39. Don’t rewrite anything, at least not yet.

  40. Things You Should Never Do Part I bit.ly/1dhQr8g

  41. Compromise?

  42. Compromise is not capitulation. Chris Christie

  43. Optimalist

  44. Our goal is progress, not perfection.

  45. The Boy Scout Principle: Leave things better than you found

    them.
  46. Rabbit Hunting

  47. That way lies madness.

  48. CORRECTION

  49. Gartner Hype Cycle Source: Jeremy Kemp

  50. The real goal of the methodologies is to sell books,

    not to actually solve anybody's problem. Joel Spolsky
  51. Crazy pills!

  52. “You’re process is batshit insane!”

  53. Squeeze the code!

  54. 1. Shorten the release cycle

  55. 2. Continuous Integration

  56. 3. Pair Programming

  57. 4. Unit Testing

  58. Go rogue!

  59. CONCLUSION

  60. You’re code is a mess. So is mine. So what?

  61. Mastery is not the goal. Mastery is the process.

  62. Messy code is a failure of design.

  63. Beauty is the ultimate defense against complexity. David Gelernter