{"id":14276,"url":"\/distributions\/14276\/click?bit=1&hash=721b78297d313f451e61a17537482715c74771bae8c8ce438ed30c5ac3bb4196","title":"\u0418\u043d\u0432\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u043b\u044e\u0431\u043e\u0439 \u0442\u043e\u0432\u0430\u0440 \u0438\u043b\u0438 \u0443\u0441\u043b\u0443\u0433\u0443 \u0431\u0435\u0437 \u0431\u0438\u0440\u0436\u0438","buttonText":"","imageUuid":""}

IT-курсы снова обманули. Что делать?

Прохождение курсов не приводит к желаемой позиции с оплатой в 120+
Что делать, чтобы стать разработчиком?

За последнее время было много статей на тему того, что IT-курсы не оправдали ожиданий. После недавнего прочтения очередной статьи про то, как курсы не привели к з.п. в 100+ захотелось написать свой взгляд на эту проблему.

А главное захотелось составить свой мини-гайд (можно сказать «антикурсы») как войти в IT и через 1-2 года получать 120+.

Гайд и вопрос к сообществу/разработчикам в конце статьи.

Мой бэкграунд: 14 лет в коммерческой IT разработке, фулстек, последние 6 лет PM/Team lead.

В чем собственно проблема?

Вокруг много курсов, обещают научить программировать за 3-6 месяцев и начать получать 100+. Некоторые даже обещают помочь найти работу после прохождения (сомневаюсь в этом, особенно если до этого не было никакого опыта программирования).
В итоге формируется ложное ожидание: сейчас пройду курсы и буду зарабатывать.

В реальности курсы вряд ли помогут сразу же устроиться на позицию с хорошей оплатой, т.к. реального опыта решения различных задач нет. Во многих случаях и вовсе предпочтут не брать бывшего юриста/дантиста/статиста. Проблема тут вовсе не в том, что у человека нет профильного образования или же знания языка плохие (даже для позиции джуна). Проблема в отсутствии опыта в IT, опыта решения реальных и разных задач. Именно это, на мой взгляд, прежде всего и отличает джуна/мидла/сеньора, а не кол-во лет, умение отсортировать «пузырьком» и знания теории (что вообще, конечно, тоже немаловажно). Именно разнообразие реальных задач/проблем, с которыми человек сталкивался в прошлом, и формирует ценность разработчика. Кто-то набирает хороший опыт за пару лет, а кто-то и за 8 не может похвастаться какими-то интересными достижениями, т.к. всё это время делал простые однотипные задачи.

Что делать?

Решать задачи и набираться опыта. Если никто не берет, то просто делать свои «пет-проджекты», оттачивая базовые вещи и «набивая» портфолио. Делать клоны каких-то проектов, просить сообщество посмотреть код и посоветовать, что можно улучшить. Постоянно учиться.

Что такое джуниор разработчик для компании? Это: отсутствие опыта разработки и хороших навыков решения проблем, часто не очень хороший код. Как следствие, необходимость тратить время более опытных разработчиков на обучение новичка (как ответами на вопросы, так и через ревью кода и указание на конкретные ошибки). Поэтому обычно небольшим компания брать к себе начинающих разработчиков не выгодно (мы, например, пока не можем позволить себе брать джунов, а вот мидл и сеньорам всегда рады).

Так ли нужны курсы?

Зависит от человека. В целом можно всему научиться и без курсов.
Тут скорее вопрос к самоорганизации и самодисциплине.
Некоторым людям нужно «заплатить», чтобы заставить себя что-то делать (чтобы появилось ощущение «ну я же заплатил за это, поэтому я должен делать, чтобы деньги не пропали»).
Другие способны и сами всё освоить.

В любом случае самообразование и постоянное саморазвитие – это одни из главных вещей в IT. Практически нет такого, что когда-то чему-то научился и теперь так делаю всегда. Всегда выходят какие-то новые версии, нововведения, новые фреймворки/библиотеки/технологии и прочее. Поэтому постоянно нужно много читать, смотреть и учиться, чтобы оставаться «на волне».

