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

Итак, вот некоторые вещи, которым я научился, будучи младшим разработчиком.

Table Of Contents
1. CS Fundamentals Matter
2. Problem Solver First, Programmer Second
3. Learn the Art of Debugging 
4. Always Be Learning 
5. Keep the Passion Alive
6. Communicate Effectively 
7. Don't Be Scared to Get Your Hands Dirty
8. Don't Judge Yourself Based on Others

Основы CS имеют значение

Проблема:

Перед моей первой работой я думал, что сделал это. Я знал, как писать клиентский и серверный код, как хранить и извлекать данные из базы данных и как развертывать приложения в Heroku. Когда я получил свою первую работу, это было все равно, что быть оленем в свете фар. Такие вещи, как VPN, облачные вычисления, чтение чужого кода, просмотр чужого кода, отладка SQL, где ORM создает запросы длиной 10 или более соединений😳, шаблоны проектирования, рефакторинг/построение поверх устаревшего кода, методы программирования, такие как (нетерпеливая загрузка, отложенная загрузка, рекурсия и т. д.), знание того, когда и почему мы должны использовать определенные структуры данных, и написание оптимальных алгоритмов (без вложенных циклов for) застали меня врасплох.

Решение:

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

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

Сначала решает проблемы, потом программист

Проблема:

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

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

Решение:

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

Изучите искусство отладки

Проблема:

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

Решение:

Отладка — это навык и искусство. При отладке надо иметь метод до безумия, иначе можно бесконечно тянуть решения. Поэтому, столкнувшись с проблемой, спросите себя, что должна делать конкретная программа, а что она делает на самом деле. Затем попытайтесь воспроизвести проблему, проведите мозговой штурм некоторых сценариев (обратите внимание на «s») того, в чем может заключаться проблема, сузьте сценарии с помощью процесса исключения, потратьте не более 20–25 минут на глубокую фокусировку при просмотре кода, а затем если у вас все еще есть проблемы, обратитесь к товарищу по команде.

Всегда учитесь

Проблема:

Раньше я думал, что после того, как я получу свою первую работу в качестве разработчика, рост просто упадет на мои плечи. Я чувствовал, что как только я получу работу, все эти годы борьбы с учебными пособиями, документацией, книгами, неопределенностью и всеми ночами закончатся, как только я войду в дверь, и, черт возьми, я ошибался. Вход в дверь только усиливает потребность в постоянном обучении. Мои первые пару месяцев на работе выявили еще больше пробелов в знаниях/навыках, чем я даже думал. Затем, в поисках новой работы, с появлением React, React Native, Redux, GraphQL и множества новых технологий, я понял, насколько сильно я отстал в этом.

Решение:

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

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

Сохраняйте страсть живой

Проблема:

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

Решение:

Выясните, почему.

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

Общайтесь эффективно

Проблема:

Я никогда не понимал, насколько КРИТИЧЕСКИ для разработчика важно донести свое сообщение. Всю свою жизнь я был интровертом, что, в свою очередь, повредило моим коммуникативным навыкам. Я говорил быстро, чтобы закончить разговор как можно быстрее из-за застенчивости, и я иногда заикался, пытаясь изобразить свои мысли, из-за того, что слова выходили быстрее, чем мысль, формирующаяся в моей голове.

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

Решение:

Немедленно освойте навыки общения.

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

Не бойтесь испачкать руки

Проблема:

Как я сказал в разделе «Всегда учиться», я понял, что как только я получил работу в качестве разработчика, основная часть обучения была сделана, я мог решить любую проблему, которая была поставлена ​​передо мной, со всеми знаниями, которые у меня были. накопленные годами. Затем наступила реальность: возможность развертывания производственной базы данных, выполнения последовательных обновлений, рефакторинга кода, написанного в течение многих лет разработчиками с большим опытом, чем у меня, пониманием того, как работают микросервисы, такие как SQS, Lambda, S3, SendGrid, и Понимание концепций, которые я слышал в офисе, таких как взаимоблокировки, транзакции, параллелизм, всплески процессора и т. Д., И я застыл, лол. Поэтому, когда кто-то просит меня решить проблему, что я действительно знаю, я могу, я просто передаю эстафету, просто подразумевая, что у меня нет опыта в этой проблеме.

Решение:

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

Не судите о себе по другим

Проблема:

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

Решение:

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

Спасибо, что нашли время прочитать эту статью. Если вам понравилось, поставьте лайк.❤️

Свяжитесь со мной:

Linkedin: https://www.linkedin.com/in/will-sheppard-81a184145/

Github: https://github.com/willshepp28

Твиттер:https://twitter.com/willshepp_dev