Что я уяснил, будучи разработчиком-самоучкой? Часть 2
Перевод статьи Victor Cassone: Lessons learned from my journey as a self-taught developer
Предыдущие части: Часть 1
Stack Overflow — отличный сервис (и опасный)
Когда я работал над своим приложением, Stack Overflow стал моим лучшим другом. В любое время суток я мог задать интересующий меня вопрос и получить ответ.
Признаюсь, ответы на Stack Overflow можно рассматривать как своеобразное Евангелие для программиста. Я тратил сумасшедшее количество времени, просматривая сайт в попытках найти точный фрагмент кода, который исправил бы мою проблему. Как только ответ находился, я копировал и вставлял его прямо в свой исходный код, затем я старался заставить его работать. Я не хотел вникать в код, ведь за меня уже кто-то это сделал и просто использовал его.
Все это продолжалось достаточно длительное время, пока, в конце концов, я не осознал недостатки данного подхода.
Совет
ctrl+C и ctrl+V — это чуть ли не худший способ научиться кодингу.
Stack Overflow — это одновременно и благословение, и проклятие. Он реально помогает вам в решении возникающих проблем. Но в тоже время он может стать костылем, от которого вы всегда будете зависеть, если вовремя не прекратите.
Невозможно разобраться в чем-либо, если ответы уже у вас на руках. Сначала постарайтесь вникнуть в суть проблемы и попытайтесь самостоятельно ее решить, прежде чем идти гуглить и искать готовый код.
Ну а если вы все таки прибегнули к копированию чужого кода, потратьте немного времени хотя бы на то, чтобы понять его. В процессе обучения не бывает коротких путей.
Найдите квалифицированную помощь
Первое, что я сделал после того, как решил, что хочу научиться программированию — купил две книги по разработке на Android.
Вначале, я внимательно выполнял все упражнения в книгах и прорабатывал примеры проектов. Но мне это быстро наскучило и я решил, что самостоятельно справлюсь с обучением.
Вы уже знаете, что в конечном итоге это привело меня к полному провалу.
Я проводил много времени,будучи один, в кафе или дома. Я изолировал себя от остального мира. Я чувствовал, что не было никого, кто смог бы мне помочь, потому что никто из моих знакомых не имел опыта в разработке мобильных приложений.
Дни превращались в недели, а я все не мог сдвинуться с места.
В какой-то момент, у меня появилась блестящая идея загрузить набор библиотек с открытым исходным кодом под названием FFMPEG. По задумке, мое приложение должно было редактировать видео, поэтому я счел, что было бы неплохо использовать функциональные возможности этих библиотек. Это был не самый умный ход, учитывая, что в то время я едва-едва мог заставить работать само приложение.
Я потратил кучу времени на то, чтобы выяснить, как внедрить эти библиотеки в свое приложение. К сожалению, ничего не вышло и я забросил эту идею.
Но, к счастью, примерно в то же время я записался на занятия по объектно-ориентированному программированию и каким-то образом смог попасть на них. Представьте себе, я был единственным человеком в классе, который практически ничего не понимал. Я не имел ни малейшего понятия, как и почему меня допустили до этих занятий. Вероятно, это было какая-то ошибка.😉
Первым нашим заданием было написать программу на основе карточной игры — блэкджек. Все таки те 5–6 месяцев самообучения не прошли даром и кое-что мне пригодилось. Я справился с заданием и был крайне горд собой. Однако, мое чувство гордости тут же исчезло.
Вся моя программа была написана одним огромным методом. В то время как все остальные в классе смогли понять, что программа должна быть разделена на классы. Глупо вышло.
Совет
К счастью, работа на классных занятиях и наставничество моего преподавателя заставили меня одуматься, сделать шаг назад с идеей создания приложения на Android и подумать над своим дальнейшем развитием. Я стал по-настоящему ценить свое обучение и во мне вновь загорелось желание заняться созданием приложений.
Если бы в то время мне удалось поговорить с опытными разработчиками, они бы увидели, чем я занимаюсь, помогли бы мне расставить приоритеты и подбодрили бы меня. Они помогли бы мне во многом разобраться и направили бы мои старания в нужное русло (например, отговорили бы меня использовать библиотеки FFMPEG).
Как я уже говорил ранее, опытные разработчики станут для вас, подобно компасу. Они не приведут вас к назначенной вами цели, однако, они помогут выбрать правильное направление для вашего дальнейшего развития — будьте в этом уверены. Их помощь может стать для вас ключевым моментом для достижения успеха и избежания полного провала.
Оглядываясь назад, я понимаю, что на самом деле, найти помощь не составило бы для меня особого труда. Я мог бы попытаться найти профессора или студента из какого-нибудь университета, где занимались разработкой для Android. Кроме того, существует целая масса онлайн-сообществ, где разработчики делятся своими наработками для платформы Android.
Но вместо этого, я просто себя изолировал.
В данном случае изоляция — это своеобразная палка о двух концах. С одной стороны, изоляция позволила бы вам полностью сосредоточиться на достижении своих целей и задач по разработке, что несомненно является огромным плюсом. Но с другой стороны, вы как бы находитесь вне мира разработчиков, «голодаете» без слов поддержки и советов от опытных разработчиков, что несомненно, является огромным минусом.
Подумайте над тем, где бы вы смогли найти поддержку, в лице конкретного человека или целого сообщества. В дальнейшем, это поможет вам изрядно сэкономить время и избежать множества ошибок.
В третьей, заключительной части нашего цикла статей, мы поговорим о необходимости создания подходящего рабочего места и том, как будучи разработчиком — самоучкой, вы сможете получить желаемую должность разработчика.