You should have basic coding skills ( java, nodejs, python.. ) which depends on the technology stack you are using.
Along with this you should have a knack for learning. To understand the implementation of Blockchain you should know basic Datastructures along with some basics of cryptography.
I would suggest start with a steem based distributed application built on MEAN stack, you can find many such applications on github.
I believe the best way to learn is to actually start with some project, and you learn as you progress.