Episode 5 - Supercharge Your Coding Skills By Learning Software Architecture
Becoming a professional software developer is more than just getting better at a particular language, or learning more algorithms. You must learn about the development process itself, about design and architecture of a product. Following are a few things to consider/
- Make sure your code is the correct code for the project as a whole.
- Does it help you achieve the larger goals?
- Does it impede future development or constrain possible future goals in any way?
- Can you adjust constraints in a way that adds more value to the product?
- What are the documentation implications of writing it a particular way?
- Is it easy for someone else to pickup where you left off?
- How should I break down the tasks into small ones such that there’s time to test things out and increase confidence on the new changes?
- Consider customer usability and prioritize a consistent experience for all users across the entire product.
- What about consistency for developers?
- How organized and readable is your codebase? As we’ve said before, writing code is like writing a novel. You write it once or twice, but you read it a lot more.
- Remain flexible and avoid locking yourself into a particular technology implementation.
- Don’t count on being able to refactor later, sometimes its cheaper to do that up front.
- Learn to prioritize!
- Work with the larger product team to understand the best strategy for delivering a task.
- Don’t take your assigned tickets at face value, try to understand their purpose.
- Sometimes you can prioritize smaller features with slight tweaks that greatly improve speed of delivery of a larger item coming down the pipe.
- Don’t be afraid to reduce priority.
- Get the data you need to understand a feature’s value to your customer and the company.
- Don’t forget the backlog!
- Pay attention to how your code integrates with other pieces.
- Some of those pieces may apply constraints you’re unaware of.
- Think through and understand the edge cases.
- Consider the different deployment and distribution strategies.
- Do you have compatible data formats with the rest of the system?
- Are all data exchanges really needed?
- Is my code adding latency to a larger workflow?
- Focus on security and make sure you follow organizational guidelines.
- Are you introducing new vulnerabilities?
- Do you need all the data you have access to?
- Does it open a new attack vector?
- Lack of communication and coordination generates serious problems for the entire team.
- You must know how to explain what you’re doing to the rest of the team.
- Keep people up to date with progress and problems you find while actively learning about their problems.
- Speak up if someone else’s changes affect the architecture or overall goals.
- Talk over your design considerations with coworkers. Just articulating what you’re thinking will help your thoughts better.
Background music by Vendredi from Audio Library+