В Украине часто жалуются на низкое качество образования, особенно в сфере ИТ. Стоит ли тратить деньги и 5 лет своей жизни на обучающую программу, которая давно устарела и совсем не обязательно гарантирует в будущем интересную и высокооплачиваемую работу. С другой стороны, кто же захочет брать на работу программиста без диплома, будь он хоть семи пядей во лбу?
Есть такие. Например, Google. Об этом рассказал в своем автобиографическом рассказе разработчик программного обеспечения и предприниматель Дэвид Биттоу из Сан-Франциско, который после работы в штате технологического гиганта успел проявить себя в таких компаниях как Square, Obvious Corporation, Namco и Double Helix. А университет он так и не закончил.
“У меня было намерение пойти в колледж. Я собирался поступить в UCLA. К сожалению, в школе у меня был постыдно низкий средний бал (2,45), и я мог рассчитывать разве только на какой-нибудь самый замшелый университет. Вместо этого я пошел на компьютерные курсы в Purdue Calumet, сателлит университета Purdue – это был мой обходной путь к высшему образованию. Приблизительно через два семестра на курсах университет сделал мне предложения из разряда тех, от которых нельзя отказаться.
Шаг 1: Не можешь? Притворись!
Во время обучения в колледже я работал на маленькую компанию в Гриффите, Индиана, которая занималась созданием сайтов для местных бизнесов. Мне платили $12 в час, работенка была не пыльная, но категорично не из тех, о которых я мечтал.
Я успешно сделал несколько проектов, чем снискал к себе доверие. Мне повысили зарплату. В свое свободное время, которого, впрочем, у меня почти не было, я работал над созданием игры. В результате я пошел ва-банк и предложил руководству дать мне три месяца на работу над своей игрой за их копеечную плату. Готовый продукт я собирался продавать в онлайне. Я сделал стильные наброски и красочные графики, чтобы показать им, как будет работать моя модель и почему можно не сомневаться в том, что она принесет нам прибыль. Я почти не понимал, что делаю, но они почему-то купились. Возможно, на красивые рисунки.
Два месяца я занимался разработкой и выпустил онлайн демо-версию. Оказалось, что неоперившийся калифорнийский стартап под названием CodeFire делал почти такую же игру – космическую стрелялку – только в 3D. Они связались со мной и предложили мне заморозить мой проект. На что у меня был единственный вариант ответа: “Конечно, я так и сделаю, если вы возьмете меня к себе на работу”. Они прислали предложение, которое я принял, покинув свою маленькую конторку.
Прежняя моя компания сохранила за собой права на мою игру. Я уведомил их об уходе за три недели, и мы расстались друзьями.
Шаг 2: Подружись с мастером
Это, пожалуй, самое важное, что вы можете сделать. Найдите человека, который мастерски владеет вашим ремеслом, сделайте его своим наставником и никогда не переставайте учиться. Пока я работал в Double Helix, моим наставником был Нэйтон Хант, один из самых умных и застенчивых парней, которых я когда-либо встречал в жизни. Он чрезвычайно терпеливо отвечал на все мои вопросы независимо от того, насколько элементарными были ответы. Я бегал к нему в офис тысячи раз, чтобы задать очередной рандомный вопрос типа “как мне плавно интерполировать из одной матрицы вращения в другую?” или “как мне выполнять перемещение капсулы в цилиндр обнаружения столкновений?” Годы спустя он присоединится к команде Google через месяц после того, как это сделал я.
Каждый из моих наставников что-то менял в моем подходе к решению проблем или восприятию мира в целом.
Шаг 3: Восполни пробелы
Поскольку у меня не было высшего образования, я знал, что мне не хватает множества основополагающих знаний. Например, я реализовывал физический движок, но никогда не решал динамической задачи программирования. Чтобы заполнить эти пробелы, я реализовал почти все наиболее типичные структуры данных и алгоритмы, о которых слышал или читал. Вся необходимая для этого информация есть, если покопаться. Но между познанием как это работает посредством наблюдения и непосредственно построением этого пролегает огромная пропасть.
Постепенно делайте следующее:
- Изучите досконально по крайней мере что-нибудь одно из C, C++, Objective-C, Java, PHP, Python или Ruby. Бегло освойте еще один из вышеперечисленных языков и ознакомьтесь с Scala, Haskell или Lisp.
- Изучите ваши структуры данных. Реализуйте большинство из них. Поймите их временные сложности.
- Решите проблемы, связанные с программированием.
- Создайте себе портфолио из (не)законченных проектов: фреймворков, мобильных или веб-приложений, небольших игр и т.д.
Шаг 4: Поверь в себя
За шесть лет с тех пор, как я покинул Индиану, я создал около шести игр для разных платформ. Мне было скучно и хотелось чего-то новенького. Я обратился в Google и почувствовал, что если бы меня взяли туда на работу, я бы стал “настоящим инженером”, к чему я всегда стремился. Но ответа оттуда я так и не получил, чему отнюдь не был удивлен.
Спустя год я перенаправил к ним свое резюме. Но на этот раз я полностью удалил из него секцию “образование”. Ирония судьбы или случайность, но на этот раз рекрутер перезвонил мне и назначил собеседование в формате видео-конференции. Я попросил передвинуть встречу на две недели позже, и он согласился. Мне правда нужно было это время. Я потратил его на то, чтобы изучить столько алгоритмов и структур данных, сколько могло поместиться у меня в голове. Я писал коды по 12-14 часов в день и решал сотни проблем. Я буквально был одержим и не останавливался, пока мой страх перед интервью с Google не превратился из страха в нетерпеливое ожидание.
Я помню каждое мое собеседование в Google, и каждое из них было для меня как катарсис. Интервьюеры были приятными собеседниками, и я уверен, они видели, насколько сильно я взволнован тем, что они позвали меня на встречу. И насколько увлечен заданиями, которые они мне дали. Вот некоторые из них:
- Учитывая набор из 2-мерных точек, вычислить горизонт. Это было легко. Я обратился к общей структуре данных, известной как max heap. Есть несколько хороших решений подобных задач, и это одно из них.
- Создать Microsoft Paint. Это была одна из самых веселых задач. Я начал с рисования интерфейсов и диаграмм классов. Я упомянул Paint Bucket, и интервьюер попросил меня его реализовать. К счастью, я знал как сделать это даже с закрытыми глазами благодаря TopCoder.
- Описать свои лучшие качества как программиста. Я рассказал о типах тестирования и привел примеры, когда они наиболее эффективны. Рассказал про единый стиль сопровождения кода. И тому подобное. Все это вы найдете в книгах “Законченный код” или “Эффективный Java”.
Я наслаждался каждым раундом собеседования и тем, как я решал их задачи. Если бы я не подготовился, все пошло бы совсем по-другому. После собеседований у меня было очень хорошее предчувствие. Но я слышал, что даже если комитет по найму одобрит мою кандидатуру, меня не примут до тех пор, пока Ларри (Пэйдж) лично не подпишет решение о найме. И я боялся, что когда он увидит мою брешь в образовании, мне крышка.
Но этого не случилось. И в один прекрасный день, когда я ел суши в Санта Клара, мне позвонили и с энтузиазмом сообщили, что я принят. В этот день я понял, что никогда не вернусь в школу.
Воины-победители сначала побеждают, а потом идут на войну, между тем как воины-побежденные идут на войну и там ищут побед”.
Источник Business Insider