1. How server works
2. Http related concepts
3. Auth mechanism and password security, which encoding method to go
4. Database options, neo4j/mongodb/sql
5. Language options, ruby/js/golang
6. Framework options, emberjs/flask/martini/rails
Above are just some challenges I faced. As I mentioned previously, a single part in any field is not difficult to grasp, but to understand X, learners like me probably have to go further to have some idea of prerequisite knowledge. The time and energy on this can not be neglected. It also takes time to have new knowledge fully absorbed (or to a useful level). Before that, things can be chaos in my mind.
Perhaps my way to learn and practise is not very efficient. I did make progress, though. It's just a bit slow. I'm about to finish my client-side coding in a couple of months. Hopefully, I can ship before winter.
[Edit] Format revised