Главное, чтобы было не просто абстрактное желание перейти в IT, а реальная цель сделать это. У меня есть два знакомых, которые уже 3-ий год не могут это сделать, т.к. постоянно находятся какие-то отговорки. У каждого из них есть «очень большое желание» сделать это (только в беседах, когда речь заходит про IT). При этом один из них работает тестировщиком (ручным) в большой айтишной компании, где есть и сеньоры готовые научить, и внутренние курсы, а второму я составил простой и легкий план с чего начать, что делать и куда двигаться далее.

С чего начать?

На мой взгляд начать проще всего с фронт-энда, а именно с верстки.
HTML и CSS можно освоить очень быстро (меньше, чем за месяц, уделяя не очень много времени по вечерам), а дальше можно начинать выполнять простые задачки и искать заказы на верстку.
Далее стоит постепенно добавлять JavaScript. Не стоит сразу хвататься за фреймворки/библиотеки, стоит сначала освоить чистый JS. Когда с чистым JS и версткой будет все более-менее понятно (спустя ~2-3 месяца), стоит начать использовать React, т.к. он сейчас в ходу (т.е. вакансий хватает) и вряд ли исчезнет в ближайшее время.
Для того, чтобы набираться опыта нужно постоянно делать небольшие проекты. Можно делать клоны известных приложений, т.к. в таком случае не нужно думать о дизайне и можно просто сосредоточиться на результате.
Обязательно с самого начала стоит использовать github. Весь прогресс стоит постепенно (порциями) и постоянно (ежедневно) выгружать туда сопровождая осмысленными комментариями.

Внимание, вопрос.

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

0
465 комментариев
Написать комментарий...
Konstantin T.

Начать с фронтенда и тем более с разметок - пожалуй, наихудший совет для начинающего. Современный фронт - сложный коктейль из кучи технологий,   фреймворков, и костылей. Понятно, что браться за академический паскаль в 2021 смысла нет. Чтобы научиться именно программировать, алгоритмам, я бы рекомендовал что-то строго-типизированное с универсальным Си-подобным синтаксисом, с объектами, например typescript, или c#. Может быть еще swift или dart. Или kotlin.

Ответить
Развернуть ветку
Game Topia

Какой ещё ts? Только c# или java! Если с java, то потом сразу kotlin.
Если быть честным, то я люблю больше сишарп, но для новичка он подходит только если он хочет стать бэкендером. А джава наоборот, если он хочет стать фронтэндером. Свифт очень крут, но нужен дорогой мак и он далековат гт классики. Дарт, это экзотика, так как флатер совсем не крут, он слишком древнеподобный, в нем не хватает декларативной разметки.  Го в качестве первого языка тоже слаб. Функциональные вообще не рассматриваю даже.

Вэб фронтэнд только с ангулар, отдать ему должное, это самый крутой фраймворк для реализации клиента среди всех языков и фраймворков. Если сервер, то только .net

И какие ещё осмысленные комментария в коммитах, когда уже как сто лет есть фреймворк для комитов. Тот же Яндекс тыщу лет назад статью писал по настройке. Хотя ее нужно обновить, так как версии кардинально изменились.

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

Только Angular и .net? Сеньоре, вы дохуя категоричны, мне кажется. 

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

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

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

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

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

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

Ответить
Развернуть ветку
Game Topia

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

Ответить
Развернуть ветку
Leonid Meleshin

"Андройд"

Ответить
Развернуть ветку
Илитный Иксперт

Ага, еще скажи что котлин с джавой пиздец разные языки

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

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

Нет, понятно, можно и на джаве котлиновский код писать, и на котлине джавовый (это я сейчас про стили именно), но языки уже разные по идеологии. 

Ответить
Развернуть ветку
Илитный Иксперт

Ой, ебать, map\reduce функции добавили и уже другой язык

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

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

Ответить
Развернуть ветку
Евгений Азаргаев

В Java Language Specification около 1000 страниц.
В C#, я думаю, даже больше.
Это пару месяцев только читать. Какие пару дней то?

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

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

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

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

