Дружище, ну ты темы плодишь))
Не нужно становиться универсальным программистом. Просто, чем дальше в опыте, чем с большими технологиями сталкиваешься, тем больше становится все равно на чем разрабатывать. Зная один яп, изучение следующего дается быстрее, а изучение следующего - еще быстрее. На чем задачу поставят - на том и сделаешь. Работа разработчика такова, что каждый новый проект, это задача которую ты еще не решал. Мы же инженеры, у нас работа что-то придумать, чего еще никто не делал.
И не нужно сравнивать Data scince с разработкой ПО. Анализ больших данных и разработка хоть и относится к IT сфере, но пересекаются косвенно.
Может не хватать только одного навыка: любви к делу. Вот и вся мотивация, это любопытство, азарт решить задачу, желание уметь, быть лучше других. И еще раз повторюсь, это умение постоянно самообучаться, я считаю самое важное для разработчика.