4 ms·
Opinions diverge largely, I'll gift you with mine. I worked in the early half of my career in an emerging market which shaped my preferences around dealing with
by ggeorgovassilis 4y ago
Opinions diverge largely, I'll gift you with mine. I worked in the early half of my career in an emerging market which shaped my preferences around dealing with an extreme degree of uncertainty: changes in requirements, assumptions invalidated, resource starvation, bugs in dependencies, organisational changes, badly timed management interventions etc. If you work in a mature setting, stop reading now, nothing of what I write will make sense.
Unknowingly, I self-aligned with what in India is known as the Jugaad work culture [1]. Jugaad favours extension by addition over modification. I combine Jugaad with a growth (software grows almost uncontrollably) & pruning (refactoring) complementary-phase.
In the growth phase, I build processes and software architectures that can be changed by adding something on top of the exiting system rather than modifying or removing. Test-driven-design helps me with the right decisions. I don't obsess over clean code, the test pyramid or documentation in the growth phase. Tests written in this phase serve either as a work bench (I need to run a piece of code often and don't want to wait for a deployment or server to start) or as a guard against regression. I want to move forward as quickly as I can before the bad design decisions I just made catch up with me.
In the pruning phase I refactor the code I wrote, add tests, write documentation, replace hard-coded values with configuration etc.
The reason for the two phases over a single continuous phase is that I observed a distinct summer-winter duality in projects where some times projects seem to teem with life and in others they are stuck waiting for decisions. Or put in other words: the immense pace at which Jugaad allows you to forward a project forces backpressure against business which then needs to "collect its thoughts" and gives you time for the pruning phase.
And if time/money is tight: common environment, smoke tests, then containers, then end-to-end tests, then everything else.
[1] https://blog.georgovassilis.com/2020/09/13/draft-jugaad-takes-agile-to-the-extreme/ https://blog.georgovassilis.com/2020/09/13/draft-jugaad-take...