Notice when you are stuck.
If there was a module that did X, this problem would be really easy.
Search for X.
If X exists, use it!
If X doesn't exist: write it, test it, publish it.
As you write X, notice when you are stuck and iterate as necessary.
When you pick a narrow problem to solve:
- contributing is easier.
When you pick a narrow-enough problem
Sometimes, guess and test
If it's your first time, type