OK first of all if you mention anything social in the context of Flow then you don’t know what you’re talking about. Flow cannot be interrupted by discussion or conversation, once interrupted it is lost for the day. Flow is a door-closed headphones-on isolation from interruption and distraction. I don’t know what you think you’re saying with the word but it isn’t what I am. When people talk about reaching flow while pair programming I remove them from my sight.
I became acquainted with Flow early because I’ve always been able to concentrate better and longer than most other people and when I got into software I was a natural; my career skyrocketed and before I was three years into IT employment I had shipped two Microsoft products singlehandedly, one of them GUIDE, the ancestor of the SQL Server Management Console, the very first GUI interface to SQL Server and the very first Microsoft project in C++. The other was Embedded SQL For COBOL, and ramping up to that nearly killed me. But I delivered it on time.
I don’t understand much of what you wrote up there, not because it’s over my head but because you use bullshit terms. If eight people use “refactoring” they will mean at least six different things. Reformat illegible code, change the interface, change the implementation. It sounds cooooool and “engaged” but it’s just a buzzword. And “technical debt” is just a euphemism for unfinished work that disguises who didn’t fix his shit. Sapir-Whorf Hypothesis, weak version: when you think in terms that map poorly to what you’re trying to do, you don’t get a lot done.
On my last gig, where I handled the four servers (in ASP.NET), the database and schema, and IIS, and another guy did the browser, we were distributed and so of course had no idiot morning meeting. We coordinated well, mostly talking about the data we passed each other through the API. I occasionally touched up the JS to save him time communicating small changes and he occasionally went into the C# but mostly we had a clean division and we got a lot done.
The the CEO had a kid and had to back out of being a technical manager, hired a succession of dev leads steeped in this new garbage. The first one was a mental case, sprayed firehose buzzwords (“industry standard! procedural language! unit tests! when the tests all pass, you’re done!”) but once he was done evangelizing Microsoft products he was 100% impediment, demanding that we change things to be more like what he was used to; I’d written a tracelogger to learn C# and he wanted to replace it with NLog, for no good goddamn reason. No, we don’t need seven logging levels, we need verbose or regular so shut the fuck up. After he did absolutely zero other than condescend and create conflict for over two months he got the push. He was talking two weeks for each unit test, never finished one.
The next guy was all about technical debt and branch hygiene and he didn’t do anything either. He would reformat my neatly laid out code into his preferred cluttered mush, great way to start fights, and he created branches five at a time and we went from 20 unmerged branches when he arrived to 130 by the time both of us quit in disgust and they brought in some sloe-eyed gamer for the back end; last I looked at the site it was loaded with bugs. New bugs. A feature the browser guy had left 95% done is still not working. Mr. Technical Debt can’t figure it out.
So all my experience with agile/scrum/etc. is people who don’t produce fuck-all but use a lot of imprecisely-defined neologisms. I’ve gone back to solo freelancing and since there is almost none of the work I like going on there I’m doing technical writing, making the best money of my life, because guess what: hardly anyone in IT can write. I got hired less than three days after putting in for the job. Everyone who wanted me for servers or mobiles wanted onsite, and that is NOT going to happen, never again. Not with open offices, foosball tables, jargon and daily scrums. So sir ree.