Join Our Newsletter

Episode 5 - Supercharge Your Coding Skills By Learning Software Architecture

14 mins
2020-03-09 engineering

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+
© Copyright 2020 - tryexceptpass, llc