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

A journey to code ownership

A journey to code ownership

A short presentation about the process of taking over a complex software project and what are the pitfalls and risks in doing that.

First presented during "Adventures and failures in software engineering and machine learning" meetup in Paris (https://www.meetup.com/Polymorphic/events/259263261)

9682f6f8a447d952b412de9d42860130?s=128

Elia Maino

March 21, 2019
Tweet

Transcript

  1. A journey to code ownership.

  2. Coding is a process of creation

  3. Frederick Brooks “The programmer, like the poet, works only slightly

    removed from pure-thought-stuff”
  4. Frederick Brooks “He builds his castles in the air, from

    air, creating by exertion of imagination.”
  5. Frederick Brooks “Few media of creation are so flexible, so

    easy to polish and rework, so readily capable of realizing grand conceptual structures”
  6. Frederick Brooks “Few media of creation are so flexible, so

    easy to polish and rework, so readily capable of realizing grand conceptual structures”
  7. Frederick Brooks “Few media of creation are so flexible, so

    easy to polish and rework, so readily capable of realizing grand conceptual structures”
  8. None
  9. Elia Maino Software Engineer @eliamain

  10. Elia Maino Software Engineer @eliamain

  11. Starting VS joining Stories of software rewriting Own a project

  12. Starting VS joining Stories of software rewriting Own a project

  13. A fresh start

  14. None
  15. Jumping into a project

  16. None
  17. Software projects are complex engineering endeavors

  18. Good documentation. Clear code and architecture. Good mentorship.

  19. Good documentation. Clear code and architecture. Good mentorship.

  20. None
  21. Let’s rewrite everything!

  22. Joel Spolsky “We’re programmers. Programmers are, in their hearts, architects”

  23. Joel Spolsky “… The first thing they want to do

    when they go on a site is to bulldoze the place flat and build something grand.”
  24. Starting VS joining Stories of software rewriting Own a project

  25. None
  26. None
  27. None
  28. None
  29. None
  30. None
  31. None
  32. None
  33. None
  34. None
  35. None
  36. None
  37. Platform rewrite has a cost

  38. Platform rewrite has a cost (even if you’re a very

    skilled engineer)
  39. Platform rewrite is a company decision

  40. PARIS BERLIN SOPHIA ANTIPOLIS

  41. SOPHIA ANTIPOLIS PARIS BERLIN

  42. None
  43. PLAYER ADS

  44. PLAYER ADS

  45. PLAYER ADS

  46. Let’s rewrite everything!

  47. PLAYER ADS ADS

  48. None
  49. it’s harder to read code than to write it

  50. reading code takes time

  51. Let’s add more developers!

  52. Frederick Brooks “adding human resources to a late software project

    makes it later”
  53. Starting VS joining Stories of software rewriting Own a project

  54. Start small

  55. Start small Understand the domain

  56. Start small Understand the domain Understand the flow

  57. Start small Understand the domain Understand the flow Read the

    code
  58. Start small Understand the domain Understand the flow Read the

    code Write the docs
  59. None
  60. KNOWLEDGE

  61. KNOWLEDGE TECH DEBT

  62. KNOWLEDGE TECH DEBT

  63. –Jamison Dance “Technical debt is bad code for a reason.”

  64. Start small Understand the domain Understand the flow Read the

    code Write the docs Take responsibility
  65. Start small Understand the domain Understand the flow Read the

    code Write the docs Take responsibility (but in a humble way)
  66. Thank you. Merci. Grazie. @eliamain

  67. • https://jamison.dance/12-31-2015/technical-debt-and- technical-investment • https://medium.com/@herbcaudill/lessons-from-6- software-rewrite-stories-635e4c8f7c22 • https://www.joelonsoftware.com/2000/04/06/things-you- should-never-do-part-i/ •

    https://en.wikipedia.org/wiki/Brooks%27s_law • https://developers.soundcloud.com/blog/a-pragmatic- approach-to-tech-debt-reduction (bonus)
  68. This work is licensed under a Creative Commons Attribution-NonCommercial 4.0

    International License