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

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

Сосредоточьтесь на процессе

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

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

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

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

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

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

Поэтому я подумал: «Какого черта, насколько сложным может быть программирование?» Я терял интерес к своей специальности и проводил много времени за игрой в Xbox. Я мог бы потратить часть своего свободного времени на разработку своей идеи мобильного приложения.

Иногда наивность помогает вам действовать, хотя обычно вы этого не делаете.

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

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

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

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

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

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

Со временем я исправил свое поведение и стал более серьезно относиться к обучению. Я начал увлекаться программированием и в конце концов начал карьеру разработчика программного обеспечения.

Забрать

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

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

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

Узнавать что-то новое - это как строить дом. Вы начинаете с фундамента и наращиваете. Если фундамент неисправен, все это рано или поздно рухнет.

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

Есть старая китайская пословица:

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

Дело не в том, как быстро вы можете что-то сделать, а в том, как медленно вы сможете сделать это правильно.

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

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

Stack Overflow - это круто (и опасно)

Когда я создавал свое потрясающее приложение, Stack Overflow стал моим лучшим другом.

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

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

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

Я сделал методику методом проб и ошибок новым видом искусства.

Этот процесс продолжался некоторое время, пока, в конце концов, я не сообразил и не осознал недостатки своего подхода.

Забрать

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

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

Stack Overflow показывает, как заставить что-то работать, но обычно не объясняет, почему это работает.

Понимание того, как важно. Необходимо исправить ошибки и запустить код.

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

Это как цитата ...

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

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

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

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

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

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

Найдите опытную помощь

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

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

Как вы читали выше, это постепенно приводило к катастрофе.

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

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

Что еще хуже, у меня возникла блестящая идея начать использовать массивную библиотеку C под названием FFMPEG. Моему приложению нужно было редактировать видео, поэтому я подумал, что было бы неплохо использовать надежные функции библиотеки.

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

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

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

Примерно в то же время, когда произошел фиаско с FFMPEG, я записался на курс объектно-ориентированного программирования. Честно говоря, я не знаю, как я попал туда. Позже я узнал, что я был единственным специалистом в классе, не относящимся к информатике. Я думаю, что в программе регистрации была ошибка.

Первым заданием было разработать программу для блэкджека. К тому моменту я учился программированию 5–6 месяцев и чувствовал себя уверенно в своих навыках.

Я выполнил задание и был доволен своей работой.

Это чувство быстро исчезло.

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

Нехорошо.

Забрать

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

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

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

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

Я могла найти помощь разными способами. Я мог попытаться найти в университете профессора / студента с опытом работы с Android или обратиться за помощью к местному сообществу. Я также мог бы попытаться найти интернет-сообщество Android.

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

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

Создайте свою среду

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

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

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

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

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

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

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

Забрать

Правильная рабочая среда часто упускается из виду в процессе обучения.

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

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

Вот несколько вещей, которые вы можете сделать:

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

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

Выйди в мир и познакомься с людьми

Моя первая работа в области программирования была случайной.

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

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

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

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

Я наконец сказал, к черту и вошел внутрь.

Я рада, что сделала.

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

Перед собеседованием я чувствовал себя уверенно. Во время интервью я был оленем в свете фар.

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

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

В конце концов я пошел на собеседование с кем-то еще в компании, и вскоре после этого они предложили мне стажировку.

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

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

Забрать

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

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

Разработчики-самоучки должны будут выйти в мир и сами построить свои сети.

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

Такие сайты, как Meetup.com, отлично подходят для поиска ежемесячных групп по программированию. Даже во время пандемии все еще существует множество виртуальных встреч, которые очень информативны и полезны.

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

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

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

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

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

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

Заключение

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

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

Главное - продолжать идти и не расстраиваться, когда дела идут не так, как нужно.

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

Надеюсь, моя история и уроки, которые я усвоил, помогут вам двигаться вперед.

Спасибо за чтение. Если вы хотите услышать о других выводах, которые я узнал по пути, подпишитесь на мою учетную запись Zero на Programmer в Twitter. Моя цель - помочь вам научиться программировать более эффективно.