dev concerns that will never be a requirement from an outside business person • This can be a platform for that • It also allows feedback to allow refinements
that I need to merge my code into backstage to deploy to the backstage environment • I should be able to deploy any branch into the backstage environment
We have per app automation • We need environment automation • I should be able to create as many backstage environments as I want • Version bumping too
They run too slow, so they get pushed off till later • Our feedback loop is too long, so issues go unnoticed for far longer • The later in the cycle you catch an issue, the more costly it is to fix
for ensuring that you are writing now is working • They need to be fast (<5 seconds) • They should be unit tests (don't talk to the database or external systems) • Mock dependencies (More about this in another talk) • Unit tests inform on complexity of code. If it is hard to write tests for, it will probably be hard to maintain
Validate assumptions of code by explicitly stating them in the test • Time is an indeterminate function as far as you're concerned • Never use factory defaults for a field your code explicitly uses
acceptance testing • We currently automate G3 • We have plenty of other systems that are 100% manual QA • Acceptance tests will catch the things unit tests and component tests don't • They ensure that the businesses goals are being met
The common answer is age, but I disagree • I think legacy code is any code that doesn't adequately reflect the goals of the business • Nobody wants to be a maintainer of legacy code
with change in mind • Designing code that can't change easily means that when change is required, you become a maintainer of legacy code • Designing code that can change, allows the system to evolve with the business
with change in mind •Don't build more than what is needed • Code should be written to solve a problem • Building something that will never be needed or used is instantly legacy code • It also adds a burden, because it's hard to tell if code is used once it's in place. Which means people will be maintaining something that's never used. • It adds complexity that may never be necessary, such that someone must understand it • These apply to things done for performance as well