I made this document because I wanted to share my philosophies on development, including some basic architecture, why I write it like that, and how it can be tested (which is usually the "why" haha). I'm not a big fan of code bases that are difficult to understand and debug because everything is coupled, there's no injection, or the code isn't self documenting. I **hate** being anxious if I'm pushing a release. I'd much rather be confident in it. I don't want to be brain dead at 5pm feeling like I didn't accomplish anything because I spent the whole day trying to track down a bug on a page or screen that takes 10 clicks to get to. It doesn't need to be this hard! We can make it so easy, it's almost boring.
I've been writing iOS apps since 2015, Android apps since 2016, and React apps since 2019. Working on multiple platforms has helped me develop repeatable and testable architecture that can be shared across all three. The goal of this documentation is to share that knowledge and give examples of simple scalable patterns that focus on separating responsibility and writing tests.
With planned and testable architecture (of any kind) we can stop reinventing the wheel and make our professional lives a little easier (and potentially more satisfying) so we can get back to living life.
I wrote this documentation to share the things that have repeatedly saved me time, energy, and frustration in order to potentially save time, energy, and frustration of some other developers, to give my fellow developers patterns to use, to show other folks testing doesn't need to be difficult and can actually be satisfying, to teach about testing in general, and to be able to show people a direct reference into how I work and think.