In an operating system, falling out of synch can crash the system in short order, and the same is often true of network programming, although sometimes only one of the systems in the network crashes. This is a small relief, because the synchronization problems, and the conflict between the need for synchronization and the need for independent operation are much worse. I've worked on a few systems like this before, so I know my way around some of the problems. All too soon, I've arrived at the areas where the problems created by the special requirements of the design crop up. This seems to be the way of it in the programming business.
Known problems compress away and disappear, and only the hard stuff is left.
Smart people take time over easy things, but dumb programmers like me are in a hurry to work on hard things all the time. Sometimes we play Tetris. When that palls, we write Tetris. Sorry for going on like that. It's not as bad as it seems, since what I'm working on is just a game, and not a nuclear power plant control program or anything scary like that.