Рубріки: МнениеОпыт

Хотите стать разработчиком? 10 признаков того, что вам не стоит идти в профессию ни при каких условиях

Оленка Пилипчак

Джонатан Блюкс — Software Engineer и преподаватель веб-разработки. На Reddit или Quora он часто видел вопросы вроде «Как мне узнать, получится ли из меня крутой программист?». Когда человек задумывается над сменой профессии или интересуется разработкой софта и не знает, что для этого нужно, рано или поздно такой вопрос всплывет.

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

Сколько наклеек ни налепи – лучше не станешь / Фото: Tim Gouw / Unsplash

Переведено бюро переводов «Профпереклад».

Перевод от

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

Поскольку я преподаю Full-Stack Web Development, в свое время мне доводилось учить многих «абсолютных новичков».

Хорошие новости: мне редко попадались ученики, которые не могли научиться программированию.

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

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

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

Отсутствие любознательности

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

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

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

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

Отсутствие автономности и находчивости

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

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

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

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

Самый быстрый и надежный способ развить нужные девелоперские навыки — просто читать документацию. Там есть все.

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

Отсутствие настойчивости в решении проблемы

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

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

Такое количество проблем может обескураживать. Если вам кажется, что все должно «просто работать», вам не хватит сил на эту работу. Баги будут сыпаться как из ведра и постепенно подрывать вашу решимость. Но ведь это и есть ваша работа — определять, почему что-то не работает.

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

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

Отсутствие радости при преодолении трудностей

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

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

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

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

Нетерпение в обучении

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

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

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

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

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

Ощущение скуки или усталости от мыслей

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

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

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

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

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

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

Неспособность к самостоятельному мышлению

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

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

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

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

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

Узкое, ригидное и хаотичное мышление

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

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

Другая крайность — неорганизованность мышления.

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

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

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

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

Желание получить «правильный» ответ, когда есть «хорошие» и «плохие» ответы

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

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

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

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

Любой ответ может стать «правильным», если вы можете обосновать его в конкретных обстоятельствах.

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

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

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

Неумение обращать внимание на детали

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

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

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

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

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

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

Бонус. Деловое мышление

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

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

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

Да, с программированием у них не сложилось, но они мастерски умели продавать свои программы, хотя сами их не делали!

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

Вывод

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

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

Автор: Джонатан Блюкс

Останні статті

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023