язык сам по себе ничего не решает, это просто способ задать определенную последовательность действий/вычислений. и без знаний в смежных областях/предметной области он становится достаточно бесполезным.
занимаетесь сетевым программированием? нужно знать устройство сетей, основных протоколов.
занимаетесь обработкой данных? нужно знать базы данных и/или иметь представление о статистике.
занимаетесь системным программированием? нужно знать устройство осей.
занимаетесь акаунтингом? нужно иметь представлении о бухгалтерии.
и т.д. и т.п.
другими словами: нужно и стоит расти не только в глубь, но и в ширь.