советы от (преимущественно) инженера-программиста-самоучки

1656557060 sovety ot preimushhestvenno inzhenera programmista samouchki

Содержание статьи

автор Али Шпиттель

xv-ON8eNLsMTu99jneXEUH1PXV3KtNyzK01Q

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

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

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

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

Вот мои советы для начала.

Мои советы для новичков

1. Имейте свою причину и помните ее

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

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

2. Постройте крепкую основу

Возможно, это менее распространенный совет, но я думаю, что он действительно полезен. Прежде чем начать писать код, если вы давно не рассматривали математику, я бы еще раз просмотрел концепции Алгебры 1. Программирование построено на математике Алгебры 1, как и функции и переменные. Понимание этих концепций вне программирования будет чрезвычайно ценным в будущем. Я рекомендую курс алгебры 1 от Khan Academy!

let x = 1; // conceptually the same as algebraic variables!
function add (x, y) { // the same as algebraic functions!  return x + y}

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

Я бы предложил найти встречу в вашем районе как лучшее решение здесь. Даже небольшие города, как правило, имеют несколько несколько поблизости. Если такого нет, я бы предложил dev.to и сообщество CodeNewbie как две отличные альтернативы. CodeNewbie имеет еженедельный чат в Twitter, группу Slack и подкасты, которые можно слушать. Dev.to имеет множество сообщений в блоге и тег #discuss, где вы можете публиковать свои вопросы.

4. Разбейте проблемы на меньшие

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

5. Псевдокод

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

// if the user has more than ten points//     display "winner" on the page// else//     keep playing

6. Примите цикл обучения

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

7. Начните с бесплатных ресурсов

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

8. Найдите свою нишу

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

9. Умейте хорошо распознавать образы

Распознавание шаблонов в коде является одним из важнейших навыков, которые вы можете иметь. Когда люди говорят о написании «СУХОГО» кода (т.е. «Не повторяйся»), они говорят об уменьшении шаблонов в вашем коде. Я рекомендую игру Set для распознавания образов – вы даже можете играть онлайн каждый день на веб-сайте New York Times!

// not DRY codelet reversedString = string.split("").reverse().join("")let reversedString2 = string2.split("").reverse().join("")
// cleaner code
const reverse = string => string.split("").reverse().join("")let reversedString = reverse(string)let reversedString2 = reverse(string2)

10. Сделайте полезные привычки рано

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

// Not great
function avg (a) {  let s = a.reduce((x, y) => x + y)  return s / a.length}
// Much better!
function sumArray(array) {  return array.reduce((number, currentSum) => number + currentSum)}function averageArray(array) {  return sumArray(array) / array.length}

11. Определите свой стиль обучения

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

12. Бороться, но не очень

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

13. Успокойтесь с неудачами

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

14. Любите ваши сообщения об ошибках

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

vKkyrwV1Wlb-BZGX-6ehvK-Ur2qBEqZ8mkzD
Сообщение об ошибке Python

15. Некоторые языки программирования легче других

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

16. Вам не нужно знать все

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

17. Сосредоточьтесь на глубине, а не на ширине

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

18. Сначала сосредоточьтесь на основах

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

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

19. Развивайтесь в решении проблем

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

Я иногда вижу с новыми разработчиками то, что они подходят к программированию как исследовательской проблеме, а не к проекту решения проблем. Если они погуглит что-нибудь достаточно хорошо, тогда у них будет решение. Да, Google и Stack Overflow очень полезны, но иногда полагайтесь на себя. Попробуйте что-то несколькими разными способами, прежде чем исследовать это. Или исследуйте небольшие части проблемы вместо самой проблемы, то есть «превратите строку в массив JavaScript» вместо «обратной строки JavaScript».

20. Относитесь хорошо исследовать

Одна из важнейших вещей, которой нужно научиться, — найти ответы на свои вопросы или изучить новые возможности своего языка или библиотеки. Использование Google важно, как и присоединение к сообществам и подписка на ресурсы. Обычно я использую шаблон Google — это «проблемный язык/фреймворк/библиотека» в минимальном количестве слов и без наполнителя. Итак, «массив сортировки JavaScript», «spin element CSS» или «создать маршрутизатор Vue».

21. Создавайте проекты, которые вам нравятся

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

22. Сравнивайте себя только с собой

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

23. Выполните кучу заданий с кодом

Выполнение быстрых задач с кодом может помочь укрепить основы. Они отлично подходят для решения проблем и практики во время собеседования. Я каждый день публикую одну в Twitter с хештегом #CodingPuzzle, если вы хотите, чтобы кто-то другой решил их!

"""Find the element in an array that only occurs oncefrom  from collections import Counter
def lonely_integer(a):    a_counter = Counter(a)    for l, count in a_counter.items():        if count == 1:            return l

24. Празднуйте свои победы

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

25. Программирование – это потрясающе

Программирование – действительно круто, потому что вы можете создавать вещи. Я всегда возвращаюсь к этой цитате Санди Меца:

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

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

Санди Мец

Поддерживать связь!

Если вам понравилась статья, откуда она взялась! Еженедельно я посылаю информационный бюллетень с моими любимыми ссылками и тем, что я написал на этой неделе. Вы также можете подписаться на меня в Твиттере, чтобы видеть мои публикации по мере их появления!

Первоначально опубликовано на zen-of-programming.com.

Добавить комментарий

Ваш адрес email не будет опубликован.