Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

What is good software design? And why it matters?

197 Aufrufe

Veröffentlicht am

What is good software design? Why does it matter?

In this keynote, I addressed this complex problem. Going from the history of programming, through analogies with other design disciplines, ending with conclusions on what is good software design, and how to become a better designer.

Veröffentlicht in: Software
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

What is good software design? And why it matters?

  1. 1. What is Good Software Design? And why it matters?
  2. 2. 3 Core Questions What is software design? What makes software design good? How do we obtain good software design?
  3. 3. I work in a strange team 4 girls + 2 guys We communicate Learning is mandatory @alexboly alex.bolboaca@mozaicworks.com
  4. 4. Caveats This is a high level talk Not exhaustive I will focus on new advice @alexboly alex.bolboaca@mozaicworks.com
  5. 5. Learn 3 Romanian words Da Nu Ioi! @alexboly alex.bolboaca@mozaicworks.com
  6. 6. What is software design?
  7. 7. Babbage's Difference Machine
  8. 8. First computer programmer Before computers existed
  9. 9. Weaving code by hand on boards
  10. 10. Increased complexity More structure Larger code bases Divide & conquer Abstractions Cognitive limitations
  11. 11. Built-in Abstractions function doStuff() x → x + 1 class A{}
  12. 12. Domain Abstractions Speaker Stream Collection
  13. 13. OOP – How Encapsulation Inheritance Polymorphism Objects & Classes
  14. 14. OOP – Why? Move complexity from behavior to collaboration
  15. 15. Software Design Managing complexity so that the dev's brain can make sense of the existing code Is that it?
  16. 16. How about performance, security ...
  17. 17. Software design means structuring the code so that certain desirable characteristics are met
  18. 18. What is good software design?
  19. 19. Definitely not art. Ready to see some code art?
  20. 20. http://www0.us.ioccc.org/1990/westley.c
  21. 21. Desirable characteristics Changeability Performance Security Testability Consistency 10 / 10 Aiming for: 8 / 10 8 / 10 10 / 10 8 / 10 Business benefit: Low cost of feat. User hapiness Reputation Low cost of feat. Fast development
  22. 22. Good software design: structuring the code so that certain desirable business characteristics are met
  23. 23. Other desirable characteristics? The users of software design are: programmers, testers, ...
  24. 24. Other desirable characteristics? Navigability Consistency Mistake-proofing Easy setup for new devs
  25. 25. How do we obtain good software design?
  26. 26. Good design practices Good designers +
  27. 27. Good Design Practices
  28. 28. Define problem = Understand “what” is required
  29. 29. Understand constraints
  30. 30. Prototype – until you get it
  31. 31. Process is awesome, but not enough http://www.alexbolboaca.ro/my-take-on/what-is-really-tdd
  32. 32. Educate taste Educate sense of observation Research Practice Become a better designer Express yourself
  33. 33. Example of Veja Du cells[x + 1, y] cells[x-1, y] cells[x, y-1] cells[x, y+1] Axis!
  34. 34. Naming Express yourself Functional constructs “Dream” your language
  35. 35. Will you push your limits today as a designer?
  36. 36. Q&A https://leanpub.com/ usablesoftwaredesign Get your free copy (limited copies) or ...

×