Цель нашего образовательного проекта Хекслет — обучать программированию. Мы постоянно стараемся обратить внимание на то, что основы программирования, анализ и решение задач, понимание фундамента — это важно. Важнее, чем просто модный стек или технология. Поэтому наши курсы по PHP или Ruby основаны на SICP, а курс по базам данных на самом деле посвящен стандарту SQL-92, а не особенностям какого-нибудь MySQL.
В СНГ все активнее распространяется идея образовательных центров, где "можно стать программистом и устроиться на работу за 8 недель". На западе же — их сотни! Каждый обещает светлое будущее, многие твердят, что «любой может стать программистом». Обещают трудоустройство. На волне «coding is the new literacy» («кодинг это новая грамотность») тысячи людей записываются в так называемые «буткемпы». Это огромный бизнес, но, к сожалению, большинство таких буткемпов не готовит настоящих программистов.
Сегодня мы публикуем перевод статьи Кена Мазайки, профессионального разработчика и основателя нескольких успешных компаний, в том числе — образовательного проекта. Кен рассказывает о том, какими мифами пичкают новичков многие буткемпы, и что он думает по этому поводу.
Сегодня на рынке невероятный бардак. Маркетологи и СМИ промывают людям мозги. Из-за них может показаться, что стать разработчиком и начать получать зарплату с пятью нулями — легко. Нужно лишь записаться на любой буткемп (короткая, сжатая образовательная программа), проучиться 8 недель (~40 рабочих дней), и вы без труда получите свою первую работу. К сожалению, в большинстве случаев это обман.
Среди рекрутеров все крупнейшие программистские буткемпы имеют репутацию мест, где штампуют непрофессиональных разработчиков. После мучений на рынке труда некоторые выпускники сдаются. Другие продолжают учиться самостоятельно и, после нескольких месяцев упорства, у них появляется возможность претендовать на работу.
Это не их вина. Вот массированная реклама, которую втирают новичкам о буткемпах и которая не имеет ничего общего с правдой:
Миф №1: Все буткемпы для программистов дают навыки, необходимые для устройства на работу
Может, вы не заметили, но: фундаментальные дисциплины важны!
Когда я смотрю на учебный план большинства буткемпов, то вижу, что крупнейшие учебные программы опускают один незначительный момент: как программировать.
Вместо этого они фокусируются на самых последних тенденциях вроде reactive-backbones-for-angularstrap-5. Я понимаю. Новички думают, что им нужно знать все это. Хотя в реальности куда полезнее было бы понимать основы. 99% буткемпов используют наивность новичков вместо того, чтобы учить их по-настоящему важным вещам.
Такие буткемпы, как правило, сосредоточены на обучении определенным технологиям. Но они не учат как продумывать и решать комплексные проблемы, как становиться специалистом в каком-то языке программирования. Многие никогда не научат вас, как стать настоящим программистом.
Научиться решать комплексные проблемы и схватывать новые концепции на лету — это единственное, что имеет значение. Стать самодостаточным разработчиком, который может разобраться, как построить сложные функции, вот в чём вся суть. Пожалуйста, поверьте мне, иметь модное словечко у себя в резюме менее важно.
Количество «разработчиков», окончивших различные учебные программы, но не способных решать элементарные задачи программирования, изумляет.
Миф №2: Устроиться на работу просто
Это не так. На это уходит много энергии. Очень много.
Факт: рынок труда насыщен большим количеством не квалифицированных кандидатов на начальные позиции.
Если вы только что окончили буткемп, на бумаге (в резюме) вы не особо отличаетесь от других выпускников. Это означает, что прорываться с помощью резюме — крайне неэффективный способ получения первой работы, даже если вы на самом деле мастер.
Поскольку на бумаге вы выглядите как многие другие джуниоры, искать работу традиционным способом для вас — не эффективно. Надо подавать на ~100 позиций в неделю. Затем, вы, возможно, пройдёте 4-8 интервью, из них, предположительно, получите 1 предложение, если у вас действительно есть навыки. 99 отказов на 1 согласие. Так себе статистика.
Если вы не хотите играть в эту неэффективную игру, я настоятельно рекомендую вам присоединиться к местному сообществу, построить серьезные отношения (в течение месяца или двух, пока вы учитесь), а затем попросить у окружения помощи, когда будете готовы. Люди часто недооценивают важность связей. Это ваше всё. Тут требуется старание. На это нужно время. Но это очень эффективный способ найти работу.
Миф № 3: За две недели можно подготовиться к техническому собеседованию
Технические собеседования нужны для того, чтобы добраться до вопроса «есть ли у этого человека реальные навыки?». Можно приукрасить свои способности на бумаге, но дальше придется доказывать свою состоятельность.
Игнорировать основы программирования, а затем ожидать, что за двухнедельный обзорный курс появятся навыки — это как верить в волшебную таблетку, которая даст вам пресс с кубиками (при этом можно каждый день жрать пиццу). Так не бывает. Верить в такое — значит не понимать, как устроен мир.
Это долгий процесс, тут нужно развивать способность погружаться в работу и фокусироваться на основах, которые, на самом деле, имеют значение. Других реальностей не существует.
Миф № 4: Агентства по трудоустройству помогают студентам
Многие учебные проекты пытаются внушить студентам идею, что их связи в агентствах по трудоустройству и дружественных компаниях помогут студентам найти работу. Нет. Агентства по трудоустройству и сети дружественных компаний — это способ для программистских буткемпов заработать на студентах, которые и без них могут найти работу.
Я слышал о широко известной учебной программе, представители которой созвонились с работодателем (не связанным с их агентством), нанявшим одного из их выпускников (студент нашел вакансию самостоятельно), и потребовали заплатить им тысячи долларов в качестве «вознаграждения за рекрутинг». Хотя они вообще не имели отношения к процессу найма.
Круто, да?
Миф № 5: Можно доверять статистике по трудоустройству из рекламы
Говорят, что есть Ложь, Наглая ложь и Статистика. Больший процент статистики о трудоустройстве неправдоподобно завышен искусной математической бессмыслицей.
Часто на сайте компаний говорится, что они нашли работу всем выпускникам. В реальности все… почти так. Скажем, первая группа из буткемпа имеет положительный процент трудоустройства — 90%. Вторая — 40%. Во-первых, тут нисходящая траектория, так что можно ожидать, что процент будет только уменьшаться. Естественно, будет рекламироваться результат первой группы — 90%, и это вроде как не обман… В статистике это называется ошибкой выборки.
Миф 6: Образование в области информатики не имеет ценности
В большинстве университетов нужно учиться 4 года. Окончание традиционной 4-летней программы по computer science показывает определенное количество упорства и демонстрирует, что вы были погружены в программирование и технические науки долгое время.
Мой близкий друг недавно искал работу. Я пытался помочь ему и направил его к техническому директору компании, которая умоляла меня прислать какого-нибудь подходящего знакомого кандидата. Этот человек доверял мне, и я показал ему предварительное резюме с блестящей рекомендацией. Потом я получил такой ответ:
Здравствуй, Кен,
Надеюсь, у тебя всё отлично.
Я вышел с ним на контакт, но честно говоря, мы ищем кого-то со специализацией в Сomputer Science, бакалавра. Естественно, было тяжело найти людей, которые соответствуют критериям.
Теперь мой друг нашёл где-то работу, и у него всё хорошо, но факт в том, что определенные люди ущемляют интересы кандидатов без степени в информатике. Так устроен мир, но эта ситуация начинает медленно улучшаться.
Senior-разработчики часто говорят «образование в Сomputer Science мне ничего не дало, оно совершенно бесполезно». Это скорее возвышает их эго, чем помогает людям принимать обоснованные решения.
Да, университеты почти не готовят к практическим аспектам работы программиста. С другой стороны, большинство (хороших) университетов отлично преподаёт сложные фундаментальные темы, которые помогают совершенствовать способности в решении проблем и выпускает самодостаточных программистов.
Хорошие буткемпы для программистов охватывают темы Computer Science, касающиеся алгоритмов и структур данных, но 9 из 10 буткемпов не покрывают эти темы вообще. Ведь обучать этим дисциплинам не так просто.
Если ваш буткемп не покрывает эти виды знаний, вам нужно полностью посвятить себя изучению алгоритмов и структур данных в свободное время.
С другой стороны, хоть я и понимаю ценность классического образования, сейчас не самое лучшее время для поступления в университет. Потратить 4 года своей жизни, взять $100 000 в долг — это серьезное обязательство.
Если вы готовы вложить качественное время и энергию в получение навыков и найти первую работу, то стать самоучкой — это отличный путь.
Большинство рекрутеров заинтересовано в том, сколько лет вы программируете в реальном мире, а не в том, что вы изучали в университете. И как только у вас в копилке есть пара лет опыта, без разницы каким образом полученного, вы будете пользоваться большим спросом.
Начинать тяжело, потому что вам нужно попотеть, чтобы получить первую работу. После того как вы проработаете год или около того, всё кардинально изменится, и вы начнете неожиданно получать нежелательные письма от агентств, пытающихся нанять вас. Получать 10-20 писем от рекрутеров каждый месяц — обычное дело. Опытные разработчики тратят больше времени, подкалывая рекрутеров, чем на общение с ними!
На самом деле у многих быстрорастущих компаний большие проблемы!
Опытных разработчиков найти очень трудно! Компании, которые поднимают миллионы долларов, вынуждены расходовать эти деньги, и главный ресурс, который они ценят — это технический опыт.
Многим компаниям требуется увеличение команды инженеров до 20 с лишним человек. Может, вы не думали об этом, но эта задача практически невыполнима.
Найти хорошего сениора в вашем городе и убедить его присоединиться к вашей команде это как найти алмаз размером с холодильник у вас во дворе. Найти двадцать человек, как выиграть в лотерею два раза подряд.
К тому же, большинство рекрутеров едва ли знают что-то о технологиях или что означают те сленговые слова, которыми они пользуются весь день. Вот как рекрутеры видят жизнь программиста:
Сейчас отличное время чтобы сменить карьеру и стать разработчиком. Даже если потребуется немного потрудиться, чтобы получить первую работу, как только вы окажетесь в индустрии, написание приложений это ремесло с хорошим вознаграждением.
Вот почему я стал со-основателем theFirehoseProject — чтобы помогать студентам становиться полноценными веб-разработчиками, которые могут решать сложные проблемы, писать алгоритмы и использовать новейшие технологии.
Давайте просто назовём вещи своими именами. Крупнейшие мировые буткемпы для программистов заботятся только о штамповке студентов (и не особо озабочены результатами, которые получают), многие из них имеют совет директоров, который увольняет генеральных директоров, если те делают недостаточно продаж. Они сосредоточены на количестве, и это единственный показатель, который их волнует.
Большинство буткемпов для программистов долго не живут. Они сосредоточены на краткосрочной цели — продаже, а не на долгосрочной цели — выпуске трудоспособных инженеров. Учебная программа и преподаватели уходят на второй план.
Можно зарегистрироваться, заплатить деньги и не получить никакого опыта или понимания — для вас ли вообще профессия программиста. Факт в том, что программирование не для всех и любой буткемп, который даёт вам возможность заплатить за него (не доказывая, что вы способны программировать, решая конкретные задачи) плевать хотел на успеваемость учащихся. Точка. Конец истории.
Низкая планка, установленная плохими учебными центрами, портит репутацию всех буткемпов!
Как только рекрутер интервьюирует пару кандидатов с этих низкокачественных курсов, он сразу дискриминирует все существующие буткемпы. Такие организации ломают жизнь всех начинающих программистов.
Если вы планируете присоединиться к учебной программе, я настоятельно рекомендую вам всё изучить и убедиться, что выбранная вами учебная программа охватывает алгоритмы и структуры данных, если вы думаете о смене карьеры. В противном случае, вам придётся столкнуться со множеством вопросов, которые вы не поймёте в процессе собеседования.
Перевод: Наталия Басс
Комментарии (33)
saboteur_kiev
29.07.2015 15:48+4По поводу статистики трудойстройства — скажу даже больше.
В дни своей наивной юности, когда у меня в принципе знаний более чем хватало устроиться эникейщиком, у меня все еще не было высшего. И я пошел на какие-то месячные курсы, чтобы получить официальную бумажку что я хоть как-то связан с IT.
На курсах препод знал меньше меня раза в три, поэтому я собственно почти ничего не делал, но бумажку получил.
С бумажкой пошел на два интервью, но ее даже не спросили, просто позадавали вопросы и сразу получил два офера.
Компания с курсами потом у себя на сайте написала, что наш выпускник получил работу в крупной фирме, хотя она вообще никакого отношения к тому, как я вышел на интервью, не имела. Названия я намеренно не указываю, но статистика трудоустройства — действительно вообще ни о чем.vlreshet
29.07.2015 16:04+2Чтобы быть справедливым — университеты поступают точно также. При поступлении зав.кафедры долго рассказывает о том что «наши студенты успешно работают на американскую компанию», а потом ты лично знакомишься с таким человеком, и он смеётся когда слышит слова зав.кафедры, и говорит что универ не дал ничего что в будущем пригодилось на работе.
saboteur_kiev
29.07.2015 16:13+2Честно говоря, у университетов шансов с трудоустройством гораздо больше — некоторые университеты имеют связи с крупными компаниями и по договоренности могут подкидывать им потенциальных интернов. Я таких два заведения знаю, оттуда ежегодно человек 10-20 интернов набирают.
AnthonyBY
29.07.2015 21:44у нас в Минске, за качественных интернов ещё и не плохая конкуренция идёт
получить бакалавра в CS всё таки многие вещи потом упрощает
boeing777
29.07.2015 22:52универ не дал ничего что в будущем пригодилось на работе
Ну разве что пригодилось не непосредственно, а косвенно. Скорее всего должно быть «универ не имел отношения к трудоустройству». А на счет пригодилось/не пригодилось — об этом как раз в статье говорится. Универ делает то, чего не бывает на курсах — пичкает основами, формирует технический склад ума и выпускает самодостаточных джуниоров, которые при желании в дальнейшем могут сколько угодно и сколько нужно заниматься эффективным самообучением, никакие курсы уже будут не нужны.
WebMonet
29.07.2015 19:59+1Материал ниочем. Поэтому вопрос-предложение.
По разным причинам (постоянно сталкиваюсь и просто для общего развития) хочу пересесть с PHP на Ruby или Python. Все твердят о поэтизме руби, синтаксическом сахаре питона и т.д. Так вот. Я мечтаю о курсах, где будет на практике показано, как этим сахаром пользоваться. Типа «для получения результата в PHP нужно было написать X строк кода, а в Руби это можно сделать за Х/2». И да, надоели курсы, где мне в стопервый раз рассказывают основы, которых хватает на хелловорд.lain8dono
30.07.2015 08:51+1Вот эти два сайта дадут общее представление об отличии одних популярных языков от других:
learnxinyminutes.com
hyperpolyglot.org
spice_harj
29.07.2015 23:25-1Не читал, но символичный расизм на лицо. Заголовок "… грязные..." + топ-картинка с чёрными. Подняли настроение.
Iceg
Статья вкратце: блабла, очевидные истины, блабла, мы хорошие, блабла, они плохие, блааа.
Интересно, Хекслет, а вы не находите, что в статье конфликт интересов — одновременно изначальная самореклама автора оригинала и добавленная к переводу реклама вашего проекта? :)
edogs
Были бы они так очевидны для всех…
Каждый раз волосы встают дыбом, когда пытаемся найти кого-то себе в команду.
9 из 10 знают про ООП и классы, рассуждают о пуше в гитхабы и ржут над «говнокодом из функций», но при этом неспособны реализовать алгоритм квиксорта даже если им дать его полное описание.
При чем самое ужасное в том, что люди полностью уверены в том, что они профессионалы, т.к. «закончили 2 недельные курсы». Т.е. это не они идиоты, это просто их реально обманули.
Nikobraz
Интересные тренды у молодых программистов нынче.
Многие из знакомых(сисадминов), кто пытается скилл качать в программировании, просто забивают на изучение алгоритмизации. Хотя я и сам недалеко от них ушел, но если надо что-то реализовать и есть четкие требования, то проблем не наблюдаю. Даже на память помню как пузырьковая делается, а если есть понимание, то скорость реализации дело опыта.
Zibx
«Даже» и «пузырьковая» — взаимоисключающие понятия. Пузырьковая сортировка по сложности сопоставима с нахождением максимального числа в массиве.
Iceg
Под «сложностью» вы понимаете О-нотацию или силу мозгового напряжения для реализации? Потому что если второе, то «пузырёк» с поиским максимального и «сложность» — взаимосключающие понятия)
boeing777
У пузырька сложность О(n^2), а поиск максимального О(n). Так что, видимо, второе:)
Iceg
А чё в них сложного? Тут даже такая плосковатая шутка напрашивается: из сложного в пузырьке только эн в квадрате.
RicoX
Для сисадмина обязательно знание алгоритмизации не менее чем для программиста — сисадмин постоянно работает с алгоритмами, пишет скрипты, небольшие утилиты и знает на среднем уровне несколько языков программирования и с десяток скриптовых языков, без этого его потолок в профессии — эникей. Может знакомые были не такие уж и сисадмины?
ZlodeiBaal
А накой хрен на память помнить квиксорт? Важно знать что он O(nlogn) и O(n) по памяти. Реализация, имеющая лучшее качество, чем можно быстро написать вы найдёте в 10 вариантах OpenSource и в каждом втором наборе стандартных библиотек.
Нужно понимать в первую очередь не то, как каждый алгоритм работает, а то, какой из алгоритмов больше подходит для задачи и чем алгоритмы отличаются. Нужно понимать, что QuickSort может оказаться неустойчив и понимать риски от этого.
Я в жизни раза три в крупных проектах использовал фильтр Калмана. Один раз писал с нуля. И даже на экзамене как-то рассказывал как он работает. Но если меня спросят на собеседовании сейчас — я не отвечу. Зато я очень неплохо знаю в каких задачах он нужен, какие существую аналоги и когда он может подвести.
И я видел людей, которые на зубок знают математику фильтра Калмана и три его реализации, но пихают его в ситуациях, где он не будет работать, или где выдаст недостаточную точность, не зная ни одного аналогичного алгоритма.
Colwin
Senior'а видно издалека. :-)
Фиксация на существенном, несущественное урезано или отсутствует.
edogs
ZlodeiBaal
А, да. Невнимательно прочитал. Тогда другой разговор и действительно странно. Бывают люди которые не могу написать подробно описанный алгоритм? О_о
edogs
Проблема в курсах, в обучении.
По нормальному, по классике — преподается логика, алгоритмы и потом язык программирования и стандарты кодинга.
У современных «курсов» засада в том, что они подменяют понятия. И курс по языку программирования и стандартам написания кода выдают за курс по программированию.
В результате что-то линейное вида «тут на входе одно — значит надо на входе что-то другое отдать» (типа вывод из базы страницы по адресу в урле) выпускник реализовать может, но алгоритмы обработки данных он написать не может (сделать хитрый поиск, вывести статистику, подумать о дырах), т.к. его этому не обучали. При чем он вполне может это сделать на ООП, залить на гитхаб и прокомментировать по стандартам, т.к. ему это преподали и знания алгоритмов это не требует.
0xd34df00d
Вообще-то O(logn) по памяти, если считать память, необходимую для рекурсивного вызова, и O(1), если говорить тупо об элементах массива.
ZlodeiBaal
Википедия говорит, что и O(n) и O(logn) правильные варианты.
ru.wikipedia.org/wiki/%D0%91%D1%8B%D1%81%D1%82%D1%80%D0%B0%D1%8F_%D1%81%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0
0xd34df00d
На самом деле, смотря что квиксортом считать. Насколько я помню (статью на вики не смотрел пока), O(n) — «наивная» сортировка, рекурсивно сортирующая произвольный подмассив. Если инплейс (или хвосто-рекурсивно, что то же самое, в общем) сортировать наименьший, то O(logn) будет и в худшем случае.
Кстати, самое забавное со сложностью по памяти, например, что классическое средство выпендривания хаскелистов
не является квиксортом, ибо не ин-плейс вообще.
freetonik Автор
Да нет, конфликта интересов, имхо, нет, ведь интересы и у нас, и у автора один — помочь начинающим программистам. К тому же, проект автора англоязычный, а Хекслет в первую очередь русскоязычный ресурс (хотя, у нас и есть курсы на английском языке.
По поводу бла-бла, согласен, для многих тут все очень очевидно, ну и слава богу :) Ценность для тех, кому это не очевидно. И эти штуки правда далеко не всем очевидны.
Iceg
Кстати, я у вас на вашем «продающем лендинге» не осилил найти ссылку на перечень курсов.
О, перед отправкой решил таки в исходниках страницы поискать. Как-то неочевидно, что первая кнопка «начать учиться» ведёт на список курсов (я ж пока ещё не понял куда попал — я дальше листаю, изучаю, никакие кнопки не жму), а вторая «начать учиться бесплатно» (когда я уже понял что за сайт, и хочу увидеть какие есть курсы) ведёт на форму регистрации. Нажал вторую, которая перед глазами — но нет, я не хочу регаться, хочу курсы посмотреть. Вернулся назад с формы регистрации. Вижу теперь кнопку «начать учиться». Но я уже знаю, что «начать учиться бесплатно» ведёт к регистрации, эта, наверное, тоже, даже не наводил на неё. А всё остальное, что должно быть ссылками (как минимум синий текст среди чёрного), не ссылки. Грусть, тоска, печаль, и вот я начинающий программист ухожу от вас на coursera.
toxicmt
Она «начать учиться» только в одном из a/b тестов. Скоро там останется только один вариант, который как раз «посмотреть список курсов», т.к. он победил). По поводу регистрации да спасибо, это ценно и совсем не очевидно. У нас в слаке больше 600 пользователей и никто не обращал наше внимание на это.