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

Letter to a Junior Developer: The Engineering Side of Programming

Letter to a Junior Developer: The Engineering Side of Programming

Slides from my talk at ex-YU IT Experts event organized by www.NemackiKutak.com and https://tech.Wayfair.com in Berlin.

Lazar Kovačević

November 07, 2019
Tweet

Other Decks in Programming

Transcript

  1. LETTER TO A JUNIOR DEVELOPER:
    THE ENGINEERING SIDE OF PROGRAMMING
    @LazarKovacevic

    View Slide

  2. Programmer ???

    View Slide

  3. Engineer ???

    View Slide

  4. View Slide

  5. story time...

    View Slide

  6. but why ?!
    The Future of Programming
    by Robert C. Martin (Uncle Bob)


    https://www.youtube.com/watch?v=BHnMItX2hEQ

    View Slide

  7. how ?
    Engineering Standards and Disciplines!

    View Slide

  8. what exactly ?

    View Slide

  9. Step 1:
    programming language

    View Slide

  10. do NOT choose
    JavaScript !!!

    View Slide

  11. do NOT choose
    JavaScript !!!
    SERIOUSLY !!!

    View Slide

  12. do NOT choose
    JavaScript !!!
    SERIOUSLY !!!
    * not YET...

    View Slide

  13. Java / C#
    or
    Python / Go / PHP / Ruby / JavaScript / ...

    View Slide

  14. write
    some
    code!

    View Slide

  15. • practice OOP concepts
    • make simple small programs
    • no GUIs for now...

    View Slide

  16. Step 2:
    IDE + Text Editor

    View Slide

  17. Step 3:
    Web MVC* framework

    SpringBoot / ASP.NET MVC / Django / Symfony / Rails / ...

    View Slide

  18. write
    some
    code!

    View Slide

  19. • make a fully working project

    (couple of entities, GUI, CRUD) 

    • make another one 

    • deploy it, make sure it actually works!

    View Slide

  20. Step 4:
    Algorithms and

    Data Structures

    View Slide

  21. write
    some
    code!

    View Slide

  22. Congrats! You are now a
    Junior Programmer!

    View Slide

  23. you are NOT

    the king of the world!
    * yet...

    View Slide

  24. NOW the Engineer's
    Journey begins!

    View Slide

  25. Step 5:
    Clean Code

    View Slide

  26. "Clean Code:
    Fundamentals"
    video series on
    cleancoders.com
    or

    View Slide

  27. • Naming
    • Functions
    • Comments
    • Formatting
    • Error Handling
    • Unit Tests
    • Test Driven
    Development
    • Refactoring
    • Code Smells
    • ...

    View Slide

  28. write
    some
    code!

    View Slide

  29. Congrats! You are now a
    Junior Engineer!

    View Slide

  30. you are still NOT

    the king of the world!

    View Slide

  31. Step 6:

    Software Architecture

    View Slide

  32. Hexagonal / Ports and Adapters / Plug-in / Clean / ...

    Architecture

    View Slide

  33. "Clean Code:
    SOLID Principles"
    and
    "Clean Code:
    Component Design"
    video series on
    cleancoders.com
    or

    View Slide

  34. write
    some
    code!

    View Slide

  35. Step 7:

    Design Patterns

    View Slide

  36. write
    some
    code!

    View Slide

  37. now you know,

    you will never be the
    king of the world

    View Slide

  38. but...

    View Slide

  39. NOW you can write
    JavaScript !!!

    View Slide

  40. NOW you can write
    JavaScript !!!
    TypeScript

    View Slide

  41. Step 7:

    Agile

    View Slide

  42. Scrum

    Master

    View Slide

  43. or or
    "Clean Code:
    Agile"
    video series on
    cleancoders.com

    View Slide

  44. View Slide

  45. want to learn more?
    • learn more about TDD:

    - Test Driven Development: By Example - Kent Beck

    - "Clean Code: Advanced TDD" video series on cleancoders.com
    • Refactoring:

    - Refactoring: Improving the Design of Existing Code - Martin Fowler
    • learn more about Software Architecture/Design:

    - Patterns of Enterprise Application Architecture - Martin Fowler
    • learn how to cope with Legacy Code:

    - Working Effectively with Legacy Code - Michael Feathers

    View Slide

  46. Twitter:
    @LazarKovacevic


    Linkedin:
    linkedin.com/in/lazarkovacevic

    View Slide