В каком-то времени меня попросили создать команду Ruby для отдельного подразделения Codequest’s, что означало, что я стану Тимлидом (черт возьми, да!!!) и — что более важно, по сути стать человеком, к которому обращаются все HR, пытающиеся набрать новых разработчиков (хм...). Совершенно очевидно, большинство из этих разработчиков, были новичками со средними знаниями. Подходя к каждому интервью, я не забываю, что не так давно я сам был начинающим студентом, сидящим по другую сторону стола, поэтому я стараюсь быть терпеливым, добрым и дать каждому кандидату честную и полезную обратную связь, даже если мы решим, что он нам не подходит. Как бы там ни было, я выявил некоторые закономерности – многие разработчики, особенно новички, делают ошибки, которые не только затрудняют их старт, но и которые можно легко избежать, если бы им только кто-то об этом сказал ранее. Я сам совершил большинство ошибок в свое время и если бы меня кто-то об этом предупредил, хотя может так и было, я просто не слушал, вероятно, это бы спасло меня от многих разочарований – поэтому, чтобы облегчить чью-то жизнь, я постараюсь указать, на то, что новичок (или даже middle) может сделать лучше, если он хочет эффективно развиваться как разработчик в престижном направлении разработки программного обеспечение.

GitHub


Все в сообществе знают, что ваш репозиторий GitHub — это то, что действительно важно для будущего работодателя. Не так ли? Если вы написали библиотеку с открытым исходным кодом, которую используют люди или внесли в нее свой вклад, да, это может быть довольно ценным козырем. Если вы написали приложение, даже если это учебное приложение, которое решает некоторые повседневные проблемы, которые у вас есть — это также может показать ваши навыки. Однако если все репозитории, которые вы можете показать — это наполовину законченные задачи других компаний, не затронутые ни разу за последние девять месяцев, или супер-базовые Rails, вашего первого «rails new», то действительно ли вы хотите, чтобы мы это увидели? Возможно ты сейчас намного лучше, чем 9 месяцев назад, черт возьми, наверное, так и есть, но мы этого не знаем наверняка и когда ты присылаешь нам ссылку на кладбище своего кода — ну, как говорится, у вас есть только один шанс произвести хорошее первое впечатление, верно?

И это относится не только к новичкам (junior) — если бы вы заглянули в мои репозитории GitHub, вы бы нашли точно такие же вещи повсюду — задания по набору персонала, из прошлых лет или некоторые заброшенные эксперименты на ЯП, которые я изучал в процессе и т. д. Я делаю коммиты(commit) на GitHub каждый день – но эти коммиты относятся к приватным репозиториям, здесь не на что смотреть. Все, что я хочу сказать, это нормально, если в вашем GitHub ничего не плодится, но в таком случае и не показывайте его нам.

Ruby


Мы все любим Rails! И мы также ненавидим их. И иногда мы любим и ненавидим одновременно. Или иногда в один прекрасный день мы любим его, а на следующий ненавидим и проклинаем. Однако мы все согласны с тем, что Rails является стандартом де — факто, когда речь заходит о создании веб-приложений на Ruby — требуется много самоотверженности и усилий, чтобы работать в этом бизнесе и не касаться его даже кратко (хотя я встречал людей, которые утверждают, что делали так). Поэтому вполне естественно, что когда вы решаете стать веб-разработчиком Ruby, вы изучаете Rails. И не есть хорошо, когда вы изучаете Rails, не изучая Ruby!

Возможно, вы подумаете, что это ускорит ваш прогресс — в конце концов, настройка базового приложения Rails очень проста — но очень скоро вы обнаружите, что на самом деле не понимаете, почему это работает, вы будете знать только то, что это работает, но вот первая простая ошибка, и вы уже на Stack Overflow, в поисках кого-то, у кого была подобная проблема.

Думайте об этом так — вы же не будете пытаться написать книгу на иностранном языке, используя только Google Translate и цитаты из ваших любимых фильмов, верно? Тоже самое и с написанием приложения — вы буквально пишете то, что должно иметь смысл и чем лучше вы знаете язык, тем лучше вы можете передать предполагаемый смысл и чем эффективнее вы становитесь в составлении предложений — тем больше смысла это имеет. Когда вы знаете только Rails, ваш словарный запас ограничен. И я могу заверить вас, вы не захотите работать в компании, которой нужен «ограниченный», потому что уже очень скоро вы превратитесь в робота, который реализует только основные функции CRUD, что является захватывающим в течение, например, двух месяцев, но затем быстро надоедает, подобно чистки зубов, вы должны сделать это, вы должны сделать то, но это ведь не совсем то, чего бы вам хотелось, не так ли?

