I took several free online courses, read a lot, and practiced on side-projects. But the main and most crucial part of my learning path was getting jobs where I could learn in real world scenarios.
Being self-taught is hard, but very cheap. It only works, however, if you're diligent, determined, and persistent.