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.

Software Is Details

1,117 views

Published on

Keynote presented at SATURN (2nd May 2017)
Video available at https://www.youtube.com/watch?v=MS3c9hz0bRg

"It's just a detail." Have you ever said that or been told that? Whether it's about implementation or requirements, we often use the word detail to suggest that something is not important enough to worry about. There are so many things to worry about in software development that we need to prioritize—too much detail, not enough focus. The problem is that in software, the details matter because that is what software is: lots of details brought together in combination. If we don't focus on the details, we get debt, defects, and delays.

Published in: Software

Software Is Details

  1. 1. Software Is Details @KevlinHenney
  2. 2. Any program is a model of a model within a theory of a model of an abstraction of some portion of the world or of some universe of discourse. Meir M Lehman "Programs, Life Cycles, and Laws of Software Evolution"
  3. 3. The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise. Edsger W Dijkstra
  4. 4. It's just semantics.
  5. 5. It's just meaning.
  6. 6. It's just details.
  7. 7. Details count. Peter Weinberger
  8. 8. Geeks are people who love something so much that all the details matter. Marissa Mayer
  9. 9. We're talking about a very specific mindset that is crucial when it comes to the act of creating. Will Gompertz Think Like an Artist
  10. 10. It is an attitude that can be encapsulated in a simple but demanding rule: always think both big picture and fine detail. Will Gompertz Think Like an Artist
  11. 11. software
  12. 12. software architecture
  13. 13. code
  14. 14. implementation
  15. 15. implementation details
  16. 16. design details
  17. 17. design decisions
  18. 18. Architecture represents the significant design decisions that shape a system, where significant is measured by cost of change. Grady Booch
  19. 19. Architecture is a hypothesis, that needs to be proven by implementation and measurement. Tom Gilb
  20. 20. We propose [...] that one begins with a list of difficult design decisions or design decisions which are likely to change. Each module is then designed to hide such a decision from the others. David L Parnas On the Criteria to Be Used in Decomposing Systems into Modules
  21. 21. Programming is a design activity. Jack W Reeves What Is Software Design?
  22. 22. Coding actually makes sense more often than believed. Often the process of rendering the design in code will reveal oversights and the need for additional design effort.The earlier this occurs, the better the design will be. Jack W Reeves What Is Software Design?
  23. 23. If a plot works out exactly as you first planned, you're not working loosely enough to give room to your imagination and instincts.
  24. 24. / WordFriday
  25. 25. pantser, noun  Writer who writes by the seat of their pants.  In contrast to a plotter, a pantser doesn't work to (or have) an outline.
  26. 26. 16-bit
  27. 27. 32-bit
  28. 28. 64-bit
  29. 29. <windows.h>
  30. 30. LLP64
  31. 31. LP64
  32. 32. Hamlet: To be, or not to be, that is the question.
  33. 33. Ophelia: 'Tis in my memory locked, and you yourself shall keep the key of it.
  34. 34. Hamlet: Yea, from the table of my memory I'll wipe away all trivial fond records.
  35. 35. Mutable Immutable Unshared Shared Unshared mutable data needs no synchronisation Unshared immutable data needs no synchronisation Shared mutable data needs synchronisation Shared immutable data needs no synchronisation
  36. 36. Mutable Immutable Unshared Shared Unshared mutable data needs no synchronisation Unshared immutable data needs no synchronisation Shared mutable data needs synchronisation Shared immutable data needs no synchronisation The Synchronisation Quadrant
  37. 37. All computers wait at the same speed
  38. 38. Savings in time feel like simplicity
  39. 39. ... premature optimization is the root of all evil (or at least most of it) in programming. Donald Knuth
  40. 40. ... premature optimization is the root of all evil (or at least most of it) in programming. Donald Knuth
  41. 41. ... premature optimization is the root of all evil (or at least most of it) in programming. Donald Knuth
  42. 42. Command-line tools can be 235x faster than your Hadoop cluster Adam Drake http://aadrake.com/command-line-tools-can-be-235x-faster-than-your-hadoop-cluster.html
  43. 43. sort
  44. 44. O(n log n)
  45. 45. O(n2)
  46. 46. O(n!)
  47. 47. OMG!
  48. 48. O(n)
  49. 49. Simple Testing Can Prevent Most Critical Failures An Analysis of Production Failures in Distributed Data-Intensive Systems https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-yuan.pdf
  50. 50. Schiaparelli’s Inertial Measurement Unit (IMU) went about its business of calculating the lander’s rotation rate. For some reason, the IMU calculated a saturation- maximum period that persisted for one second longer than what would normally be expected at this stage. When the IMU sent this bogus information to the craft’s navigation system, it calculated a negative altitude. http://gizmodo.com/a-crazy-miscalculation-doomed-the-sciaparelli-lander-1789319670
  51. 51. That fateful miscalculation set off a cascade of despair, triggering the premature release of the parachute and the backshell, a brief firing of the braking thrusters, and activation of the on-ground systems as if Schiaparelli had already reached the surface. This all happened while the vehicle was still two miles (3.7 km) above ground. http://gizmodo.com/a-crazy-miscalculation-doomed-the-sciaparelli-lander-1789319670
  52. 52. A majority of the production failures (77%) can be reproduced by a unit test. https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-yuan.pdf
  53. 53. http://www.commitstrip.com/en/2016/08/25/a-very-comprehensive-and-precise-spec/
  54. 54. http://www.commitstrip.com/en/2016/08/25/a-very-comprehensive-and-precise-spec/
  55. 55. http://www.commitstrip.com/en/2016/08/25/a-very-comprehensive-and-precise-spec/
  56. 56. http://www.commitstrip.com/en/2016/08/25/a-very-comprehensive-and-precise-spec/
  57. 57. Normally screws are so cheap and small and simple you think of them as unimportant. But now, as your Quality awareness becomes stronger, you realize that this one, individual, particular screw is neither cheap nor small nor unimportant. Robert M Pirsig Zen and the Art of Motorcycle Maintenance
  58. 58. Right now this screw is worth exactly the selling price of the whole motorcycle, because the motorcycle is actually valueless until you get the screw out. With this reevaluation of the screw comes a willingness to expand your knowledge of it. Robert M Pirsig Zen and the Art of Motorcycle Maintenance
  59. 59. Software Is Details

×