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

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

Я переквалифицировался в разработчика чуть более 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

ШТААА?!!!

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

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

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

Удачи!

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

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

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

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

Ответить
Развернуть ветку
попробушка
Автор

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

Ответить
Развернуть ветку
Sergienko Vitaly

1. Мне кажется в этом списке: именно js лишний. Он один не статический типизированный. Если заменить js на c++ то список станет забавным. 
Согласен в целом с подходом. Моими мамай и папой был универ, правда не профильный — астро-физика. Агаты, ес-1640 кажись, турбо паскаль... 

Ответить
Развернуть ветку
попробушка
Автор

Да, понимаю вас. Намеренно не хотел ограничиваться только строго типизированными языками. Выбор должен быть даже тут. Пусть и неосознанный. JS хорош своей гибкостью и еще  на нем может быть не так удручающе скучно начинать своё знакомство с программированием. Кресты намеренно не включал в начальный список, так как ЭТО не должно случаться с начинающим программистом. Еще я не включал в списки экзотику типа PostScript или Lisp, хотя они прикольные, как, впрочем, и учебные языки типа паскаля, бейсика и иже с ними школьные варианты. Учиться лучше на том, что реально работает на рынке (тут я думаю отхвачу, ну да ладно).

Ответить
Развернуть ветку
Victor Pomortseff

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

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

Ответить
Развернуть ветку
попробушка
Автор

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

Ответить
Развернуть ветку
Аккаунт удален

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

Ответить
Развернуть ветку
Аккаунт удален

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

Ответить
Развернуть ветку
Аккаунт удален

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

Ответить
Развернуть ветку
Victor Pomortseff

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

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

В общем, разработка отнюдь не такое веселое занятие как показывают в фильмах про всяких хакеров :-)
А после разработки еще будет отладка. Которая может занимать еще больше времени и еще более нудная - когда программа работает "не так", а почему ты не можешь понять и тупо степаешь под отладчиком тысячи строк кода пытаясь отловить где и когда одна из сотен переменных вдруг принимает не то значение, которое от нее ожидалось.

Ответить
Развернуть ветку
попробушка
Автор

отлично дополнили, коллега!

Ответить
Развернуть ветку
Аккаунт удален

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

Ответить
Развернуть ветку
Victor Pomortseff

Кстати, да. Я по образованию не ITшник. Физтех. Но математики у нас было... первые три года (6 семестров) по 200 часов в семестр только лекций (120 матанализ + 80 еще чего-нибудь типа комплексных переменных, матстатистики, дифисчисления и т.п.). И очень оно туго все шло (в отличии от физики). Но вдруг очень зашел курс "Уравнения матфизики". Фактически это про дифференциальные уравнения, но применительно к описанию реальных физических процессов. И вот тут как-то вдруг "пазл сложился" :-)

Ответить
Развернуть ветку
Аккаунт удален

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

Ответить
Развернуть ветку
Victor Pomortseff

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

Ответить
Развернуть ветку
попробушка
Автор

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

Ответить
Развернуть ветку
Аккаунт удален

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

Ответить
Развернуть ветку
попробушка
Автор

стыдно признаться, но физика тому виной... ((( не входила ни в какую. Не понимал! Т.е. технический вуз был для меня заказан. Хотя с математикой проблем не было. Поэтому пошел по "гуманитарной" части. Менеджмент, экономика и все такое. Но уже в ВУЗе приобрел свой первый комп и дипломник у меня состоял побольшей части из распечаток исходников программы, которую я написал ))

Ответить
Развернуть ветку
Victor Pomortseff

Я полагаю, что (судя по возрасту) человек заканчивал ВУЗ где-то в конце 90-х. Т.е. поступал в начале (по моим оценкам это 93-95гг). Много тогда было IT специальностей в ВУЗах наших?
Это сейчас "ITшников" все кому не лень клепают, а тогда это еще не вошло в моду.

Ответить
Развернуть ветку
Аккаунт удален

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

Ответить
Развернуть ветку
Victor Pomortseff

Да, но тогда ITшных специальностей в ВУЗах было не так много (на момент поступления еще и инет был по диалапу там где был). И тогда еще не было такого бума с IT.

Ответить
Развернуть ветку
попробушка
Автор

Вы почти )) поступил в 91. Кстати, вуз был довольно передовым. Там было очень хорошо обеспеченная кафедра информатики и нам ее преподавали очень недурно. Хотя я понимаю, что управленцам глубокое ее изучение не очень нужно. Но мне это нравилось, и я старался не упускать возможности применить навыки в той области где работал. Наверно я одним из первых в Москве в свое время перешел на удаленку, блягодаря свободному владению сетевыми технологиями (VPN и все такое) Это было в 2004. Мне повезло, так как работал в основном с иностранными контрагентами и связи с коллегами по телефону/эл. почте вполне хватало.

Ответить
Развернуть ветку
попробушка
Автор

не мог не добавить ссылку на этот канал в качестве альтертанивного варианта источника информации )))

https://www.youtube.com/channel/UCb5rJDyxGM5imZ6yvx5tAWQ

Особенно порадовало, как точно автор [ка] иллюстрирует различные аспекты профессионального быта программиста цитатами из культовых фильмов. На мой взглял это очень серьёзно снижает тикет входа в индустрию для "условного гуманитария"

Ответить
Развернуть ветку
Olga Askerova

Здравствуйте, а вы можете порекомендовать русскоязычных мам и пап с ютуба?

Ответить
Развернуть ветку
21 комментарий
Раскрывать всегда