Программист / Software Engineer
Основа любого современного приложения, компьютерной программы - код.
Именно программисты учат программу выполнять операции, которые нужны пользователям.
Программист конечно занимается созданием кода программы. Но считать, что он только кодит, это иметь неправильное представление о данной специальности. Кроме языка программирования, надо уметь работать в интегрированной среде разработки - знать как завести проект, уметь подключить нужную библиотеку, правильно заливать код в репозиторий, знать о жизненном цикле приложения. Надо быть готовым ежедневно решать возникающие вопросы с тестировщиками, PM-ом, дизайнерами и другими специалистами, работающими в команде.

Начинать надо с понимания того, что тебя привлекает. Если мобильные приложения, то выбор надо делать между платформами iOS или Android. Если хочешь заниматься веб-приложениями, то надо сначала определиться на какой платформе оно может быть или может, вообще кросс-платформенным. Лучше не распылятся, а сосредоточиться на чем-то одном. Прежде чем выбирать, какие фреймворки изучать, узнай что сейчас используют компании, в которые ты будешь посылать свое резюме, какие продукты они делают, какие стек- технологии используют.
С опытом переход с одного языка программирования на другой не будет представлять больших сложностей.

Александр
Tech Lead, KeepSolid
Какие качества нужны для этой профессии?
Хорошая логика
Логическое мышление помогает работать с алгоритмами. Алгоритмы - это последовательность операций, прописываемые с помощью специальных компьютерных языков.
Усидчивость и внимательность
Способность долгое время работать с программным кодом, поддерживая высокую концентрацию внимания, помогает программисту работать продуктивно и делать меньше ошибок.
Математические способности
Математический склад ума позволяет на основе математических моделей и алгоритмов разрабатывать программы выполнения вычислительных работ.

Знание языков программирования
Чтобы компьютеры выполняли нужные алгоритмы программист переводит алгоритмы решения на формализованный машинный язык.
Готовность учиться
Точно так же как периодически приходится делать апгрейд компьютерных программ, программисту необходимо делать апгрейд своих знаний. В этой стремительно развивающейся сфере так быстро появляется что-то новое, что без постоянного обучения и расширения своего кругозора невозможно оставаться хорошим специалистом.
Работа в команде
Чаще всего программисту приходится работать в команде. С кем-то из коллег он обсуждает способы выполнения работы. Кому-то передает результат своего труда. От кого-то ему надо получить входные данные для выполнения своей работы. С кем-то надо решить как же лучше выполнить ту или иную работу.