25 советов для разработчиков-новичков от инженера-самоучки (почти)

0
3434
views

Перевод статьи Али Спиттель «25 Tips for New Developers: Advice from a (Mostly) Self-Taught Software Engineer».

Советы программистам новичкам

Чаще всего читатели моего блога спрашивают: «Что бы вы посоветовали разработчикам-новичкам?» Итак, пришла пора записать мои мысли.

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

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

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

Мои советы начинающим программистам

1. У вас должен быть побудительный мотив – помните о нем

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

2. Постройте солидный фундамент

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

3. Найдите сообщество

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

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

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

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

5. Псевдокод

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

Учитесь учиться

6. Смиритесь с тем, что обучение – циклический процесс

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

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

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

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

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

9. Научитесь распознавать шаблоны

Распознавание шаблонов это один из самых важных навыков, которые вы можете приобрести. Когда люди говорят о написании «сухого» кода («DRY» — Don’t Repeat Yourself), они имеют в виду уменьшение повторов в вашем коде. Чтобы научиться распознавать шаблоны, я советую попробовать игру Set – играть можно ежедневно онлайн на сайте New York Times!

10. Как можно раньше приобретайте хорошие привычки

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

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

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

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

Обращайтесь за помощью

12. Старайтесь, но не переусердствуйте

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

13. Свыкнитесь с провалами

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

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

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

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

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

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

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

17. Двигайтесь вглубь, а не вширь

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

Фокусируйтесь на основах

18. Для начала сфокусируйтесь на основах

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

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

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

19. Научитесь решать проблемы

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

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

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

20. Развивайте навыки поиска

Нужно научиться находить хорошие ответы на свои вопросы. Уметь пользоваться Google очень важно, также как и участие в сообществах, и подписка на ресурсы. Шаблон для поиска, который я обычно использую, это «проблема в язык/фреймворк/библиотека». Запрос для поиска должен быть как можно более кратким, без «воды». Например, «сортировка массивов JavaScript» или «spin элемент CSS», или «создать router Vue».

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

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

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

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

23. Решайте побольше задач

Решение небольших задачек может существенно упрочить ваше знание основ. Это прекрасно для приобретения навыка решения проблем и для практики перед будущими собеседованиями. Если хотите решать задачи с кем-то вместе, я каждый день делаю пост с задачей в Twitter (хештег #CodingPuzzle).

24. Отмечайте свои победы

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

25. Программирование прекрасно

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

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

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

Сэнди Мец.



ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here