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?
Continue reading

Episode 4 - 7 Practices for High Quality Maintainable Code

13 mins
2020-02-24 engineering testing
  • Code is complicated, hard to test, difficult to understand and can frustrate others.
  • Writing cleaner code can save you from reimplementing software simply that you cannot understand.
  • It’s an iterative process and there’s several principles to help you do that.
  • Keep it Simple Stupid (KISS) tells us to avoid unnecessary complexity and reduce moving parts. The idea is to write for maintainability.
  • Don’t Repeat Yourself (DRY) is about avoiding redundant implementations of the same function. You should think about refactoring.
  • You Aren’t Gonna Need It (YAGNI), an Extreme Programming principle, says we should stick with the requirements and avoid adding unneeded features or functions.
  • Composition over Inheritance asks us to take care when applying classes an inheritance in your design because it can lead to inflexible code.
  • Favoring Readability reminds us that writing software is like writing prose. Organize your code as if you’re writing a novel.
  • Practice Consistency tells us to stick with our decisions throughout the project. Keep the same format, implementation flow and design principles.
  • Consider How to Test a solution before writing it, or at least while writing. It helps you avoid traps that can unnecessarily complicate the code base.
Continue reading

Comprehensive CI/CD System Design

Continuous integration and delivery is finally becoming a common goal for teams of all sizes. After building a couple of these systems at small and medium scales, I wanted to write down ideas, design choices and lessons learned. This post is the first in a series that explores the design of a custom build system created around common development workflows, using off-the-shelf components where possible. You’ll get an understanding of the basic components, how they interact, and maybe an open source project with example code from which to start your own.

Continue reading
© Copyright 2020 - tryexceptpass, llc