That's grammatical sleight-of-hand, but I take your point; we definitely agree on the major problem.
Programming is a field where I suspect there's far less correlation between formal training and quality/productivity than most other fields. I took a handful of CS classes in college, and they were useful -- I hadn't previously encountered stuff like sparse matrices, fancy hashing/sorting algorithm, balanced trees, etc... not to meniton some good consideration of numerical algorithms for solving differential equations, integrating, etc., although in practice few people implement those when robust library routines are available to do so. But I was already a better programmer coming out of high school than some people I know with 4 year CS degrees today, which is a sad commentary on CS degrees (since I'm certainly not any sort of genius).
Agreed 100% -- simpler and more reliable to just sample than to try to get fancy with edge interrupts.
20Hz does seem fine. I normally sample push buttons at 60Hz, but it's because I often already need a 60Hz interrupt around anyway to do something else.---Joel