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

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

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

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

Когда мы говорим об обучении программированию, мы имеем в виду обучение эффективному обучению.

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

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

Пишите код каждый день.

Вероятно, наиболее важной частью всего путешествия является физический акт практики.

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

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

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

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

Знания не имеют ценности, если вы не применяете их на практике. — Антон Чехов

Тщательно планируйте, прежде чем решать проблему.

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

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

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

Однако если вы правильно спланируете и проведете исследование, вы сможете сократить время, затрачиваемое на отладку кода.

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

Я обнаружил, что сначала лучше всего это сделать на вашем родном языке в четкой и лаконичной форме, затем перевести в псевдокод и внимательно прочитать, думая: «Есть ли какой-нибудь способ, которым это может пойти не так?», и только после того, как вы полностью удовлетворены этим, внедрите его в реальный код.

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

Если вы не в состоянии планировать, вы планируете потерпеть неудачу. — Бенджамин Франклин

Тестируйте все!

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

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

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

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

Будьте настойчивы и создавайте то, во что вы лично инвестируете.

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

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

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

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

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

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

Иметь цель.

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

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

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

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

Научитесь задавать правильные вопросы и правильно пользоваться Google.

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

Это важный навык для разработчика, и он чрезвычайно важен при исследовании проблемы, вам нужно научиться задавать правильные вопросы, а при поиске решения чрезвычайно важно НИКОГДА не копировать и не вставлять то, что вы найдете. в свой код, не полностью его понимая.

Это может быть не только опасно, но и никак не поможет вам стать лучше.

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

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

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

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

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

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

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

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

Почему я предлагаю придерживаться одного языка до этого момента?

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

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

Ресурсы

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

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

"Переполнение стека"

Я не могу сказать этого достаточно, StackOverflow — лучший ресурс, с которым вы когда-либо сталкивались! Это веб-сайт, посвященный разработчикам, помогающим друг другу и решающим проблемы, с которыми они столкнулись.

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

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

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

Онлайн-курсы CS50

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

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

Лагерь свободного кода

Free Code Camp — еще один замечательный ресурс, который вы можете использовать для изучения многих тем, а также для поиска интересных, относительно простых проектов.

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

HackerRank, LeetCode и CodeWars

Хотя CS50 и Free Code Camp — замечательные ресурсы, предлагающие потрясающие курсы, они не просто предоставляют место для отработки ваших навыков и знаний в области решения проблем.

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

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

Заключение

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

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

Я надеюсь, что этот пост помог вам в чем-то.