Что значит «толковый программист»?

Программисты — программируют, так ведь?

Окей, вы решили стать программистом. Первая мысль: «значит надо научиться программировать!» Да и в вакансих не зря же пишут «требуется программист».

Выбрали язык, изучили синтаксис: переменные, константы, массивы, циклы, условия. Выглядит все немного не так как в школе в Паскале, но идея та же, не страшно.

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

Увы, нет :(

Программирование — только один из аспектов, с которыми придётся иметь дело.

Уметь программировать недостаточно!

Идеальный работник

Вот так мог бы выглядеть идеальный работник с точки зрения работодателя:

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

Реальность

Реальность в вашем случае будет, скорее всего, скромнее, так как многое из перечисленного нарабатывается только практикой в реальных проектах. В начале пути у новичка в наличии:

  • море амбиций
  • вагон энтузиазма
  • незамутненный излишним знанием взгляд
  • и, по неопытности, руки из одного места :)

К сожалению, в индустрии нет единого стандарта именования уровней крутости программиста. Наиболее распространенная: Junior developerSenior developer. Как вы заметили, в ней маловато градаций, поэтому иногда между ними добавляют еще Middle.

Однако, я не встречал ёмкого определения этих уровней, и мне по душе другая классификация: «кодер → программист → разработчик → инженер».

Новичков тоже нанимают

Хорошие новости в том, что не все компании ищут крутых. С крутыми и опытными бывают проблемы. Они частенько идут в комплекте с набором тараканов и вредных убеждений.

Когда я руководил в 7bits, мы предпочитали нанимать именно молодых, и обучать их самостоятельно, вместо того чтобы перевоспитывать «звёзд». Многие компании делают так же.

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

Идеальная для вас ситуация: закончилось интервью, вас попросили подождать в переговорке, и через неплотно закрытую дверь вы слышите как техдир с тимлидом говорят про вас:

– А вот этот толковый, согласен?
– Ага, ну что берем?

Чтобы услышать про себя такое, не обязательно иметь диплом по Computer Science, не нужно иметь пять лет опыта работы или знать наизусть все тонкости языка программирования. А что же нужно?

Залезаем в мозг к работодателю

Прикинем как размышляет руководитель компании заинтересованный в наборе новичков. Ему хотелось бы чтобы:

  • новичка можно было быстро поставить в строй
  • он умел учиться самостоятельно
  • он умел доводить дела до конца
  • он связно выражал свои мысли
  • у него был «огонек в глазах»

Разберем подетальнее:

1. Чтобы новичка можно было быстро поставить в строй

Тут две вещи играют роль:

  1. Насколько то, что вы уже знаете и умеете, совпадает с тем, что нужно делать в рамках этой позиции.
  2. Насколько быстро вы подтянете недостающее.

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

2. Чтобы быстро обучался и умел учиться самостоятельно

Постоянно будут ситуации когда надо будет быстро разобраться с новой областью знаний. Подход «сейчас я пройду полугодичный курс по реакту/базам данных/swift», а потом «медленно спущусь с горы» больше не сработает.

Понять суть, уловить идею, вкурить принцип — вот что требуется. Конкретикой это обрастёт по ходу работы — не страшно. Как вы этого добьетесь — ваше дело. Возможны варианты, что называется:

  1. Может быть получится какое-то время подглядывать за опытными коллегами и просто делать по аналогии, параллельно разбираясь почему все делается именно так, как делается.
  2. Вам реально могут дать недельку на то, чтобы врубиться в новую тему, и если эта неделя оплачивается, то с такой мотивацией можно и довольно большой курс съесть за это время (ну как минимум почитать какой-то довольно большой цикл статей, пару глав из разных книжек), посмотреть видосы.
  3. Может быть придется разбираться с новой темой вечерами. Учитывая, что работодатель вас не для обучения нанимал, это в какой-то степени справедливо. Ваши знания останутся с вами навсегда, поэтому не жалко какое-то время вечерами покурить новые технологии.

Надо понимать, что не всегда нужно упарываться и глотать полугодичные курсы за неделю. Работодателю ваши ачивки за законченные курсы по барабану — ему важно чтобы вы были в состоянии решить конкретную задачу. А для решения конкретной задачи скорее всего хватит и небольшой части того что предлагают изучить на полноценных курсах.

Что это было?

Это большая часть нулевого выпуска рассылки для начинающих программистов. Подпишитесь на курс, чтобы извлекать из программирования не только удовольствие, но и деньги вместе с бодрым профессиональным развитием.