Question about importance of dynamic programming

I am really struggling with dynamic programming. Everytime i see an explanation for an algorithm it seems very logic but when i try to come up with one myself i do not know where to start.

The steps i follow are usually:

  • try to find trivial cases
  • try to find optimal subproblems
  • try to build the recursion tree and see what overlaps

So my my questions are:

  1. How important is mastering dynamic programming in a computer science career?
  2. Any good resources for learning dynamic programming?(I currently use “Introduction to algorithms 3rd edition”)