Вы сказали, что больше не можете учиться, видите, что сказал автор Redux?

JavaScript React.js
Вы сказали, что больше не можете учиться, видите, что сказал автор Redux?

Оригинальный автор: Дэн Абрамов

Переводчик: Джоти, UC International R&D

Написано спереди: Добро пожаловать в официальный счет «UC International Technology», мы предоставим вам высококачественные технические статьи, связанные с клиентом, сервером, алгоритмом, тестированием, данными, интернет-концом и т. Д., Не ограничиваясь оригинальностью и перевод.

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

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

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

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


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

Более того, какими бы богатыми вы ни были, ваши эмоции могут быть хорошими, уверенными («СИНДРОМ САМПОСТОРА») и чрезмерно самоуверенными («Эффект Даннинга-Крюгера»). Это зависит от окружения, работы, личности, товарищей по команде, психического состояния и тому подобного.

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

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

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

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


Сначала хороший отказ от ответственности, вот некоторые вещи, которые я не знаю:

  • Команды Unix и Bash. Я помню ls и cd, но мне нужно искать другие команды, чтобы использовать их. Я понимаю концепцию канала, но использую его только в простых сценариях. Я не знаю, как создавать сложные цепочки с помощью xargs, как комбинировать и перенаправлять разные потоки вывода. Я также никогда не изучал Bash систематически, поэтому я могу писать только очень простые (и часто неправильные) сценарии оболочки.
  • Язык низкого уровня. Я знаю, что Assembly может хранить содержимое в памяти и переходить к выполнению кода, но я знаю только это. Я написал несколько строк c, что такое указатель, но я не знаю, как использовать Malloc или другую технологию ручного управления памятью. Я никогда не играл в Раст.
  • Сетевой стек. Я знаю, что у компьютеров есть IP-адреса, и DNS — это то, как мы разрешаем имена хостов. Я знаю, что существуют протоколы низкого уровня, такие как TCP/IP, для обмена пакетами (вероятно?) для обеспечения целостности. Это все, что я знаю, и я не уверен в деталях.
  • контейнер. Я не знаю, как использовать Docker или Kubernetes. (Они связаны?) Я имею о них смутное представление, зная, что они позволяют мне запускать одну виртуальную машину предсказуемым образом. Звучит круто, но я еще не пробовал.
  • Без сервера. Тоже круто, но не пробовал. Я не совсем понимаю, как эта модель меняет бэкэнд-программирование (может быть, и нет).
  • Микросервисы. Если я правильно понимаю, это просто означает «многие конечные точки API, взаимодействующие друг с другом». Я не знаю, каковы фактические плюсы и минусы этого подхода, так как я его не использовал.
  • Питон. Мне это не очень нравится — я много лет работаю с Python и никогда не удосужился его изучить. Его поведение при импорте и многое другое для меня полный черный ящик.
  • Серверная часть узла. Я знаю, как запускать Node, создавать инструменты с использованием таких API, как fs, и могу использовать Express. Но я никогда не использовал Node для подключения к базе данных и не знаю, как с его помощью написать бэкенд. Я также не знаком с фреймворками React, такими как Next, которые реализуют «hello world».
  • Родная платформа. Я безуспешно пытался изучить Objective C. Я не изучал ни Swift, ни Java. (Хотя я мог выучить Java, потому что знаю C#, я не изучал Java.)
  • алгоритм. Максимум, что я знаю, это пузырьковая сортировка и быстрая сортировка. Я могу сделать простой обход графа, если они привязаны к конкретной практической задаче. Я понимаю нотацию O (n), но мое понимание не намного глубже, чем «не вкладывать циклы в циклы».
  • функциональный язык. Я не использую свободно какой-либо традиционный функциональный язык, если только не включен JavaScript. (Я разбираюсь только в C# и JavaScript — чуть не забыл о C#). Чтение кода в стиле LISP (например, Clojure), в стиле Haskell (например, Elm) или в стиле ML (например, OCaml) также вызывает у меня затруднения.
  • функциональный термин. В моем случае Map и Reduce являются наиболее важными. Я не знаю о моноидах, функторах и т.д. Я знаю, что такое монада (но может это моя галлюцинация 🤣).
  • Современный CSS. Я не знаю ни Flexbox, ни Grid. Поплавки - это мое.
  • Методология CSS. Я использовал БЭМ (имеется в виду часть CSS, а не сырой БЭМ), но это все, что я знаю. Я не пробовал OOCSS или что-то еще.
  • СКСС/САСС. Я никогда не учился.
  • КОРС. Я так боюсь этих ошибок! Я знаю, что мне нужно установить некоторые заголовки, чтобы исправить их, но в прошлом я тратил на это часы.
  • HTTPS/SSL. никогда не устанавливал. Не уверен, как это работает с закрытыми и открытыми ключами.
  • ГрафQL. Я бы использовал запрос, но я действительно не знаю, как использовать такие выражения, как node и edge, когда использовать фрагмент и как работает нумерация страниц.
  • Розетки. Моя мысленная модель заключается в том, что они реализуют взаимосвязь компьютеров вне модели запрос/ответ, но это все, что я знаю.
  • Потоки. Я не обращал пристального внимания на потоки, отличные от Rx Observables. Я использовал старые потоки узлов один или два раза, но это всегда портит обработку ошибок.
  • Электрон. непроверенный.
  • Машинопись. Я понимаю концепцию типов и могу читать комментарии, но никогда не пишу об этом. Я пробовал несколько раз и столкнулся с трудностями.
  • Разворачивайте и развивайтесь. Я могу отправлять файлы по FTP или убивать процессы, но мои навыки devops ограничиваются этим.
  • графика. Будь то холст, SVG, WebGL или низкоуровневая графика, я не использовал их продуктивно. Я понимаю общую идею, но нужно изучить примитивы.

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


Обсуждение может показаться странным, и даже эта статья написана неправильно. Я хвастаюсь своим невежеством? Мое намерение:

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

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

Это не обесценивает мои знания и опыт. Я могу многое. Например, выучить его, когда вам нужно.

Английский оригинал

Хорошая рекомендация статьи:

Why review code?


«UC International Technology» стремится делиться с вами высококачественными техническими статьями.

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