Насколько тяжело стать программистом? Зависит только от того, кто пытается им стать.
Работа программиста, это прежде всего алгоритмы. Компьютер умеет только 2 вещи - математические (в т.ч. логические) операции и перенос данных с одного места в другое. Настолько низкоуровневое программирование уже не встречается, но сложность работы от этого не сильно уменьшилась.
Программист, в первую очередь, это аналитик, который анализирует задачу и на основе анализа формирует серию алгоритмов для достижения поставленного результата из текущих условий, а когда вся картинка собралась в голове, то этот алгоритм переносится в код. Синтаксис ЯП (не из экзотических) на работу влияет, но не критично. Любой ЯП это базовый синтаксис + форма
Допустим нам нужно работать с автомобилем в программе. Компьютер не знает, что такое автомобиль и знать не может. Следовательно мы создаем какую-то структуру данных, в которой мы указываем все характеристики автомобиля. Потом мы описываем все изменения, которые могут произойти с автомобилем (в рамках задачи). Причём одна из основных сложностей работы программиста в основном и заключается в полноте и точности описания.
Компьютер работает со строго определенными данными. Такие слова как "возможно", "примерно", "так же", "подобно", "понимаешь" не допустимы. Строгие математические модели и строгая логика. Иначе просто ничего работать не будет.
Почему на 30-35+ программистов со стажем смотрят косо, а на "вайтишников" 30+ вообще не смотрят? Потому что есть сомнения в том, что они смогут нормально сформировать и построить ту логическую и математическую модель, которая потом ляжет в основу программы. И если 35+ программист может спокойно "на опыте" решать задачи, то 30+ "вайтишник" если и сможет что-то сделать, то с большим числом ошибок и затратами времени. А скорее всего просто не решит.
Выучить синтаксис языка, при понимании базы, можно за неделю, но синтаксис - это не более 10% работы программиста. Остальные 90% это именно построение и реализация математической модели какого-либо процесса.
Начал писать про структуру программы, но потом понял, что будет дикий лонгрид по тому как вообще устроена программа.
В качестве теста на ИТ-специалиста попробуйте выполнить следующее упражнение:
Возьмите дома любой предмет и проведите его "оцифровку". Оцифровка должна соответствовать следующим правилам:
- каждое свойство имеет ключ (название свойства) и его значение;
- значение свойства может быть числом или словом;
- ключ всегда уникальный;
Например:
Предмет: ручка
Цвет_пасты: Синий
Длинна: 147 мм
Теперь оцифруем то, что с этим предметом можно сделать. Записываем 3 - 5 действий которые мы можем сделать с предметом.
Теперь для каждого действия мы записываем те же пары ключ - значение, но уже в формате:
ключ - старое значение (до действия) - новое значение (после действия).
ВАЖНО!!! Если вы при записи действия поняли, что нужно поменять значение, которого у Вас нет, то это ошибка моделирования.
Если у вас получается держать в голове объект хотя бы на 5 - 10 свойств и 3 - 5 действий с ним в разрезе ключ-значения, то мозг достаточно гибкий для начала программирования.
Второй момент - аккуратность. Ещё лет много назад заметил, что ИТ-специалисты пишут с гораздо меньшим числом ошибок. Потому что для компьютера Иванов и Ивонов, это не орфографическая ошибка, а два принципиально разных субъекта... И самая трудно вычисляемая ошибка (если обе переменные существуют).
Аккуратность нужна и потому, что если в реальной жизни кирпич падает, то разломив его на две части мы уверены в том, что обломки так же будут падать вниз. Для компьютера все эти нюансы нужно так же описывать, сам он ничего не понимает.
Для хорошего программирования нужно гораздо больше, но без двух пунктов выше пытаться изучать программирование - пустая трата времени.