На начальном этапе лучше писать быстро или качественно? | SHIFU.IO
Статьи
На начальном этапе лучше писать быстро или качественно?
Николай Ясинский 12.02.2018
Подобные вопросы мы часто видим в комментариях к видео, но этот материал - расшифровка видео, которое на самом деле не было ответом на чей-то конкретный вопрос. Тот выпуск был инициирован разговором с одним из сотрудников, мы обсуждали, что важнее на начальном этапе – скорость, когда ты очень много проектов делаешь, и не смотришь на качество, или хороший код правильные подходы.

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

Я уже упоминал, что у людей за 30 должна быть другая стратегия, нежели у мальчишек 15-17 лет.

Поэтому если мы говорим о стратегии «делать быстро», которую я часто рекомендую на канале, то она тоже подходит не для всех. Она подходит для людей, у которых нет ментора. Это общая простая стратегия, она покрывает достаточно большой пласт людей, которые мои видео смотрят и хотят научиться программированию. Если бы у вас был ментор, тогда у вас был бы человек, который составил бы вам план собственного развития, (условно «составил» – он бы давал задачи, а вы бы как-то развивались) он бы мог контролировать разработку вашего кода, задавал вам определённые условия, благодаря которым ваша стратегия бы изменилась.

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

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

Мы видим огромное количество обсуждений, где люди спорят о том, какая методика обучения лучше. И многие почему-то забывают, что есть разные ситуации, есть разные ресурсы, и сейчас моя задача – внедрить в вашу голову простое понимание того, каким образом происходит усвоение информации в процессе обучения в целом.

Разберём менторство и самостоятельное обучение и почему та или иная стратегия работает именно так.

  1. 1. Вы самообучаетесь и ментора у вас нет.

  2. И происходит следующее – если мы говорим об эффективности, а именно о скорости и результате, на начальном этапе вам нужно максимально быстро двигаться, чтобы вообще двигаться (вы не представляете, какой процент людей застряли на месте, ничего не сделав). Сдвинуть себя с места – большая задача и все мои советы «сделать хоть как-то проект и выложить его» — это как раз об этом. Мне важно столкнуть вас с места, чтобы вы начали двигаться. Дальше – скорость. Потому что, если вы сдвинулись с места и начали что-то делать и делаете это слишком долго (один проект длиною в годы), эффективность снижается. Согласитесь, вы никому не интересны, если вы долго пишете один проект, а когда вас просят показать, вы не можете, потому что он ещё в разработке. Что касается качества кода – на начальном этапе человек без ментора в большинстве случаев не может адекватно оценить качество своего кода, поэтому постоянное вылизывание своего кода приводит к непонятным результатам. Неизмеримым – вы же не можете оценить его адекватно.
  3. Если вы начинаете максимально быстро двигаться, то у вас есть завершённые этапы, портфолио, да, ваш код говно, но на начальном этапе у всех он именно такой, но вы самостоятельно движетесь и получаете результаты в виде выполненных проектов. Кто вам мешает с течением времени улучшать качество вашего кода? По сути никто, но есть определенные психологические факторы, нейронные связи, которые укрепляются со временем, лучшее понимание происходящего на основании существующего опыта, визуальные образы, которые у вас есть, к которым лучше прикрепляется информация и т.д. И получается, что если на начальном этапе вы сдвинулись, вы говнокодите, но делаете большое количество разных проектов, завершаете их, пусть ваш код - говно, но вы постепенно в этом процессе начинаете изучать что значит тот или иной термин, как можно улучшить ваш код, собирать советы, читать статьи, книги, и вы делаете это в очень высоком темпе. Что же происходит с качеством? Безусловно, оно со временем растёт. Вы постепенно находите коллег, товарищей, которые также влияют на вас. Но я вам точно говорю, что если вы сидите и читаете «PHP для чайников» на протяжении последних четырёх лет, то факторы роста у вас очень низкие. Шанс стать программистом у вас конечно же есть. Но этот не тот метод, который сможет вам дать эффективный результат.
  4. 2. Если у вас есть ментор.

  5. Он вам задает вектор развития, и неплохо если он вам помогает исправлять код. Он даёт вам задание, и, если вы его сделали плохо, он поправляет, объясняет где ошибка и как надо было делать. Вы поправляете, идёте дальше и выполняете задачу за задачей. С ментором срок обучения сильно сокращается, то есть растет ваш КПД, ускоряется процесс вашего обучения выполнения заданий, исправления ошибок и понимания сути того. То есть просто растет эффективность. Если в первом случае вы очень быстро набираете темп, чтобы сдвинуться и получить базу, к которой информация будет прилипать, и потом постепенно в процессе улучшаете свой код и подходите к определённому качеству кода через определённый промежуток времени, то с ментором это просто занимает меньше времени.

Если же вы на начальном этапе самообучения упрётесь в чтение, например, талмудов по алгоритмике, вы сдвинетесь очень ненамного, и вам придется сильно раскачиваться. У вас энергии и времени на изучение фундаментальных основ и терминов уйдёт очень много, вам будет сложно все понять и запомнить, и только потом вы начнёте двигаться. А после того как вы начинаете делать проекты, вы понимаете, что очень много не учли. Ну конечно, вы же в этом ничего не понимали, когда читали книгу. Причём, если вы бы вы двигались, просто процесс усвоения этой информации был бы проще.

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

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

Итого у нас есть:

  1. - Самообучение (или обучение в ВУЗе ) с фундаментальщины, со сложных терминов;
  2. - Самообучение, когда хоть что-то делаешь и потом по ходу залатываешь дыры;
  3. - И обучение с ментором.

Основная идея в том, что фундаменталка, где бы вы не изучали ее – это долго и неэффективно, можно действовать быстрее и с другой стратегией. Можно параллельно обучаться в ВУЗе, и действовать более эффективно, просто понимая всю ситуацию, как вы расходуете свои ресурсы, что именно вы получаете взамен своего времени. Это валюта, которой вы расплачиваетесь, помимо денег. И если ваши результаты очень маленькие – вы переплатили. Если вы хотите расходовать свои ресурсы более эффективно – замечательно, если вы самообучаетесь – то сначала скорость, постепенно залатывая дыры. Начинаем не с книг. Книги начинаем читать в процессе.

А чтобы начать надо просто начать.

Николай Ясинский 12.02.2018