Сложность в понимании ибо это зачастую сложнее всего (так же каждый язык по своему сложный есть и похожие языки).
ТУТ подходит фраза(если посветить дохера времени какой либо фигне то в этой фигне ты достигнешь нефиговых результатов).
- Есть стандарт языка с формальным описанием синтаксиса/поведения программы.
- Есть набор того, что принято называть "паттернами". Паттерн - это совет типа "не забивайте гвозди в стену отверткой, пораниться легко. Для решения таких-то задач можно пойти такими, такими и такими путями, а вот такими лучше не идти, потому что может произойти то-то и то-то".
Научиться языку - это значит осознать паттерны для него и привыкнуть к ним.