Ответить
Развернуть ветку
Maru D

Да вы мхом поросли, батенька :) На питоне еще как пишут и приложения просто бомба - blender для 3d моделирования, gimp для художников и эти программы просто летают по сравнению с тем же 3dMax и прочими, которые грузятся по три часа. Сама ими пользуюсь и мега довольна, они даже на бомжмашинах работают, так что питон это мощняк.

Ответить
Развернуть ветку
Artem Petrenkov

У Гимпа на Питоне только плагины написаны. Ядро на Сях. И по сравнению с Фотошопом он не летает.

В Блендере ядро тоже на C/C++ написано.

Тормоза Питона — объективный его недостаток. Он даже медленнее, чем Руби.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ответить
Развернуть ветку
Alex Chernyshev

'На питоне невозможно делать полноценные компилируемые приложения'

Загляните как-нибудь в папку клиента Dropbox - испытаете шок.  Да, десктопный клиент Dropbox написан на петоне.

Еще из примеров: игра 'Санитары Подземелий' , игровая логика там тоже на петоне а он сам встроен в движок.

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

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

Ответить
Развернуть ветку
Alex Chernyshev

Смешно слышать упреки в плохом образовании от человека который путает язык и реализацию. 

http://www.kplugs.org/ ага.

Вот самый замечательный пример (x86 эмулятор на js):

https://bellard.org/jslinux/vm.html?url=win2k.cfg&mem=192&graphic=1&w=1024&h=768

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

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

Ответить
Развернуть ветку
Alex Chernyshev

Конечно троллю )
Только ради всего святого - не пытайтесь использовать Haskell и никогда никогда не открывайте SICP.

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

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

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

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

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

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

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

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

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

На нём не пишут запросы к бд?!!
Да сейчас половина Big Data на питоне! (pyspark, airflow)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Да остался linq to sql в шарпах, куда он денется? Это ж база. Меньше слушайте "экспертов" в комментах.

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

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

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

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

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

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

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

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

Ответить
Развернуть ветку
Евгений Карпель

Начинать с _основ_ CS и алгоритмов и структур данных?
Точнее, в ходе изучения первого языка сделать заметный акцент.

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

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

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

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

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

Соглашусь, что пайтон сложный. Для тех, кто его понимает, то реально легко. Я начала изучение, но не совсем с простого пошла. Удобно, что пишешь print() и оно выводит какое-то значение. Однако, это все еще надо грамотно прописать для корректной работы до print(). И это как раз сложнее, чем звучит даже от миддлов.

Ответить
Развернуть ветку
Мартынов Дмитрий

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

Ответить
Развернуть ветку
Konstantin T.

Go плох своей костыльной реализацией ООП. Классов нет, но есть интерфейсы и расширения, присущие объектным языкам. А также практикуется вложение типов как замена наследования. Можно было бы ограничиться чисто процедурным программированием и тогда он был бы идеален.

Ответить
Развернуть ветку
Мартынов Дмитрий

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

Ответить
Развернуть ветку
Konstantin T.

Ничего он не отживает. В ООП ключевой механизм это наследование, а не протокол. Просто идут попытки сократить порог входа в айти в новых языках. 

Ответить
Развернуть ветку
Мартынов Дмитрий

Не согласен. Просто это прогресс и новый виток. У интерфейсов-протоколов больше профита, чем наследование. А высокоуровневые задачи они решают те же.

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

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

Ответить
Развернуть ветку
Gulneck M.

Когда генерики добавят, тогда и можно советовать. А так нечего приучать к interface{} каке.  
Или уже добавили? Я за ним давно не следил. 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ответить
Развернуть ветку
Konstantin Prohorov

Наверное даже слишком лаконичный для олдскулов)

Ответить
Развернуть ветку
Konstantin T.

Во flutter как раз только декларативная разметка) тогда как swift предоставляет выбор.

Ответить
Развернуть ветку
Game Topia

Как по мне, так это больше напоминает именнованеым параметры.

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