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

Я научился программировать, и это изменило мою жизнь. За 2 года и 19 дней я перешел от изучения первой строчки JavaScript к «6 цифрам +». Теперь я безумно хочу помогать другим делать то же самое. Мне нравится видеть, как загорается лампочка, когда кто-то, наконец, "понимает" и сходит с ума по кодированию.

Итак, без лишних слов, то, что я всегда говорю новым разработчикам:

  1. Сообразительность меня не впечатляет. Напишите код для людей.

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

«Любой дурак может написать код, понятный компьютеру. Хорошие программисты пишут код, понятный людям ».

Эй, очень быстро, одним взглядом (и серьезно, просто взгляните на это), расскажите мне, что делает этот код:

for(i=0;i<100;){document.write(((++i%3?'':'Honky')+(i%5?'':'Tonk')||i)+"<br>")}

ОК, продолжай двигаться вперед. Теперь взгляните на следующий фрагмент кода и расскажите мне, что он делает:

function fizzBuzz(){  
  let output;  
  for(let i=1;i<=100;i++){    
    output = '';  
   
    if(i%3 === 0) {
      output+='Fizz';
    }
    if(i%5 === 0) {
      output+='Buzz';
    }
    if(output === '') {
      output+=i;
    }
    print(output);
  }
}

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

Они оба решают «FizzBuzz», хотя первый решает ее со словами «HonkyTonk».

Это небольшая разница для компьютера, но значительная разница для людей, читающих код.

2. Длинные имена функций хороши - комментарии плохи.

Послушайте меня…

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

Функция с именем parseText может делать любое количество вещей, в любой момент может быть добавлена ​​или удалена функциональность без изменения имени, и на самом деле она не добавляет ничего ценного в кодовую базу.

// The comments for parseText() might not get updated when
// the code changes.  Then, you've got a function that doesn't
// tell you what it does, and comments that are rotten and 
// not only don't tell you what the code does but could mislead
// a developer who comes to solve a problem later!

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

3. Не тратьте время на поиск в Google более 1 часа.

Опять выслушайте меня…

А теперь не зацикливайтесь на временном интервале «1 час». Дело в том, что если вы не можете быстро найти ответ с помощью поиска Google и не можете решить его самостоятельно, скорее всего, лучше всего потратите свое время на изучение технологий, которые вы используете.

(Почти) Любая проблема программирования тривиальна, если вы разбираетесь в технологиях, которые используете.

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

Если вы часами гуглили, пробовали разные вещи, бились головой о стену, прекратите. Узнайте больше и вернитесь к этому как лучший разработчик. Более знающий разработчик ОПРЕДЕЛЕННО может решить эту проблему.

Это подводит нас к следующему пункту.

4. Прочтите Документы!

Это буквально инструкции о том, как использовать выбранную вами технологию для решения своей проблемы. Конечно, некоторая документация на самом деле хуже, чем ее отсутствие, и очень немногие технологии имеют ДЕЙСТВИТЕЛЬНО хорошую документацию.

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

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

5. Прочитать код.

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

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

Я нашел несколько хороших вариантов

Клиент Hacker News на основе React
Sails.js - среда MVC Framework для Node.js в реальном времени
Keystone - платформа cms и веб-приложений node.js
Ghost - платформа для профессиональных издателей
Moment.js - Анализируйте, проверяйте, изменяйте и отображайте даты в javascript.

Я сделал это с помощью vanilla javascript, React, Node, Python и других. Я просто начинаю с точки входа - думаю app.js или index.js и следую за ходом оттуда. Когда вы сталкиваетесь с чем-то, чего не понимаете, поищите это, прочтите документацию, погуглите, спросите свой местный технический канал в Slack.

Очень важно знакомство с хорошим кодом.

6. 5–10 часов в неделю - это волшебно

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

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

У меня есть репозиторий на GitHub, где я храню свои текущие образовательные ресурсы под названием «Постоянная бдительность». Это я с рыжей бородой викингов.



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

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