Хороший инженер знает свои инструменты

в 11:29, , рубрики: javascript, Программирование

Раньше, когда я думал, что у меня дар инженера, я провалил собеседование из-за одного глупого вопроса. Один из тех, что «не имеют никакого отношения к работе». Вот он: «Что бы вы изменили в JavaScript?»

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

Хороший инженер знает свои инструменты - 1

Мнения раскрывают опыт

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

Хороший инженер знает свои инструменты - 2

В то время я работал фрилансером: запрыгивал в проект, решал одну или две сложные проблемы и уходил. Я не сталкивался с реальными инженерными проблемами –programming over time – и не обнаруживаете самых острых сторон JavaScript. Его проблемы для совместной работы, неинтуитивные правила определения области, ограниченная стандартная библиотека и все недостающие функции, которые мы любим в других языках.

После ES6 мозг взорвался. Все эти удивительные детали, о которых я никогда не подозревал, отсутствовали! 🤯

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

Но я должен был заработать эти знания в бою.

Аналогия со спортом

Вы никогда не услышите от спортсмена: «Пфф, они должны просто знать, насколько я хорош, интервью, тесты - это глупо!». Конкуренция — это то, с чем они живут постоянно.

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

В книге Open: An Autobiography (отличная книга) Андре Агасси рассказывает о разнице между игрой на грунте, траве и жестком корте.

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

Но это ошибка. Агасси говорит, что материал корта меняет ваши движения, ваши игра меняется, вплоть до стратегии и новой техники. Все иначе.

Черт возьми, Агасси такой специалист по теннису, что его автобиография начинается с анекдота о ракетках. Они упакованы в неправильном порядке. Это сбивает его с толку. И он тоже не может привыкнуть к современному виду. Они слишком тяжелые, или слишком жесткие, или струны не те... 

Хотя для меня все ракетки одинаковы.

Начните со шнурков

Вы можете подумать, что все это не имеет значения.

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

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

Прочный фундамент — это основа

Инструменты — это не просто «инструменты». Каждая концепция — это инструмент.

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

То же самое в программировании.

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

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

Поэтому тогда я и не понял, насколько важен вопрос «Что плохого в Х?»

Автор:
GermanizDubai

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js