Working from home is great if you have autonomy and can build a chunk of software with minimal oversight. But if your dev process revolves solely around collaboration in an open plan office then it's not going to translate well to WFH at all. You simply can't have 3 non-tech people for every dev that all need to be kept in the loop and are continuously making decisions when you're not physically there to keep the conversation grounded. Every big business job I've had has tons of these people that go out of their way to keep everything from the devs until the very last moment because "they're too busy" (with the last huge chunk of pointless work their decisions generated that could have been prevented with a 20 second conversation instead of 18 hours of bikeshedding meetings).
And devs are as guilty of this as everyone else. Right now things like code reviews and unit tests are the shit hot trend. "Agile" and "scrum" and whatever else are also red hot. The combination of both means the "default" way to build software is to break everything down into chunks that take hours, and run all the trendy processes on that time scale. If you're breaking every 45 minutes to do a code review, you're going to lose a huge part of the benefit of WFH, whereas in a hotdesking office environment you probably weren't going to build much momentum anyway so it's a much smaller sacrifice. The reason people are losing so much productivity is because before they probably palmed those tasks off to their in-office days so the 1 or 2 WFH days a week were highly productive (at least I know mine were). With 5 WFH days a week that's not an option.
The way to run a dev team remote is to give people more autonomy and bigger chunks of work, and tear down communication channels. Start measuring in weeks or months, let the engineers make the decisions and use their judgement on when to loop someone into a conversation. Teams need to be smaller, with 2/3rds devs and roles like product owner and BA providing support, instead of running the show. These roles need to be domain experts with a thorough understanding of what the business requires and an understanding of how software can meet that need. They should be a fountain of knowledge for the devs to access at their own pace, not just mindless machines that shit out JIRA cards with too much boilerplate. And devs need to take on more responsibility, broaden their non-technical skillset, and focus their tech capabilities more on the fundamentals (quality code that produces for the business), and less on setting up elaborate structures that require constant upkeep and communication within the team (huge test suites, elaborate cross-project CI/CD setups, ridiculous webpack configs, constant code reviews, endless NPM dependencies and convoluted patterns that restrict creativity and increase mental load).
If you want to be productive from home, you need to create an environment where you can just sit down for a few hours, get in the rythym, and produce quality software. If I think of any great software from the past, or the engineers that produced it, none of them were doing it in anything that looked remotely like the dev environments we have today. Shit, most of them did it from home, or from offices that were so cozy and personal they may as well have been home.
I think we've spent the last decade trying to distill software development down into some finely tuned machine that any old cog can drive, and counterintuitively, the further it goes the shittier the software becomes. When I flip through older books like Peopleware, it makes me cringe at how many of the lessons in there still aren't followed, and the amount of problems that were pointed out in the 80s and 90s that aren't only unresolved today, but have seen negative progress.
I see covid-19 as a chance to try something different. Most companies are going to continue to make the same mistakes, and mass WFH will never see adoption as long as they do. So you can pretty much put that dream to rest. But I'm going to be working from home a lot in the future, and try doing things another way for a change.