The Perils Of Software Engineering

The Perils Of Software Engineering

My keynote from PyCon SG 2015.

077e9a0cb34fa3eba2699240c9509717?s=128

Andrew Godwin

June 19, 2015
Tweet

Transcript

  1. Andrew Godwin @andrewgodwin PERILS OF THE SOFTWARE ENGINEERING

  2. Andrew Godwin Hi, I'm Django Core Developer Senior Engineer at

    Far too many hobbies
  3. "Perils"

  4. Computer Science ≠ Software Engineering

  5. Engineering Mechanical Civil Software Chemical Materials

  6. Mechanical Engineering https://www.flickr.com/photos/mariaeklind/

  7. Nondeterministic

  8. Cost of Entry

  9. Civil Engineering

  10. Timescales

  11. Cost of Failure

  12. Aerospace Software Engineering

  13. Cost of Failure

  14. Failure: When, not if

  15. Margaret Hamilton, 1969

  16. Apollo 11 LM, "Eagle"

  17. Web/App Software Engineering

  18. Quick to build and test

  19. Minimal equipment costs

  20. Well-paid

  21. Well-paid

  22. Explicit is better than Implicit

  23. Code Indirection

  24. class MyView(View): def get(self, request): return self.render(request, "template.html")

  25. class MyView(FormView, AuditMixin, OtherMixin): def get(self, request): return self.render(request, "template.html")

    class AuditMixin(BaseAuditor, AdditionalStuff): ... class OtherMixin(MyObject, SomethingElse): ...
  26. Async Uncertainty

  27. def async_handler(): with open("my_file.txt", "r") as fh: write_socket(1, fh.read()) redis.incr("key1",

    2)
  28. Schemas

  29. { "id": 342, "name": "David", "weight": 74, } { "id":

    342, "name": "Ellie", "weight": "85kg", } { "id": 342, "nom": "Frankie", "weight": 77, } { "id": 342, "name": "Frankie", "weight": -67, }
  30. Clever code is bad Maintainable code is good

  31. xs = [number for inner in nested if len(inner) >

    2 for number in inner]
  32. for inner in nested: if len(inner) > 2: for number

    in inner: xs.append(number)
  33. Explore and Discard

  34. There is no perfect solution

  35. Throwing everything away rarely works

  36. Backwards compatability is your friend

  37. Nobody is a genius; we're all mediocre

  38. Argue over code, not over ideas

  39. Well-paid

  40. 10 years? 100 years? 1000 years?

  41. Who will access it?

  42. What format will it be?

  43. Is it even important?

  44. Over thousands of years, the machine memories have been filled

    with programs that can help “ “ A Deepness In The Sky Vernor Vinge
  45. Engineering is collaborative

  46. Build well.

  47. Thanks. Andrew Godwin @andrewgodwin