Как переквалифицироваться в программиста

Этот текст появился после прочтения вот этого материала:

Я переквалифицировался в разработчика чуть более 10 лет назад в возрасте 35+. Однако не имеет смысла опысывать свой опыт, так как программирование было моим хобби со школы и мне было проще чем любому, кто вообще никогда не брал в руки курсор.

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

как выбрать курсы

курсы (любые) - это такое.... идти на них имеет смысл только если нужно по-быструле получить сертификат. И лучше идти уже с пониманием основ программирования или тематики, которая на них обсуждается. Поэтому, если вы по-серьезному хотите изменить свою карьеру, то начинать нужно не с выбора курсов, а с выбора источника.

источник

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

"Родителей" может быть один или несколько. Их можно менять в зависимости от вашего прогресса или настроения. Это нормально и даже правильно. Разные люди могут объяснять разные топики по-своему и это поможет лучше понять о чем речь.

После "общения" с выбранным вами источником вы сможете без проблем подойти к "пустой" машине, установить туда необходимые средства разработки, по памяти набросать несколько осмысленных строк кода и продемонстрировать его работу. Это тот минимум, который нужно получить от "родителей".

Согласно моим представлениям о прекрасном, работать с источником можно без отрыва от текущего места работы. Т.е. вам не нужно увеличивать стрессогенность окружающей среды, перегружая себя вечерними курсами или уходя с основного места работы. Едете в транспорте (не за рулем) - смотрите очередной тематический видосик. Приехали домой - сели на пол-часа за консоль и попробовали то, что усвоили. Не получилось усвоить? Пересмотрели, попробовали. В таком режим можно провести от 6 до 8 месяцев. Затраты - 1-1.5 часов в день вашего времени. В выходные можно тоже, но злоупотреблять не стоит.

язык

Первый язык программирования, который вы будете учить, вы вряд ли будете использовать для коммерции. Это не означает, что вы вообще не будете его использовать, но лучше не относиться к нему, как к главному инструменту. Главный ваш инструмент - это ваш мозг (память, ассоциативное мышление). А первый язык - это "песочница", в которой вы будете учиться держать в руках игрушечные ведерко и совочек. В частности поэтому программистов, "знающих" только один язык не воспринимают всерьез.

Первый язык должен быть со скобочками. Это значит, что пайтон (питон, Python) не нужно изучать как первый. Он отлично подходит на роль второго (коммерческого) языка и не нужно слушать тех, кто топит за него из-за востребованности и "простоты". Простых языков нет. Все языки программирования - это костыли и протезы, которые с необходимостью порождают сложность. Именно поэтому их так много.

Итак, вот шорт-лист: JavaScript, Java, C, C#, Dart, Go. Выбирайте тот, название которого вам глянулось больше. Помните, что пока вы изучаете первый язык, вы не пытаетесь изучить его "крутые" фишки. Вы изучаете основные концепты программирования: типы данных, место в компьютере, где и как эти данные могут храниться, функции, объекты, параметры, вызовы и возвращаемые значения, исходный код, бинарный код, алгоритмы, библиотеки... В процессе работы с источником (см. выше) вы будете привыкать к определенной терминологии и манипуляциям с текстом, который вы уже будете видеть не как текст (это я про исходный код), а как некое отображение действий, которые будут происходить в физическом мире компьютера и результаты действия которого (корректного или не очень) вы будете наблюдать. Основной ваш инструмент - метод проб и ошибок - это сделать и пронаблюдать результат ваших действий. Изменить что-то в коде и проверить, что будет.

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

среда

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

Не пугайтесь! пока вы учите свой первый язык, максимум, с чем вы столкнетесь это редактор. Как только более менее освоитесь с редактором и он станет вашим "любимым", сразу поищите какой-нибудь видосик про git и попробуйте использовать его пару-тройку раз со своим исходным кодом. Тут у вас сразу может возникнуть подозрение, что редактора для работы с исходным кодом уже недостаточно и нужно попробовать какой-то IDE.

Наиболее оптимальным выбором будет Visual Code Studio:

Но если вы готовы похардкорить, то погуглите про Neovim и Doom Emacs.

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

