Создатель Node.js Ryan Dahl впервые в Украине на конференции JS Fest. Программа уже на сайте
×Закрыть

Things I Don’t Know as of 2018: перевод статьи

Ссылка на оригинальную статью — Things I Don’t Know as of 2018

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

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

Вот почему я думаю это важно.

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

Более того, не важно сколько у вас опыта, вы до сих пор можете находить себя меняющим свою самооценку от способного до сомневающегося в своих силах("Синдром самозванца«) и наконец до переоцененного («Эффект Даннинга — Крюгера»). Это зависит от вашего окружения, работы, личности, коллег, психического состояния, времени суток, и так далее.

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

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

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

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

С этим отказом от ответственности, вот несколько вещей который я не знаю:

Unix команды и Bash. Я способен на ’ls’ и ’cd’ но я ищу остальные штуки. Я понял концепт пайпинга, но я использовал его в простых кейсах. Я не знаю как использовать ’xargs’ для использования сложных цепочек, или как составлять и перенаправлять разные исходящие потоки. Также я никогда не старался учить bash, поэтому я могу писать только простые (и часто забаганные) шелл скрипты.

Низкоуровневые языки. Я понимаю что ассемблер позволяет хранить всякие штуки в памяти и прыгать по коду и это все. Я писал пару строк на С и понимаю что такое указатели, но я не знаю как использовать ’malloc’ и другие мануальные техники для управления памятью. Никогда не юзал Rust.

Компьютерные сети. Я знаю, что компьютеры имеют IP адреса, и что DNS позволяет нам работать с разными именами хостов. Я знаю что существуют низкоуровневые протоколы, как TCP/IP Для обмена пакетами что(возможно?) обеспечивает целостность. И это все — я не уверен в деталях.

Контейнеры. Для меня темный лес, как использовать Docker или Kubernetes (Они же связанны друг с другом?). У меня есть предположение, что они позволяют мне разделить виртуальные машины предсказуемым путем. Звучит круто, но я не пробовал.

Бессерверные вычисления. Тоже звучит круто. Никогда не пробовал. У меня нет четкого представления того как эта модель изменяет программирование на бекенде(если она вообще это делает).

Микросервисы. Если я правильно понял, это просто значит: «Много API ендпоинтов общаются друг с другом». Я не знаю какие есть преимущества или недостатки этого подхода на практике, так как я не работал с ним.

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

Бекенд на NodeJS. Я понимаю как заранить NodeJS, использовал некоторые API как ’fs’ для сборки инструментов, и могу засетапить Express. Но я никогда не общался с NodeJS с базой данных и не в курсе, как написать бекенд на ней. Так же я не знаком с React фреймворками, как Next кроме «hello world».

Нативные платформы. Я пытался выучить Objective C в какой-то момент, но это не сработало. Swift я не учил. Так же с Java(Возможно, я бы мог совладать с ней, так как я работал с C#.)

Алгоритмы. Максимум что вы можете с меня выжать это сортировку пузырьком и возможно быструю сортировку в лучшие дни. Я вероятно могу выполнить простые задачи по обходу графа, если они связаны с конкретной практической задачей. Я понимаю O(n) нотацию, но моё понимание не глубже чем: «Не помещайте циклы в циклы».

Функциональные языки. Если вы не считаете JavaScript, я не владею ни одним традиционным функциональным языком. (Я практикую только C# и JavaScript — и я уже забыл большую часть C#). Я с усилием читаю вдохновленный LISP (как Closure), вдохновленный Haskell (как Elm), или вдохновленный ML (как OCaml) код.

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

Современный CSS. Я не знаю Flexbox или Grid. Флоаты моё все.

CSS Методологии. Я юзал БЕМ(имею в виду CSS часть, а не оригинальный БЕМ), но это все что я знаю. Я никогда не пробовал OOCSS и другие методологии.

SCSS / Sass. Не довелось их изучить.

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

HTTPS / SSL. Никогда не настраивал это. Не знаю, как это работает, кроме идеи публичных и приватных ключей.

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

Сокеты. Моё представление — что они позволяют общаться компьютерам друг с другом за рамками реквест/респонс модели, но это все что я знаю.

Стримы. Помимо Rx Observables, Я не работал плотно со стримами. Я использовал старые NodeJS стримы пару раз ,но всегда портачил с обработкой ошибок.

Electron. Никогда не пробовал.

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

Развертывание и Девопс. Я могу справиться с отправкой пары файлов через FTP или убить какой-нибудь процесс, но это предел моих девопс скиллов.

Графика. Будь то canvas, SVG, WebGL или низкоуровневая графика. Я не слишком продуктивен с ней. Я знаю общую идею, но мне нужно выучить основы.

Конечно этот список не исчерпывающий. Есть еще много штук, которые я не знаю.

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

Даже ваши любимые разработчики могут не знать много вещей, которые вы знаете.

Несмотря на ваш уровень знаний, ваша уверенность может сильно варьироваться.

Опытные разработчики имеют ценную экспертизу несмотря на пробелы в знаниях.

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

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

LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

В Украине работал бы барменом в каком то офисе, либо охранял гироскутеры на парковке...

Автора в своё время не взяли в мэйл.ру и потом он уехал в Лондон работать в Фейсбуке над реактом =)
Он вообще вылаживал у себя статью на русском — overreacted.io/...​s-i-dont-know-as-of-2018 Авторский перевод получше, все-же

Ну как бы чел реально прав. У нас посмотришь — на собесе хотят чтобы ты знал ФСЁ, особенное новое и никем не испробованное, а потом садят тебя педалить какое-либо старье, которое не имеет отношения к темам собеса)

На минутку, статья от Дэна Абрамова, создателя Redux, который сейчас работает в Facebook.

В фейсбуке работают неучи??!

Учитывая то, какое баганутое и тормознутое фейсбук гавно, то это вообще не удивляет

twitter.com/...​/1087910830967087104?s=21
Він ніби сам перекладає свої статті.

После моего пулл реквеста с переводом, Ден решил перевести свою статью сам :)

