Подзаголовок: Особенно, если вы выходите из учебного лагеря
Я выбрал очень традиционный путь в программной инженерии. Я заинтересовался компьютерами и программированием в старшей школе, затем получил степень бакалавра наук. CS в 2012 году и мой MS. CS в 2018. Работаю уже более 8 лет.
С появлением различных учебных курсов и программ по программированию (таких как Школа Лямбда) я вижу, что все больше и больше людей стремятся совершить прыжок в область разработки программного обеспечения. И не зря! Когда вы смотрите на веб-сайт статистики труда, там утверждается, что разработчики программного обеспечения зарабатывают в среднем 86 000 долларов, что выше, чем средний доход домохозяйства в большей части США.
Добавьте к этому такие сайты, как levels.fyi, заявляющие об астрономических зарплатах в некоторых известных технологических компаниях, и легко понять, почему людям, по крайней мере, любопытно попробовать себя в этой области.
Со всем этим у меня есть довольно постоянный поток людей, интересующихся разработкой программного обеспечения и тем, что нужно, чтобы получить работу инженера-программиста. Я хотел изложить несколько мыслей, которые могут помочь более широкой аудитории, из общих вопросов, которые я слышал.
Могу ли я устроиться на работу инженером-программистом без высшего образования?
Краткий ответ — да! Длинный ответ — возможно, но это будет непросто.
Взгляните на Отчет по результатам Lambda School за 2019 год. В нем четко сказано, что после окончания школы студентов устраивают на реальную работу. Многие известные технологические компании имеют программы повышения квалификации сотрудников, которые обучают существующих сотрудников инженерам-программистам. Так что да, вполне возможно получить работу инженера-программиста без степени.
С учетом сказанного вы должны знать, что это не будет легко. Несмотря на нехватку инженеров-программистов, объявления о вакансиях для них, как правило, получают чрезмерное количество соискателей. Даже небольшие компании часто перегружены количеством резюме, и многие из них являются поддельными или раздутыми (подробнее об этом ниже).
Таким образом, со всеми этими резюме, многие из которых содержат отличные модные словечки, добиться того, чтобы ваше заметили и прочитали без степени, будет сложно. Несколько быстрых советов
- Демонстрируйте доказательства работы — профиль на github с реальными проектами, вкладами с открытым исходным кодом, вещами, которыми вы гордитесь.
- Покажите, какое у вас есть образование и инициативу, которую вы предприняли, чтобы попытаться получить больше опыта (учебные лагеря, классы, проекты, стажировки и т. д.).
- не раздувайте свое резюме — я брал интервью у людей, которые солгали в своем резюме, и это видно в спешке, и я помечаю этих соискателей как не перезванивающих. Честно представляйте свои сильные стороны, не преувеличивайте.
- Будьте реалистами — если вы заканчиваете 9-месячный буткемп и не имеете опыта работы, стремящегося занять позицию младшего разработчика, не претендуйте на старшие должности, если у вас нет опыта или знаний. Вы начинаете с нуля, и это прекрасно! Просто будьте готовы к уровню, на который вы придете
- Не расстраивайтесь, если вы не слышите правильный ответ — продолжайте пытаться. Есть много-много причин, по которым кто-то может пропустить резюме выпускника учебного лагеря (может быть, их команда перегружена работой, и они не могут взять юниора, может быть, они пробовали выпускника другого учебного лагеря, и это не помогло). работать, может быть, у них просто слишком много резюме, и это простой фильтр). Но если вы не получите первую или 500-ю работу, на которую вы подали заявку, это не значит, что вы не получите 501-ю. Продолжайте расширять свой опыт, продолжайте пробовать!
Спросите себя, нравится ли вам программирование
Голливуд любит показывать программирование как Тони Старка, манипулирующего трехмерными диаграммами и создающего летные костюмы, тогда как на самом деле это медленная, детальная, часто кропотливая работа. Будут моменты, когда вы почувствуете себя героем, когда исправите ошибку, которая отнимает ваше время, но будет много и много других раз, когда вы разочарованы проблемой в течение нескольких дней, прежде чем добиться какого-либо прогресса.
Когда вы работаете на буткемпе или пробуете бесплатные уроки по программированию, спросите себя, нравится ли вам то, что вы делаете. Если вы испытываете радость, любопытство и энтузиазм, когда решаете сложную ошибку и заставляете ее работать, вы, вероятно, на правильном пути, но если вы чувствуете разочарование, усталость или разочарование, вы можете сделать шаг назад и оценить, это поле для вас.
Не только потому, что вы должны делать то, что вам нравится, но и потому, что если вы ненавидите то, что делаете, вы не станете хорошим программистом. В отличие от некоторых областей, где проблема видна перед вами, и вы можете решить ее, хотите вы этого или нет, информатика почти полностью находится в вашей голове. Вы должны быть готовы применять критическое мышление, устанавливать связи между абстрактными конструкциями и решать проблемы. Если вы ненавидите то, что делаете, вы не захотите ничего из этого делать, и вам будет гораздо труднее добиться успеха.
Не ослепляйтесь денежным потенциалом, который вы видите в Интернете, не торопитесь, чтобы увидеть, подходит ли вам это поле.
Ваше собеседование, вероятно, будет связано со структурами данных и алгоритмами, даже если ваша работа не связана с ними.
Большая часть программирования — это структуры данных и алгоритмы, и знание того, когда использовать каждый из них. Важнейшей частью работы программиста является способность рассуждать о различных структурах данных и алгоритмах, понимать компромиссы между их выбором и применять их для создания программного обеспечения.
«Но я фронтенд-разработчик React!» Я слышу, как вы говорите: «Я занимаюсь дизайном и пользовательским рабочим процессом, я сосредоточен на пользовательском опыте, зачем мне знать что-то о структурах данных?»
И вы, вероятно, правы, вероятно, есть вакансии, которые не требуют каких-либо знаний в области DS/алго. Вероятно, вы можете написать много приложений React, просто используя хеш-таблицы или списки.
По моему опыту, большинство интервью по-прежнему включают определенный уровень вопросов DS/algo по двум причинам.
- Это относительно простая форма проблемы, которая говорит мне, можете ли вы рассуждать об абстрактных понятиях и решать проблемы.
- Это отличный способ заставить вас писать код
Я был на множестве собеседований, где соискатель рассказывал об отличной игре, казался потрясающим, имел все нужные модные словечки в своем резюме, затем мы вручаем им маркер (или виртуальное пространство для программирования) и просим их внедрить шипение и они разваливаются. Если я задам вам вопрос об алгоритмах, я увижу, что вы действительно пишете код, а не просто цитируете сообщения в блогах или твиты, которые вы прочитали.
Все инженеры-программисты иногда чувствуют себя тупыми
Несколько раз в неделю (если не раз в день или чаще) я думаю про себя: «Я понятия не имею, в чем причина этой проблемы». Серьезность части «без понятия» варьируется в широких пределах — это может быть 30 минут на выяснение причины сбоя сборки, дни отладки зависимостей, которые дают сбой, или недели отслеживания временных проблем. И я чувствую себя полным идиотом все время.
Это всего лишь человек — вы задаетесь вопросом, сможет ли кто-то из вашей команды решить это быстрее, вы задаетесь вопросом, знает ли кто-нибудь проблему лучше. Синдром самозванца реален.
Так что вы не одиноки, когда вас смущает новый язык или фреймворк. Все инженеры-программисты иногда чувствуют себя тупыми. Не падай духом и не падай духом, помни об этом
- Разработка программного обеспечения — отличная область, в которой можно запутаться — если вы глубоко погрузитесь в код, прочитаете руководство и погрузитесь в него, вы сможете понять любую структуру или проблему.
- Если вы чувствуете себя глупо, это может быть просто потому, что эта область очень, очень трудная. Если вы обнаружите, что боретесь с концепцией, это может быть просто потому, что она сложна.
- Просить! Если вы запутались, скорее всего, кто-то еще в комнате тоже запутался. Это может быть разговор, который следует отключить, но не бойтесь просить разъяснений!
Будь ныряльщиком!
Если вы хотите показать, что вы можете внести свой вклад в качестве инженера-программиста, станьте волонтером по устранению ошибок, глубокому погружению и чтению кода. Не ждите, пока кто-нибудь покажет вам строку с проблемой, не просите о помощи, пока не посмотрите, клонируйте репозиторий, возьмите номер строки из этого исключения и начните глубокое погружение!
Это делает пару вещей для вас сразу
- Показывает, что вы не боитесь кода, вы готовы смотреть и решать проблемы
- Заставляет вас читать базу кода вашей команды, что невероятно важно
Вот несколько советов, как начать делать глубокие погружения
- Делайте заметки — много, много заметок! Это поможет вам продемонстрировать доказательства вашей работы, может помочь задокументировать некоторые функции, которые работают неправильно, и позволит вам объяснить кому-то свое обоснование предлагаемого исправления.
- Ничего не предполагай! Эта функция, помеченная
multipleNumbers()
, может иметь побочный эффект, который не очевиден. Подвергайте сомнению все свои предположения и двигайтесь по каждому пути, пока не освоитесь с тем, что он делает. - Если вы тратите много времени, регулярно связывайтесь с наставником или руководителем команды, чтобы убедиться, что они не думают, что вы слишком далеки от сорняков (вот где ваши заметки пригодятся). Скажите им, что вы думаете, спросите, хотят ли они перенаправить вас. Это показывает, что вы командный игрок, и дает им шанс вернуть вас, если вы зашли слишком далеко в кроличью нору.
Мы так рады, что вы изучаете разработку программного обеспечения!
О боже, я даже не могу объяснить, как мы взволнованы тем, что вы здесь и изучаете это! Я люблю программировать! Это заставляет меня с радостью вставать и идти на работу, это мотивирует меня писать об этом в блоге, это заставляет мой мозг готовиться и пробовать новые проблемы. Программная инженерия — это круто!
И знаете, что мне нужно больше? Квалифицированные сотрудники, которые могут сделать качественный инжиниринг! И это мог быть ты! То, что я выбрал очень традиционный путь в этой области, не означает, что вы должны это делать. Вы привнесете другую точку зрения и опыт, и это здорово!
Погрузитесь, начните учиться, давайте строить вещи!