Ключ к ускорению ваших навыков программирования Перескок “точки перегиба” и становление самостоятельным программистом
Когда вы учитесь программировать, есть момент, когда всё начинает меняться. Назовём это “точкой перегиба”.
После этой фазы способ, которым вы работаете как разработчик, будет существенно отличаться. Построение до точки перегиба — это процесс становления самодостаточным в программировании до такой степени, что вам больше не нужна “ручная” работа. Это может быть неприятный опыт, но как только он позади, он наделяет вас невероятными полномочиями.
Цель — не просто научить вас писать код, как создавать веб-приложения или как писать тесты. Основная цель — ускориться после “точки перегиба”, чтобы вы смогли решить любую проблему, с которой вы сталкиваетесь. Возможность решить проблему самостоятельно — бесценный навык, и этот метод обучения позволит вам намного больше, чем просто научиться создавать набор приложений.
Когда вы начинаете изучать код, есть много информации, которую вы еще не знаете. Эта информация называется областью знаний, знание того, как написать цикл в Ruby или как извлечь что-то из базы данных с помощью Ruby on Rails. Знания, связанные с доменом, которые охватывают протоколы, уникальные для определенной среды программирования. Первым шагом к тому, чтобы стать самодостаточным разработчиком, учится выполнять конкретные задачи. Как только вы овладеете определенными задачами, станут очевидны паттерны того, как сочетаются фигуры. Со временем вы начнете распознавать шаблоны, и в конечном итоге вещи, которые изначально казались запутанными и чужими, станут вашей второй натурой.
Для начинающих наиболее важным навыком является внимание к деталям. Уделять пристальное внимание деталям важно при просмотре таких материалов, как документация. Даже самые незначительные опечатки и синтаксические ошибки приведут к сообщениям об ошибках. Вначале увидеть сообщения об ошибках — это разочарование, но это важный шаг в процессе обучения. Работа с сообщениями об ошибках и проблемами на этом этапе учит вас одному из самых важных навыков программирования в безопасной среде: быть ориентированным на детали.
Дебаггинг(отладочные сообщения об ошибках) невероятно важны. Дело в том, что сообщения об ошибках являются лишь частью программирования: их видят как неопытные, так и очень опытные разработчики. Единственное различие заключается в том, что чем больше у вас опыта работы с ошибками, тем меньше времени вам придется потратить, пытаясь их исправить. Вот почему:
Со временем вы узнаете, как читать сообщения об ошибках и быстро извлекать соответствующие сведения о проблеме. В первый раз, когда вы увидите сообщение об ошибке, вам потребуется некоторое время, чтобы расшифровать то, что оно на самом деле означает. Но после того, как вы увидите сотни сообщений об ошибках (и вы увидите сотни или даже больше!), вы сможете точно определить местоположение проблемы и соответствующие данные, необходимые для ее исправления.
Вы должны извлекать пользу из каждого сообщения об ошибке, которое вы разрешите. Не просто исправить ошибку, а понять, что не так с кодом, который вы исправляете. Изучая каждую из ваших ошибок, в следующий раз, когда вы сделаете ту же ошибку, вы сможете исправить ее намного быстрее.
Сначала вы, возможно, попросите о помощи по каждому сообщению об ошибке. Но со временем, вы научитесь чаще обращаться за помощью, дважды проверяя свой код и проводя поиски в Google.
На этапе обучения вы будете следовать инструкциям. Сначала вам будет сложно, невероятно сложно, и сообщения об ошибках будут приходить часто. Со временем вы будете развивать умение дебаггинга, и уделять больше внимания мелким деталям. Таким образом, вы сможете добиться прогресса. Когда вы завершите этап обучения, вы заметите, что можете писать код намного быстрее.
На этом моменте некоторые люди чувствуют себя уверенно, как будто они готовы преодолеть марафон. Другие же будут, копаться в учебных пособий, пытаясь получить больше знаний о домен, и в поисках «абсолютного понимания». К сожалению, учебники или различные руководства не наделят вас настоящей уверенностью. Истинная уверенность исходит из борьбы с задачей, с которой вы сталкиваетесь впервые, в результате которой, находите верное решение самостоятельно.
Маленький секрет программирования ...
Вы никогда не узнаете всё, что вам нужно знать, чтобы решить все ваши проблемы в один щелчок. Пройдя обучение(будь-то университет, bootcamp,курсы и т.д.), вы, вероятно, предположите, что в конечном итоге узнали всё, что вам нужно, и лавочка закрыта. Этот момент никогда не наступит.
Программирование — это образ жизни. Опытные разработчики программного обеспечения стремятся найти решения проблем, которые они еще не решили, поскольку они дают им возможность узнать больше. Если вы ожидаете момента, когда вы, наконец, почувствуете, что знаете всё, что нужно знать о программировании, знайте что этот день никогда не наступит. И это замечательно.
Вы будете готовы перейти на следующий этап своего “путешествия”, когда:
Вы видели достаточно сообщений об ошибках, которые больше вас не пугают. Вместо этого вы знаете, как расшифровать то, что они означают и,где искать проблемы в вашем коде. Вы мастер гуглить пути решений. Когда вы работаете над добавлением функции или видите запутанное сообщение об ошибке, вы знаете, что искать, чтобы найти нужную вам информацию. Вы можете ссылаться на код, который вы написали в других частях приложения и следовать шаблонам внутри них, а не всегда искать пошаговые инструкции.
Точка перегиба
Этот этап является одним из самых разочаровывающих этапов обучения программирования. Это тот момент, когда вы поэтапно отказываетесь от использования посторонних ресурсов и начинаете решать проблемы, для которых никто не выстроил решение для вас.
В какой-то момент вы почувствуете, что не готовы заниматься этой фазой, а хотите вернутся на тот этап, где были выстроены для вас паттерны решения. Не становитесь жертвой этого менталитета. Причина, по которой вы будете расстроены — это:
Во время фазы перегиба вы будете кодировать в 10-20 раз медленнее, чем на предыдущей фазе.
Вы можете начать спрашивать себя и задаваться вопросом, действительно ли вы можете стать программистом. Чувства отсутствия безопасности и сомнения распространены на этом этапе.
Несмотря на то, что вы почувствуете что делаете что-то гораздо медленнее, на самом деле вы постигаете самое важное. В то время, как ваши знания, специфичные для вашего домена, доступны , всё, что вы изучаете, будет касаться процедурных знаний.
Процессуальное знание — это способность научить себя тому, чего вы не знаете. Когда вам нужно внедрить новую функцию, какой тип поиска Google нужно сделать? В этот момент вы почувствуете, что находитесь во мгле, когда дело доходит до многих вещей, которые вы хотите выполнить. Изучение того, как найти луч света самостоятельно, имеет решающее значение, потому что вы никогда не сможете знать всё, что нужно знать.Поэтому вам нужно научиться решать проблему самостоятельно.
Большинство людей не понимает, что для того, чтобы научиться кодировать, необходимо изучить как доменные, так и процедурные знания.
На всю оставшуюся жизнь выходите за пределы своих пределов каждый день.
Некоторые программные инженеры остаются в своей зоне комфорта. Это тип программистов известен как “программисты по обслуживанию” — не то, к чему вам надо стремиться. Вместо этого вы должны стремиться расти каждый день. Самая распространенная причина, по которой программисты покидают свои рабочие места, состоит в том, что «это рутина, так как я решил всё самое интересное».
Вместо того, чтобы пытаться вытащить проекты в зону комфорта, вы должны искать проблемы, которые не соответствуют вашим текущим навыкам. Это единственный способ расширить свои навыки.
В веб-разработке есть две точки перегиба, которые приходят вместе.
Точка перегиба веб-разработки — это момент, когда вы становитесь способным создавать любое приложение, управляемое базами данных, которыми хотите. Это означает возможность создания веб-приложения со многими страницами, которые хранят и извлекают информацию из простой базы данных. Веб-разработчики называют это: « CRUD мастер». На этом этапе вы также сможете интегрироваться с любой сторонней библиотекой, просто следуя документации, предоставленной в GitHub.
Вторая точка перегиба, это алгоритмы и структуры данных, которая является менее поверхностной. Она очень важна. Тот кто прошел этот этап, освоит язык программирования, на котором он пишет, и помимо освоения основ программирования, бонусом будет еще и глубокий слой знаний для решения разнообразных сложных задач, необходимый навык для спортивного программирования.
Люди, “завоевавшие” точку перегиба алгоритмов и структур данных, смогут:
Писать алгоритмы сортировки Понимать и писать программы, используя стеки, очереди и деревья Создавать компьютерные программы с использованием рекурсивных или итерационных решений Работать со связнными списками
Вкратце, как только вы пройдете эту точку перегиба, вы освоите манипуляции с данными и поймете влияние производительности на ваши решения. Традиционные степени в области компьютерной науки сосредоточены исключительно на том, чтобы студенты прошли мимо точки перегиба алгоритмов и структур данных. Многие университеты преподают это с помощью языков программирования, которые обычно не используются в промышленности, таких как Scheme, Racket или LISP.
В большинстве технических интервью, интервьюер предположит, что вы прошли точку перегиба веб-разработки, учитывая, что это проще сделать, и сосредоточит свои вопросы на оценке ваших навыков в алгоритмах и структурах данных. Эти вопросы, как правило, будут сосредоточены на упомянутых выше: алгоритмы сортировки, переключение связанных списков и использование стеков, очередей и деревьев.
Как только разработчик прошел как точку перегиба веб-разработки, так и точку перегиба алгоритма и данных, он программист.
Эти разработчики смогут решать проблемы, которые пересекаются: сложные алгоритмы, которые необходимо построить в контексте передовых веб-приложений. Это лежит в основе того, что делают профессиональные веб-разработчики каждый день.
Последствия точки перегиба
Самое большое последствие точки перегиба будет звучать немного противоречиво, когда вы впервые прочтете это. При изучении программирования знание домена не имеет значения в великой схеме вещей.
В конечном счете, что действительно важно:
У вас есть четкое понимание структуры веб-разработки У вас есть полное понимание написания алгоритмически сложного кода на любом языке программирования
Хедхантеры хотят, чтобы разработчики обладали как навыками веб-разработки так и навыками алгоритмов и структур данных.
Не распыляйтесь. Многие люди скажут такие вещи, как «AngularJS в тренде в эти дни», «JavaScript на подъеме» или «последняя причуда ...» и т.д.
Ваш ответ на это должен прозвучать: «и что?». Когда вы учитесь программировать, вашей единственной целью должно быть найти точку перегиба и уничтожить ее. Как только вы это сделаете, изучение какой-либо новой тенденции не составит труда.
Станьте самостоятельным. Наличие способности изучать новые навыки кодирования без структурированного руководства означает, что вам больше не нужно ждать, пока кто-нибудь придет к вам на помощь.
Это не означает, что вы сразу же «узнаете» всё,а, что всё теперь возможно.
Навыки, которые вы приобритете во время перегиба
Для программный инженер, лучший справочный материал — это аналогичный код, который вы уже написали. Когда вы полностью понимаете код, который вы написали, вам не нужно передавать все данные в память. Это означает, что первым вопросом, который вы должны задаться при создании новой функции, является следующее: «Я уже построил что-то подобное раньше?» Если да, верните тот код и пройдитесь по строкам. Объясните себе, что он делает, и спросите себя: «Можно ли сейчас использовать тот же подход?».
Предположим, вы хотите интегрироваться с API Карт Google. Как только вы испытаете это однажды, для открытия кода в GitHub может потребоваться меньше минуты, скопируйте код и вставьте его в новый проект.
Стратегии прохождения точки перегиба как можно более эффективно
Поскольку переход точки перегиба является самой важной частью обучения, вы должны настроить себя на то, чтобы сделать процесс максимально плавным.
Для каждого урока попробуйте сделать что-то, что выходит за рамки учебника, за которым вы следуете. Решение неуправляемых задач даст вам важный опыт ведения дел без структурированного руководства.
Постарайтесь использовать учебные материалы как можно меньше. Вместо того, чтобы просто следовать инструкциям, изложенных в учебных пособиях, ориентированных на людей, которые только начинают,следите за документацией и используйте учебники в качестве резервной копии. Обратите внимание на то, что документация будет рассматривать вас как разработчика, который прошел точку перегиба. Получение удобного чтения и последующей документации по GitHub даст вам преимущество, когда вы самостоятельный программист.
Сосредоточьтесь на основных принципах и используйте повторение. Узнайте, как делать общие вещи, например, делать приложение с нуля, подталкивать новое приложение к GitHub и Heroku и создавать миграцию базы данных на ранней стадии.
Продвижение через точку перегиба может быть непростым. Вот несколько моментов, которые помогут вам в этом:
Поймите, что это сложный процесс. Кроме того, установите реалистичные ожидания. Вы не можете сравнить скорость «сверхчеловека», который прошел через всё это, с вашей «улиткой» — скорости обучения предмета самостоятельно. Имейте в виду, что вы много учитесь, но на этом этапе вы изучаете новый навык, позволяющий самостоятельно разобраться в новых вещах. Вы работаете над уверенностью в себе, знайте, что то, что вы чувствуете, абсолютно нормально. Продолжайте работать. Если вы дошли до точки кипения, попробуйте поговорить с тем, кто недавно прошел точку перегиба. Он сможет понять ситуацию, в которой вы находитесь, и заверить вас, что то, что вы переживаете, является временным. Работайте последовательно, но не перегружайте себя. На этом этапе “игры” знайте, что вы можете быть продуктивным только в течение 6 часов в день максимум. Работа на пределе только продлит время, затрачиваемое на преодоления точки перегиба.
Лучший способ на этом этапе — это сила, которую вы испытываете. Ваши эмоции могут начать балансировать как на американских горках. Время от времени вы будете чувствовать, что вы в агонии, но через 15 часов борьбы с одной и той же проблемой, очень часто ощущается тотальное удовлетворение.
Это может быть неприятно, если вы не понимаете, что что-то займет у вас 5 минут или 5 часов, но каждый раз, когда вы включаете и успешно реализуете новую функцию, прилив уверенности будет вам наградой.
Как узнать, когда вы прошли точку перегиба
Последним этапом процесса точки перегиба является принятие. Принятие того, что разработка программного обеспечения является процессом непрерывного обучения.