Каждое интервью я начинаю с очень простого и основного вопроса:

— Что такое класс в Ruby, что такое модуль, в чем их отличия и для чего они нужны?

Вы бы удивились, узнав, как много людей на самом деле не знает ответа на этот вопрос! И это люди, которые хотят стать разработчиками программного обеспечения. Все они могут создать блог с постами и комментариями в считанные минуты — и на этом все. Был у меня один кандидат, на должность mid разработчика, который утверждал, что работал в течение года над клиентским приложением в качестве руководителя команды — так он до сих пор не знает, что такое модуль Ruby.

Не будьте такими. Учите Ruby. Существует множество ресурсов для этого. Один из лучших, что я знаю — The Ruby Reference — Ruby онлайн — книга, которая ссылается на официальную документацию, но является более удобным и понятным для чтения. Прочитайте это, изучите это, и почувствуйте, как растет ваш профессионализм.

Rails


Как было уже сказано выше, давайте не будем забывать, что Rails — это каркас Ruby, для написания веб-приложения. Есть большой шанс того, что он станет вашим повседневным основным инструментом — так что потратьте время, черт возьми, чтобы понять, как он работает! Rails Guides — это очень доступная и довольно обширная документация — найдите время, чтобы прочитать и изучить ее.

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

Учебные пособия


Уроки великолепны – все их используют! Однако следовать чьим — то инструкциям недостаточно, помните, что цель этого пособия, не создать рабочий блог с постами и комментариями, а научить Вас создавать свое собственное приложение. И это именно то, что вы должны научиться делать, как можно скорее. Вспомните все те моменты, когда вы думали «если бы у меня только было приложение для этого!». Или спросите своих друзей и семью, в каком приложении они нуждаются больше всего. Это может быть что угодно — простой органайзер задач, список желаний или любое другое приложение. Мое первое приложение было своего рода записной книжкой для экспериментов моей жены в ее лаборатории (она ученый). Я так и не закончил его, но это не имеет значения — в данном случае речь идет о процессе, а не о результате. При выполнении урока, вы имеете дело с искусственно созданными проблемами и готовыми решениями. Когда вы создаете свою собственную вещь, вы вынуждены думать, как построить ее. Вы должны найти решение своих проблем самостоятельно.Я твердо верю, что нет лучшего способа научиться творить, чем начать творить, потому что это то, чем вы будете заниматься как веб-разработчик. Преодоление трудностей, даст вам огромное чувство удовлетворения, укрепит вашу уверенность и зажжет ту искру, которая заставляет нас часами сидеть, сгорбившись над клавиатурой, только чтобы увидеть правильный JSON или рабочую регистрационную форму. Это даст вам опыт и что-то, что можно показать. Ваш код не обязательно должен быть красивым или кричащим — вы новичок, никто не ожидает, что вы напишете операционную систему!

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

Мистер Хороший парень.


Этот последний пункт относится не к одному конкретному уровню опыта, а по существу ко всем, кто работает в нашей отрасли. Все очень просто — не будь засранцем. Будьте добры к другим. Будь полезным. Улыбайся. Спросите, если не знаете, объясните, если спросят. Не смотрите на людей свысока, если они ничего не знают, потому что каждый из нас может быть на его месте, информатика, программирование, это такая широкая область, что практически невозможно быть экспертом во всем. Признайте, что вы можете учиться у любого, даже если у них есть лишь доля вашего опыта. Учите других, потому что учить других, это один из лучших способов проверить то, что вы действительно знаете. И примите тот факт, что, если вы самый умный человек в комнате, вы должны сменить комнату, потому что это единственный способ расти и не становиться самодовольным. Проверяйте свои знания и навыки, как можно чаще. Как гласит общепринятая практика в тренажерном зале, «если болит, значит растет», покидайте зону комфорта, не оставайтесь в ней.

Если вы также занимаетесь front-end разработкой, обязательно ознакомьтесь с полным списком наиболее распространенных ошибок начинающих front-end разработчиков , составленным нашим front-end Тимлидом Петром Кабачинским.