Найти тему
Джон Харрис

10 знаков, что программирование это не твоё

Оглавление
Больше стикеров не делает вас лучше. - Фото автора Tim Gouw на Unsplash
Больше стикеров не делает вас лучше. - Фото автора Tim Gouw на Unsplash

Перевод статьи Джонатана Блукса.

Я часто вижу вопросы на Reddit или Quora в духе «Как узнать, преуспею ли я как программист?» (На самом деле этот пост раскрывает ответ, который я дал на Quora некоторое время назад). Когда кто-то рассматривает возможность карьерного роста или интересуется разработкой программного обеспечения и интересуется, что для этого нужно, неизбежно возникает вопрос программирования.

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

Как педагог, который преподает веб-разработку (полный стек), я обучал многих «начинающих программистов». И хорошая новость в том, что я редко находил ученика, который не мог бы учиться программировать. Я вижу программирование как базовый человеческий навык, такой же, как чтение, письмо или арифметика. Любой может научиться и делать это, это часть наших человеческих способностей, но этому нужно учиться.

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

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

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

1. Отсутствие любопытства

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

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

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

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

2. Недостаток автономности и находчивости

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

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

В мире разработки вся необходимая вам информация находится в одном волшебном месте. Эта огромная библиотека имеет один огромный дверной проем: Google :). Осознание того, что вы можете просто ввести в Google все, что вы хотите, и получить необходимую информацию, - это первое препятствие, которое нужно преодолеть, если вы хотите освоить навыки, необходимые для работы в технологии.

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

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

3. Отсутствие настойчивости перед лицом проблемы

Если вы легко сдаётесь перед лицом проблем, вы никогда не будете успешным программистом.

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

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

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

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

4. Нет ощущения успеха в преодолении проблемы

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

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

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

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

5. Нетерпение в обучении и понимании

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

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

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

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

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

6. Скука / усталость от размышлений

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

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

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

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

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

7. Неспособность думать самостоятельно

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

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

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

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

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

8. Негибкое, узкое и / или неорганизованное мышление

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

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

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

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

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

Самоотражение: вам нужно сделать шаг назад и посмотреть на более широкую картину того, как вы приближаетесь к вещам. Как вы можете сделать это лучше? Что ты можешь сделать, чтобы облегчить себе жизнь? Что вам не хватает, что может помочь вам?

9. Нужен «правильный» ответ вместо того, чтобы распознавать спектр «хороших» и «плохих» ответов

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

Начиная изучать навыки или программирование, студенты часто хотят знать, является ли то, что они сделали, «правильным». Ответ всегда «это зависит».

Информатика - это наука об оценке компромиссов. Учитывая различные обстоятельства, какой путь будет лучше? Все зависит от обстоятельств и целей. Когда вы видите программирование как тест с правильным или неправильным ответом, вы теряете из виду общую картину и отказываетесь от своего творчества.Любой ответ может быть «правильным», если вы можете оправдать его с учетом обстоятельств.

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

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

10. Вы не обращаете внимание на детали

Если вы затушевываете детали и упускаете из виду мелочи, вы никогда не станете по-настоящему успешным программистом.

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

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

Как говорится, дьявол кроется в деталях. И это определенно верно для программирования.

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

Бонус: быть деловым человеком

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

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

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

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

Вывод

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

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