(халиварщиков потеме IDE страстно призываю отметиться в комментах! ))

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

ментор

Используя родственную терминологию, это ваш "дядя/тётя".

Как и ваши родители, лучше что бы он был бескорыстным, понимающим и отзывчивым. Если у вас есть знакомый программист, который не прочь взять над вами шефство - вам повезло. Задать несколько раз в неделю вопрос и получить объяснение по топику - это будет полезно и вам и вашему ментору. Так что не стесняйтесь обращаться к людям за такой помощью! В некторых платных школах можно нанять ментора. Хотя это недешевое удовольствие, оно может быть даже более полезно, чем покупка курса. Тут я призываю в комменты школы программирования с предложениям менторской поддержки!

язык 2

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

Тут имеет смысл потратить время на шапошное изучение этих областей. Облако тегов - это как раз отсюда. Сразу найдутся какие-то вещи, которые покажутся интересными и перспективными (!). Прислушивайтесь к этим малым сигналам из вашего подсознания - это поможет в дальнейшем сохранить внутреннюю мотивацию в работе, а это очень ценное качество. К тому же, вы идете в мир разработки не пустым, - у вас УЖЕ есть компетенция и опыт в какой-то области. На стыке облака тегов с вашими компетенциям может появиться очень востребованный специалист!

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

У изучения второго языка есть масса бонусов: от общего понимания, что теперь вы не ограничены в выборе направления развития своей карьеры до выгодной самопрезентации на интервью - собеседование на джуна уже не будет таким унизительным, как минимум ;)

Вот подборка языков-кандидатов: PHP, C++, Assembler, SQL, Python, JavaScript, GLSL. Любой язык из первого набора выше так же можно рассматривать.

Понимание каким будет ваш второй язык, скорее всего сразу выведет вас на тот или иной фреймворк (библиотеку), которую вы тоже будете параллельно изучать. Как правило, разработка в предметной области не ведется на голом месте. Там, скорее всего, уже имеется существующий вспомогательный инструментарий в виде библиотек и фреймворков, умение работать с которыми будут своего рода must-have. И вот тут как раз можно (не нужно, а именно можно) рассматривать курсы. Снова призываю школы в комменты!

Курс, который вы выберите, находясь на этапе изучения второго языка, с вероятностью 90% не будет потерей денег и времени, так как этот выбор вы будете делать осмысленно, соизмеряя обещания школы через разработанную ими программу обучения с собственным опытом изучения первого языка.

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

язык 3

ШТААА?!!!

Именно так. Третий язык, который вы будете учить - математика. Вернее, некоторые ее разделы: теорвер, аналитическая геометрия, статистика....

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

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

Удачи!

77
24 комментария

Это значит, что пайтон (питон, Python) не нужно изучать как первый. Он отлично подходит на роль второго (коммерческого) языка и не нужно слушать тех, кто топит за него из-за востребованности и "простоты".

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

 Итак, вот шорт-лист: JavaScript, Java, C, C#, Dart, Go.

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

2
Ответить

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

1
Ответить

Вот как раз в тему на хабре появилось. Там и про курсы и про образование.

https://habr.com/ru/company/domclick/blog/572272/

2
Ответить

Спасибо за ссылку! Обязательно изучу когда буду посвободней

1
Ответить

Комментарий недоступен

Ответить

Комментарий недоступен

5
Ответить

да. Можно. Не бойтесь математики. Она начнется только когда нужно будет описывать какие-то серьезные времянные или физические процессы. А так, все чем ограничиваются программисты, будете смеяться, это +, -, *, / и вот эти несколько ребят: %, >>, <<. Еще есть логика. Извините, что в заметке про нее не упомянул. Т.е. нужно будет понимать, что в какой-то момент нужно будет выполнить какую-то процедуру ТОЛЬКО если выполняются ОБА каких-то условия... или выполняется ХОТЯ БЫ одно из них. И в основном вам больше придется сталкиваться с логическими операциями, нежеле с арифметикой. Про сложные формулы вообще не думайте. Их очень редко приходится использовать. Говорю это заканчивая довольно сложный распределенный сетевой проект с необходимостью синхронизации удаленных акторов.
Так, что вперед!

2
Ответить