Ок. А в чем проблема? =) Похоже на ответ на список требований из резюме. В списке еще не хватает пунктов того, что автор не сможет выучить за адекватное время при всем желании. Вот я не смогу научиться танцевать сальсу, ведь в этом мой опыт программиста никак не поможет.

Думал статья о том как пользоваться гуглом. Но напрактике чел ничерта не знает. В чем соль ?

Я знаю каратэ,самбо,айкидо,дзюдо,ушу и много других страшных слов ©

Знаю ложку, вилку, тарілку, кружку, келих, сільницю, хлібницю, сковородку, кастрюлю. І взагалі — я першокласний повар.

Ого, з перших абзаців стільки мудрості.

А далі якась фігня. Я не знаю це, те, забув, не розумію. То хто тобі забороняє вивчити, якщо потрібно в роботі чи розвитку, або забити допоки не виникне потреба? Якісь психологічні трабли у людини.

Він UIщик? Позор! Піду помию мої очі.

Нефиг соваться в айти без досконального знания дискретки, теорвера, количества волос на яйцах Страуструпа, всех стандартов cpp, начиная с 98, и вообще я б автора статьи и на джуна б не взял!

всех стандартов cpp, начиная с 98,

Всех стандартов СССР

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

Пока писал статью, мог бы выучить часть из этого списка при желании %)

Мало выучить (зазубрить?), нужно ещё через руки пропустить. Желательно в реальных (не helloworld-like) задачах. И в таких моментах я по многим пунктам согласен с автором. Конечно, теоретико-практических пробелов у меня несколько поменьше, но, например, с новомодными кубернетесами и докерами ещё не сталкивался, хотя эти баззворды маячат уже в каждой второй вакансии. Аналогично с юникс командами, мне, как виндовознику со времён msdos’а, сталкиваться не приходилось. По ходу, мне тоже «нефиг соваться в айти ...» Ж)

но, например, с новомодными кубернетесами и докерами ещё не сталкивался, хотя эти баззворды маячат уже в каждой второй вакансии

Тут я по аналогії з анекдотом: тичуть? А ви теж тичте)) Вакансії як почитати то все дуже страшно.

Таке шось.
Автор юайщик, описує, що не знає низькорівневих мов і т.д. Варто було продовжити і казати, що ти не знаєш як працює процесор, не знаєш як паяти, не знаєш як будують системи на кристалі, не знаєш матеріалознавства, не знаєш фізики, не знаєш квантової механіки і т.д. ЦЕ ОЧЕВИДНО, що ти цього не знаєш, було б дивніше, аби знав.
Стаття мала б сенс, аби юайщик описував те, що він не шарить якісь common practice і популярні фреймворки в своїй вузькій сфері і тим не менше, справляється з роботою, бо так, повторюся, таке шось.

ну его рядовым юайщиком не назовешь

Изначально он дотнетчик

вы до сих пор можете находить себя меняющим свою самооценку

Гуглтранслейт, ты ли это?)

I has does it after before I did I think may be.

Если вы не считаете JavaScript
HTTPS / SSL. Никогда не настраивал это.
как странная вещь для обсуждений.

У меня скорее сложилось впечатление, что автор неплохо знает английский, но он не писатель, он читатель.

Английский у автора неплохой, и самооценка адекватная. На джуна сойдёт.

Подписаться на комментарии