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

Things Maybe You Don't Know as a Newer Developer

Things Maybe You Don't Know as a Newer Developer

Recording: https://www.youtube.com/watch?v=i4egHyIV_vE

Talk given at Minnebar 17.

I’ve been working as a software developer for over 15 years, and I’m hoping to compile a useful list of general software development advice I wish someone had taught me from the start.

Daniel Lew

April 22, 2023
Tweet

More Decks by Daniel Lew

Other Decks in Programming

Transcript

  1. Things Maybe You Don't Know as a
    Newer Developer
    Dan Lew
    (Yes, that’s me)

    View Slide

  2. View Slide

  3. Getting a Job

    View Slide

  4. View Slide

  5. Recommendations
    Mentor Meaty Meet-y?

    View Slide

  6. Learning

    View Slide

  7. View Slide

  8. Sources
    • Google

    • Documentation

    • Books & articles

    • Classes

    • Talks

    • Samples

    • StackOver
    fl
    ow

    • Code exercises

    • Open source

    • Other people

    View Slide

  9. https://www.
    fl
    ickr.com/photos/43810158@N07/8426525097

    View Slide

  10. The XY Problem
    How do I get the last

    three characters

    of a
    fi
    lename?
    Did you mean, how 

    do you get 

    a
    fi
    le extension?
    https://commons.wikimedia.org/wiki/File:Two_young_people_demonstrating_a_lively_conversation.jpg

    View Slide

  11. Take your time
    • Don’t just copy + paste from StackOver
    fl
    ow

    • Understanding > working

    • Solution might suck

    • Easier to modify code later

    • Build your knowledge base

    View Slide

  12. Development

    View Slide

  13. Software development is a
    non-linear process

    View Slide

  14. Planning
    Sketch Discuss
    Prototype
    https://www.
    fl
    ickr.com/photos/54327699@N02/8108596621

    View Slide

  15. Design
    • Rarely one correct design

    • Save time by avoiding perfectionism

    • Prefer two-way doors
    https://commons.wikimedia.org/wiki/File:Set_of_Crash_Bar_Doors.jpg

    View Slide

  16. Divide & Conquer
    • Multiple small tasks > one big task

    • Easier to develop

    • Easier to review code

    • Easier to change direction

    • Easier to merge code

    View Slide

  17. Hiding Work
    Avoid
    fi
    nal hookup
    https://www.
    fl
    ickr.com/photos/43053584@N00/2395215000
    Feature
    fl
    ags

    View Slide

  18. Acronyms
    • DRY - Don’t Repeat Yourself

    • YAGNI - You Aren’t Gonna Need It

    • KISS - Keep It Simple, Stupid

    View Slide

  19. KISS Example
    • More states -> more complex

    • Examples…

    • Enums > strings, numbers

    • Immutability > mutation

    • Pure functions > side e
    ff
    ects

    View Slide

  20. Code Review Focus
    API
    Bugs
    Architecture
    Maintainability
    Readability
    Tests
    Less important
    More important

    View Slide

  21. Code Reviews
    Embrace


    Questions

    Discussions

    Compliments
    Avoid


    Code style

    Syntax

    Preferences
    Nitpicks

    View Slide

  22. Being a good teammate
    Get stu
    ff
    done Don’t be a jerk
    Help others
    https://commons.wikimedia.org/wiki/File:Long_spoons_modern.jpg

    View Slide

  23. Testing
    https://commons.wikimedia.org/wiki/File:Laboratory_scientist_conducts_an_experiment_with_a_Rotary_evaporator.jpg

    View Slide

  24. Two Testing Styles
    https://www.
    fl
    ickr.com/photos/mike_grauer/16898327310/
    Manual
    https://commons.wikimedia.org/wiki/File:Multiple_Server_.jpg
    Automated

    View Slide

  25. Why automate?
    Safer Refactoring
    Fast
    Repeatable
    https://www.
    fl
    ickr.com/photos/14246866@N05/2207257172

    View Slide

  26. Test-driven development
    Verify un
    fi
    nished features Better architecture
    Faster development
    https://www.
    fl
    ickr.com/photos/katiekrueger/2351656805

    View Slide

  27. Testing Thoughts
    • Be tactical w/ test coverage

    • Flakey tests are worthless

    • Add manual testing tools

    View Slide

  28. Debugging
    • Print is okay

    • Debuggers are better

    • Debuggers are not (that) scary
    https://www.wannapik.com/vectors/67772

    View Slide

  29. Releasing

    View Slide

  30. Hitting deadlines
    • All estimates suck, so deadlines are often incorrect

    • Better answers than “work harder”:

    • Over-estimate

    • Cut scope

    • Let deadlines slip

    View Slide

  31. Avoid releasing…
    When fatigued In a rush
    Before weekends

    View Slide

  32. View Slide