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 full-size slide

  2. Getting a Job

    View full-size slide

  3. Recommendations
    Mentor Meaty Meet-y?

    View full-size slide

  4. Sources
    • Google

    • Documentation

    • Books & articles

    • Classes

    • Talks

    • Samples

    • StackOver
    fl
    ow

    • Code exercises

    • Open source

    • Other people

    View full-size slide

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

    View full-size slide

  6. 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 full-size slide

  7. 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 full-size slide

  8. Software development is a
    non-linear process

    View full-size slide

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

    View full-size slide

  10. 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 full-size slide

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

    • Easier to develop

    • Easier to review code

    • Easier to change direction

    • Easier to merge code

    View full-size slide

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

    View full-size slide

  13. Acronyms
    • DRY - Don’t Repeat Yourself

    • YAGNI - You Aren’t Gonna Need It

    • KISS - Keep It Simple, Stupid

    View full-size slide

  14. KISS Example
    • More states -> more complex

    • Examples…

    • Enums > strings, numbers

    • Immutability > mutation

    • Pure functions > side e
    ff
    ects

    View full-size slide

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

    View full-size slide

  16. Code Reviews
    Embrace


    Questions

    Discussions

    Compliments
    Avoid


    Code style

    Syntax

    Preferences
    Nitpicks

    View full-size slide

  17. 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 full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  22. Testing Thoughts
    • Be tactical w/ test coverage

    • Flakey tests are worthless

    • Add manual testing tools

    View full-size slide

  23. Debugging
    • Print is okay

    • Debuggers are better

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

    View full-size slide

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

    • Better answers than “work harder”:

    • Over-estimate

    • Cut scope

    • Let deadlines slip

    View full-size slide

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

    View full-size slide