Как разумно поставить себе начало в программировании (C++ и C#)?

Здравствуйте!

// То, что выделено курсивом, можно не брать в ознакомление //

Предыстория:
На протяжении обучения в школе я размышлял о начале изучения языка программирования.
По началу это был C#, однако, даже не проработав на нем и месяц, пересел на C++ (к слову, это первый и серьёзный для меня язык программирования, не считая школьный Pascal ABC и не начатый C#).
Был записан на онлайн курсы от университета, где показывали базу этого ЯП. На этом мое обучение окончено.
В связи с упорной учебой уже в колледже (1 курс - повторение и обучение программы за 10-11 класс) я остановил свое движение в угоду закрытия 1 курса.
Сейчас готов снова учить его, пытаясь совместить работу (летняя занятость) и его изучение.

Что имеем?
- Кое-какое понимание Pascal ABC;
- Не начатый толком C# (но синтаксис я его примерно видел);
- Подзабытый C++ (от долгого перерыва я его конкретно забыл, что достаточно печально).


Сейчас мне 17 лет и моя цель - начать копать почву к совершенствованию и глубокого познания программирования. Тем более, что я хочу заниматься GameDev (Unity or Unreal Engine)


Теперь к делу.
1. C++ является одним из сложных ЯП, который знаменит своим отсутствием автоматического управления памяти. Я осознаю, что для меня это слишком серьёзное и тяжелое начало, однако вижу в этом хороший старт для продвинутого понимания работы компьютера и продвижения в программировании.
Вопрос: Стоит ли мне двигаться дальше в изучении C++ или пока не поздно пересмотреть свои взгляды, касательно моего выбора?

2. Сразу вопрос: (Из выше упомянутого текста) Не поздно начинать своё обучение в 17 лет, учитывая, что имеется учеба в колледже и планы касаемо изучения выбранного ЯП?
Примечание: Мне известно, что начало может быть у всех по разному, начиная от 10 и заканчивая к 80 годам своей жизни, и это нормально. Вопрос заключается в успешном изучении, чтобы уже с багажом умений начать свой путь в трудоустройство.

3. Я осознаю, что мое обучение C++ (предыдущее, до его приостановки из-за колледжа) было разбросанным и неэффективным. От этого были не слишком дальние продвижения.
Вопрос: Как вы планировали своё изучение ЯП? (Желательно с C++)
Если возможно, то, пожалуйста, дайте пару советов и пожеланий, касаемо обучения (рекомендуемая литература и правила её подбора, интенсивность обучения, полезные сайты, понятия и др.).


4. Изучая статистику по трудоустройствам, было выяснето, что сейчас более востребован C#, чем C++. Хоть я и выбрал C++ как язык программирования для обучения, но мне нужно понимать что к чему.
Вопрос: Будут ли проблемы в трудоустройстве, если выбор останется неизменным? Необходимо также это учесть и переосмыслить о моем выборе?
Примечание: Искренне прошу мудрецом рассказать об этом получше (как это грозит для Junior, Middle и Senior программистов).


Надеюсь, что на часть вопросов (надеюсь, что на все), я получу хорошие ответы и рекомендации от мудрецов, которые проходили через это и готовы поделиться своим опытом здесь.
Опять же, не требуется конкретных ответов. Нужны лишь ответы, которые помогут подтолкнуть на правильные решения, чтобы себе будущее не запороть.

Спасибо за внимание.
С уважением, Александр.
  • Вопрос задан
  • 1016 просмотров
Решения вопроса 4
saboteur_kiev
@saboteur_kiev Куратор тега C++
software engineer
C++ является одним из сложных ЯП... блабла...Я осознаю, что для меня это слишком серьёзное и тяжелое начало

Я разобрался как работает стек и как адресуется память в пятом классе без интернета и практически без документации. Была какая-то книжка по С++, которую просто перечитал раза 3-4, пока не понял смысл.

На протяжении обучения в школе я размышлял о начале изучения языка программирования.

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


Чувак, ты слишком много размышляешь и мало делаешь. Нет какого-то оптимизирующего волшебства, который может значительно сократить твой путь. Ты должен писать код. Много кода.
А ты занимаешься фигней типа анализируешь трудоустройство еще даже не поняв, а можешь ли ты вообще что-то.
Ты должен понимать, что если ты можешь написать, например, крестики нолики или морской бой - это еще не значит что ты станешь программистом и сможешь этим зарабатывать. Это просто любитель. Но ты даже этого уровня не достиг, а уже хочешь анализировать тренды и тем более подсчитывать предполагаемый заработок, до которого еще годы пути. Ты посмотри на политику в стране, никто не знает что будет через год.

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

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

А про трудоустройство начинай думать, когда при прочтении описания вакансии ты считаешь, что 50-60% ты знаешь.
Ответ написан
1. C++ - это не единственный способ хорошо понять, как работает компьютер. Раз уж это первый язык, то я бы смотрел сразу в сторону Rust, тк он также сразу учит тебя тому, как можно управлять памятью.

2. Ты даже не представляешь, на сколько много людей в индустрии построили успешную карьеру, хотя в принципе компьютер впервые увидели только в университете. Так что нет, точно не поздно.

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

4. Если хочешь начать карьеру с C++, то тут мастхев будет диплом какого-нибудь хорошего вуза, чтобы тебя рассматривали всерьёз. (тоесть закладывай ещё +3 года после окончания колледжа).
Хотя опять же - начинать карьеру с C++ сейчас - это крайней сомнительный выбор, если не геймдев, конечно.
Для джуна в принципе разницы нет - на любом стеке тебе будет крайне тяжело найти первую работу.
Для опытного аналогично, но наоборот - на любом стеке, если он не совсем мёртвый, найти работу будет вполне реально. (в худшем случае пара месяцев на поиск наиболее вкусного предложения).
Сам в вполне успешно получал оффер на такую экзотику, как F#, а сейчас вообще пишу на Rust.
Ответ написан
VoidVolker
@VoidVolker Куратор тега C#
Dark side eye. А у нас печеньки! А у вас?
Стоит ли мне двигаться дальше в изучении C++ или пока не поздно пересмотреть свои взгляды, касательно моего выбора?

Если нравится и интересно - то да, почему нет-то? ЯП - всего лишь инструмент. Как молоток или гаечный ключ. Если умеешь пользоваться - то запросто берешь любой молоток и забиваешь гвоздь. Разонравятся плюсы или будут другие задачи, где плюсы не очень - переключайтесь на C#.

Не поздно начинать своё обучение

Нет, никогда не поздно.

дайте пару советов и пожеланий, касаемо обучения

Уже давно все есть: https://roadmap.sh/cpp

Будут ли проблемы в трудоустройстве, если выбор останется неизменным

В целом зависит только от вас и прикладываемых вами усилий. А так - под плюсы да, действительно вакансий не так уж много и есть некоторые сложности в их поиске, а те что есть - обычно ближе к оборудованию, робототехнике, МК и прочему. Если направление интересно - то почему нет-то? Еще отличным выбором будет C#/dotNet - сейчас он больше в сторону веба развивается, но и для десктопной разработки тоже достаточно популярен.
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
Капец много текста написал.

Если кратко - то найди себе ментора. Это позволит тебе не выгорать а двигаться
вперед.

Должен был написан план с датами что изучать. С++ - очень сложный язык
и в нем ного фичей. Даже его создатель рекомендует не брать все сразу
фичи а изучать какое-то разумное подмножество.

Должен быть учебный проект с внятным техническим заданием.

Код должен содержать тесты и иметь какие-то критерии качества и эстетики кода.

Параллельно с С++ тебе придется изучать железо и операционные системы. Без этого никак.
Это язык - общесистемного программирования и делать чисто прикладные вещи на нем
нет смысла. Ты должен быть погружен в систему.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы