Best practice tips
for efficient SW development

 

Jiří Stránský

DevConf.cz 2022

Why i talk about efficiency

OS Migrate project
OpenStack cloud-to-cloud migration toolkit

3 people team for:
development, testing, docs,
CI ops (3 clouds),
supporting users.

In general

There's a lot on our plate.

Work insane hours? No!

Improve how we spend time!

⬆ Intentionality; ⬇ Aimlessness

"What am I solving by doing this?"
"Is it worth the time?"

Existing activities:
Retrospect. Don't get stuck in obsolete activities.
Hint: Question disliked activities/patterns.
 

⬆ Intentionality; ⬇ Aimlessness

"What am I solving by doing this?"
"Is it worth the time?"

New goals:
"What do we want to achieve?" is not enough.
"How much of our time is this goal worth?"
Adjust goal scope accordingly.

⬆ Intentionality; ⬇ Aimlessness

"What am I solving by doing this?"
"Is it worth the time?"

Experiments:
Often necessary for progress!
Define "why", scope, timebox.
 

⬆ Order, Consistency; ⬇ Chaos

Inherent complexity vs added complexity.
en.wikipedia.org/wiki/Decision_fatigue

Automate all the things.
If you can't automate, document.

Consistency with existing suboptimals
can be better than isolated improvement.
(When refactoring, fix all occurences.)

Examples from OS Migrate (1/3)

CI philosophy:
CI is the focal point of QA.
Strict separation tests vs CI, documented.
All test types runnable by devs, exactly as CI. Containerized dev/CI environment.

Examples from OS Migrate (2/3)

Testing philosophy:
Separate internal logic from external API calls
so that unit tests can be written without mocks.

Unit tests for pure internal logic only.
Functional tests for involving externals.
➡ Tests easy to write and maintain.

Examples from OS Migrate (3/3)

CI ops:
3 clouds / 5 routers / 11 subnets / 20 servers.
All virtual.
No HW procurement, no obsolesence.
Scales dynamically. Software-defined, automated.

Summary

Keep costs (effort) proportional to benefits.
"Why". Scope. Timeboxing. Retrospectives.

Keep your brain power for the important stuff.
Automation. Documentation. Consistency.

Thanks for listening

github.com/os-migrate/os-migrate

jistr.com/about