Недавно я брал интервью у многих людей на позицию разработчика JavaScript и Node.js. К сожалению, мне пришлось отказаться от всех людей, у которых я брал интервью до сих пор. Честно говоря, это было похоже на общение с кем-то по-английски, который на самом деле не знает английского, но вполне уверен, что знает английский. (Я просто использовал «английский» в качестве примера, и я сам не являюсь носителем английского языка) Так что этот пост - в основном тирада + любые мысли, приходящие мне в голову, когда я думал об интервью.

Когда люди говорят, что работали с JavaScript или Node.js, многие из них не имеют в виду, что они знают язык или фреймворк. Они разработали приложения на популярных фреймворках благодаря очень хорошим примерам в документации. (Серьезно, в наши дни все проекты тратят много времени на улучшение своей документации. Например, в Node.js есть специальная рабочая группа по документации для улучшения качества). Но я чувствую, что им не удалось потратить время на их понимание. Например, ниже приведены ответы, которые я получил на вопрос что такое Node.js.

  • Язык программирования (мало кто этого не сказал)
  • Инструмент
  • Сервер вроде NGINX

Это заставило меня подумать, что многие люди даже не знают, с чем имеют дело. Я бы сказал, что когда мы начинаем изучать язык или фреймворк, мы должны потратить хотя бы некоторое время на чтение, понимание и написание кода, чтобы подтвердить наше понимание. Часть «Написание кода» также важна, потому что, когда мы пишем код, нам, очевидно, нужно построить / выполнить код. Мало кто может выбрать IDE, и немногие могут использовать инструменты командной строки. Но важно то, что если мы будем знакомы с инструментами и общими практиками, которые используются в процессах разработки, тестирования и сборки, это поможет нам в кратчайшие сроки принять участие в проекте.

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

function MyFunction() {
  console.log(a);
  var a = 10;
  console.log(a);
}
MyFunction();

Поскольку большинство из них начали свою карьеру программирования с C ++ или Java, я часто получаю ответ: Программа выдаст ошибку. На вопрос почему? Ответ был вы пытаетесь получить доступ к переменной до того, как она будет объявлена. На данный момент я действительно понятия не имею, следует ли мне продолжать интервью или нет. Я полагаю, что благодаря линтерам типа jslint многие люди никогда не писали такой код. Я не собираюсь говорить, должен ли язык позволять это или нет. Но если мы утверждаем, что работали над JavaScript, то, по крайней мере, ожидается, что мы знаем объем переменных. На данный момент добавление let и const в ECMAScript 2015 имело для меня большой смысл. Это было бы большим подспорьем для людей, переходящих с C ++ или Java.

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

Итак, я настоятельно рекомендую ознакомиться с основами языка или фреймворков, над которыми мы работаем. Проведение с ними времени должно стать частью нашей повседневной жизни. Что касается JavaScript, я уверен, что «JavaScript: хорошие части» Дугласа Крокфорда будет очень хорошей отправной точкой. Это даже не такая большая книга, как полные справочники на других языках.