За последние несколько лет, в процессе работы и общения со множеством разработчиков, я заметила часто повторяющийся паттерн. Он меня сильно беспокоил и я продолжала о нём думать и говорить, пытаться найти понимание или даже оправдание ему.
Почему ты выбрал такой подход к решению?
- Не знаю. Прочитал в какой-то статье.
- Не знаю. Скопипастил его из X.
- Не знаю. Такой же подход я использовал в предыдущем проекте.
- Не знаю. Кто-то мне посоветовал.
Этот паттерн можно назвать "потреблением вместо творчества". Потреблением без сомнений и вопросов. Потреблением, потому что можно спрятаться за чьим-то авторитетом.
Я видела разработчиков, берущих решение других людей как должное. Без малейших раздумий о выбранном подходе, не заморачиваясь анализом. Да, конечно, когда Дэн Абрамов говорит мне, как правильно использовать React, или в документации написано, что это единственный способ применения API, то с этим нужно согласиться. Тем не менее, когда вы используете какой-то технический контент без хотя бы доли скептицизма, то вы всё равно сможете продвинуться в своей карьере, но есть вероятность, что это вам помешает.
Bullshit повсюду
В начале своей карьеры я бы ни за что не опубликовала ничего технического в Интернете. Я считала, что если кто-то достаточно смел, чтобы опубликовать пост в блоге или поучаствовать в обсуждении технологий, то он всегда знает, что делает. Как же я ошибалась!
В какой-то момент я осознала, что подавляющее большинство технического контента в Интернете — это bullshit (мой пост тоже может быть bullshit). В туториалах показывают вредные паттерны. В статьях полно концептуальных ошибок. Да и люди не идеальны! Сениор-разработчики — это не всегда хорошие разработчики. Решения технических руководителей могут быть далеки от идеала. Хорошо продающаяся и правильно работающая архитектура приложения может быть совершенно поломанной. Я встречала людей на должности сениоров, которые нифига не соображают в программировании! Но тем не менее, они пишут о нём в Интернете! А потом приходит кто-то и говорит: я использовал предложенное этим человеком решение, потому что он сениор в компании X. Разумеется, в этом есть определённая логика. Однако, апелляция к авторитету глубоко ошибочна.
«Одна из величайших заповедей науки — »не доверяй апелляции к авторитету"… Слишком многие такие утверждения оказывались ужасно ошибочными. Авторитеты должны доказывать свои доводы как и все остальные" — Карл Саган
Чем раньше вы поймёте, что bullshit повсюду, тем лучше. Все мы стараемся изо всех сил, но все мы люди, совершающие ошибки, и никакие годы опыта, количество постов в блогах или уровень зарплаты не определяют знания человека. В конце концов, все мы можем публиковать в интернете что угодно.
Почему так происходит?
Мы ленивы. В большинстве своём мы не глупы, но ленивы. Если кто-то даёт нам решение, и оно работает, то зачем задумываться? Почему бы просто не скопипастить его и не выпустить в продакшен?
Нам не хватает времени. Придумывание логичных аргументов может стоить кому-то пары часов на чтение исходного кода, написания кучи кода для доказательства своей точки зрения или траты значительного объёма времени на исследования! Но у всех нас есть дедлайны.
Это комфортно. Для логических рассуждений часто приходится выйти из зоны комфорта, потому что вам нужно получить новые знания, напряжённей размышлять для понимания каких-то концепций, или выполнять дополнительную работу. Нахождение же в зоне комфорта мы обычно (подсознательно) приемлем.
Мы не верим в себя. Люди, особенно в начале своей карьеры, склонны думать, что их решения никогда не будут достаточно хороши. Поэтому они полагаются на авторитеты и не подвергают их сомнению.
Как перестать быть потребителем технологий?
Осознайте, что в мире есть множество ложных представлений. Люди и их решения не безупречны.
Адаптируйте решения под свою конкретную ситуацию. Не существует единого решения, подходящего всем. Сравнивайте разные подходы, анализируйте их. Туториалы и статьи демонстрируют идею, но в них может и не быть готового к продакшену кода. Всегда анализируйте его, прежде чем использовать.
Верьте в себя. Ваши решения ничуть не хуже тех, которые есть в Интернете.
Продолжайте учиться, будьте любознательны. Быть разработчиком — значит постоянно учиться. Достигните понимания используемой вами библиотеки или фреймворка, так вы сможете применять их оптимальным образом. Иногда люди используют библиотеки без глубокого их понимания, это приводит к неправильному применению базовых концепций и написанию усложнённого или менее производительного кода.
Не потребляйте. Творите. Задавайте вопросы. Будьте любопытными.