What does a Software Developer do?

  • Name things
  • Setting constraints
  • Maintaining code
    • Refactoring
  • Manage responsibility of code
    • Understand responsibility of systems/structures/etc
    • Separation of concerns
    • Ownership
  • Debugging
    • Debugger, breakpoints
  • Testing
    • Frameworks
    • Methodologies
  • Deploying/releasing updates
    • Build system/CI
  • Reading documentation
  • Building solutions
  • Writing code
    • Managing dependencies
      • Upgrading dependencies
    • Managing code repository
    • Configuring editor/IDE
    • Ensure code readability
    • Writing documentation
  • Performance improvements
  • Communicating with other developers
    • Knowledge/skills sharing
    • Deciding on code style, trade-offs, conventions
    • Code reviews
  • Designing interfaces
    • API design
  • Monitoring systems
    • Alerts
  • Working on a team
    • Managing expectations with stakeholders
    • Interfacing with other teams (design/product)

Questions I ask myself constantly

  • How can it break?
  • How will we know when/if it breaks?
  • How can we make it easy to fix when things break?
  • What is this called?
  • What is the responsibility of this?
  • What will the user think?

Thanks to Mike Watts and Frank Carnevale for comments and feedback on this post.