Sort:  

Looks fairly difficult after reading this post.

Writing code is easy but making something that's actually useful is quite hard.
It can take dozens of professional developers years to finish a product depending on scope.
Creating a robust modular product that isn't going to break when things change is even harder.

Perhaps the hardest thing any programmer can do is to make a "program" easy to use. It's why so much time is devoted to error checking and idiot proofing. It's also why UI design is deceptively easy yet maddeningly difficult.

When I was learning C in college (but before I had learned C++), I was introduced to recursion by needing to solve the Towers of Hanoi problem: Move 4 rings from Tower A to Tower C one at a timewhile top ring stays smaller than rings under it. Without recursion, you would end up wanting to celebrate your birthday with Justin Sun.

One practical problem to solve using recursion is to find all the ways to pay for 1st class postage using 4 stamps. This is easier to bisualize conceptually, and recursion makes more sense here

Eventually the light bulb turns on regarding recursion. Once that happens, you'll want to go back to your older code and see where you can replace older code with recursive code.

Writing code is the easy part - anyone can learn to write code. Debugging it, making it work together with existing code, etc - all the other parts of being a programmer... that's the hard stuff (And the reason I don't fear AI taking my job).