The other programmers haven't forgotten; they're deliberately not using it. |
At another company I used to work for, there was a department in Europe where one guy was spearheading a major project. He was championing a major state machine tool (I think he had been involved in some research around the tool), and everything about the project was structured to use the state machines whenever possible. The code was slow, cumbersome, and very spaghetti-like. A single external event would get processed and fed back in as internal events over and over again. Simple control logic (if/else, switch) was processed using feedback events rather than C++ control statements (because that's how you were supposed to do it in a state machine framework).
The guy took a 6 or 7 week vacation (this was Europe after all), and while he was away, the rest of the team rewrote the entire project in straight C++ without the state machine infrastructure. The code was immediately faster and easier to understand, and the rest of the team loved it. When he got back from vacation, he saw what had been done, and promptly resigned.
There are a number of lessons to learn here. One is, don't force other to use constructs that are cumbersome and obtuse and don't add any benefit. They won't unless forced to do so.
p.s. By the way, I love state machine programming. I worked on a related project using the same tool. The state machine itself was probably originally designed by the same people, and every state in the system was represented by an input in the state machine, and every input in the system was represented by a state in the state machine. It drove me batty. Please don't take this as a denigration of state machines in general, and not even of the specific tool being used--just the specific state machine insances used in these particular projects.