Звучит немного пафосно, никогда не подумал бы чтоб написать что-то подобное. Но сегодня меня просто спросили какие советы я б дал себе 18-летнему программисту. Изначально мне этот вопрос показался странным, ведь я ничего специально не делал чтоб становиться лучше (как программист). И, наверное, у меня сейчас больше советов себе 18-летнему о том, как обращаться с деньгами, чем о том, как стать хорошим программистом.

Но чем больше я об этом думал, тем больше у меня советов выходило. Вот что в итоге получилось:

0. Начни программировать как можно раньше
Я начал программировать ещё классе в 9м. У меня первый год даже не было компьютера и я писал программы дома на бумажках, а на уроках информатики пробовал их вводить, компилировать и запускать. Наверное, нулевой совет - начать программировать как можно раньше, до 18 лет.

1. Любите программирование
Я программировал потому что это прикольно. Мне кажется, я "прокачался" как программист потому что делал то, что мне нравится. Первый совет - полюбить программировать.

2. Хобби-проекты
Как следствие, хобби у меня тоже переплетены с программированием и инженерией. Наверное, это как-то связанно с пунктом 1., Когда я учился в школе и в универе, у меня была уйма хобби проектов. Некоторые вообще не несли какого-то практического смысла, некоторые были просто прикольные, а некоторые могли бы перерости в какой-то продукт, если ими заниматься. Плюс, лучшие из них всегда можно добавить в резюме со ссылкой на гитхаб. Второй совет - займитесь хобби-проектами.

3. Обучение
Обучение в ВУЗе не столь важно. Как показывает практика, можно стать хорошим программистом и вовсе без профильной "корочки". Я знаю несколько ребят, для которых программирование было просто хобби, а теперь они в лучших мировых компаниях.

Однако, обучение в ВУЗе занимает 5 лет жизни и лучше это время потратить с пользой. Если есть возможность - лучше потратить эти 5 лет на обучение в хорошем университете США (MIT, Принстон, Стенфорд и т.п.). Сейчас многие университеты позволяют пройти этот путь либо полностью онлайн либо на 90% онлайн. И это гораздо дешевле (экономия на проживании в чужой стране плюс онлайн обучение обычно чуть дешевше). Среди украинских университетов я б отметил КПИ.

В любом случае, самообучение важнее корочки ВУЗа. Просто, мне кажется, в случае с местным университетом, на самообучение потребуется значительно больше времени, чем в случае учёбы в хорошем ВУЗе. А при обучении за границей это добавит ещё и профильных знакомств и хорошый опыт английского. И 5 лет жизни будет пройдено максимально эффективно.

Хотя, опять же, это и не столь обязательно. Можно стать отличным специалистом только за счёт самообучения. Тем более в современном мире, когда курсы тех же университетов можно пройти онлайн.

4. Английский
Надо качать английский. Английский тут важен и был мне полезен на протяжении всей моей жизни. Наверное, всё таки, заставлять себя сделать усилие и что-то сделать - нужное умение. Но у меня английский лучше учится естественным образом.

Первый опыт английского - кнопка F1 в ТурбоПаскале. Документация на TP божественна. Я оттуда извлёк гораздо больше, чем из любого самоучителя. Оверлеи или TurboVision лишь слегка затрагивались в книгах. Заодно и подтянул английский. Читал с экрана с советским словариком в руке. Однако основной опыт приобрел позже при общении с зарубежными клиентами.

Даже просто стараясь усваивать англоязычную документацию или потребляя англоязычный контент вы учите английский. Смотрите американские сериалы в оригинале, читайте документацию на английском. Лучше, конечно, совмещать с курсами. Но это может быть и просто онлайн-тренажер типа LinguaLeo.

5. Начни уже работать!
Наверное, неплохо бы, наверное, попытаться получить опыт работы как можно быстрее. У меня всё получилось как-то само собой. У меня был опыт (в основном, не очень удачный) небольших проектов и до 18 лет, но в 19 я пошел рабоать и совмещал это с учёбой.

Наверное, неплохой вариант - фрилансить по несколько часов в день. Опять же, лучше на англоязычных платформах. Это поможет выучить английский. Плюс, вам за это ещё и будут платить! :-)