https://www.cesarsotovalero.net/blog/dynamic-programming-classics.html
All software engineers should be able to understand dynamic programming. I give a curated list of very representative problems and explain their solutions.