Software Development Deconstructed
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, especially for new team members
- Writing documentation
- Managing dependencies
- Performance improvements
- Communicating with other developers
- Knowledge/skills sharing
- Deciding on code style, trade-offs, conventions
- Code reviews
- Writing RFCs/specs
- Pair programming
- Designing interfaces
- API design
- Monitoring systems
- Alerts
- Working on a team
- Managing expectations with stakeholders
- Interfacing with other teams (design/product)
- Staying physically capable of continuing programming
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.
« Apollo Server: Initializing Data Sources Adding an Instructional Overlay for first time users to your app in iOS »
Did you find this helpful? Get updates when I post more like this by subscribing to the Nerd Tower newsletter.