Сокращенный словарь программиста

Mar 12 2023
Страшные термины, разоблаченные за то, что они есть
Предисловие Эксперты отрасли здесь, на Medium и в других местах, любят использовать причудливо звучащие — я имею в виду технические — термины, чтобы преувеличить важность своих статей и заставить вас думать, что то, что они говорят, более верно. Если вы будете следовать определениям этих терминов из учебников, вы, вероятно, купитесь на неправильную идею и проведете большую часть своей карьеры, работая усерднее, а не умнее.
Фото Писит Хенг на Unsplash

Предисловие

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

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

Определения

решение — когда я запускаю его на своем компьютере, он в основном не ломается

тестирование — когда компьютер запускает его на моем компьютере, он в основном не ломается

TDD (Tear-Driven Development или Test-Driven Development) — когда компьютер запускает его на моем компьютере, он ломается, поэтому я знаю, что еще не решил решение.

BDD (разработка, основанная на поведении) — мне не нравилось то, что другие называли TDD, поэтому я придумал название получше.

test-first — мне не нравилось то, что другие называли TDD, поэтому я придумал для них лучшее название

SOLID (снобистский объектно-ориентированный лит и разъяренный разработчик) — я настолько умнее тебя, что ты даже не настоящий разработчик

статическая типизация — я записываю, что это такое, чтобы мне не приходилось запоминать

инкапсуляция — я склеил две вещи вместе, чтобы они были как одна вещь и их нельзя было разобрать

современный - Большинство людей все еще используют его, но не мой дедушка

производительность — когда я запускаю его на своей машине, он не кажется медленным

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

ресурсоемкий — медленный и/или не хватает памяти

планирование — мы садимся и назначаем дату, чтобы вернуться к работе

оценка — я оцениваю объем работы и делаю дикие предположения

шаблон проектирования - это работало для меня раньше

архитектура — это работало для меня до XXL

алгоритм — я заставил его работать эффективнее

структура данных — я упростил использование данных

соглашение об именах — я называю вещи определенным образом, и все остальные тоже должны

руководство по стилю — я думаю, это выглядит красиво, поэтому все должны кодировать одинаково

стандарт кодирования — я кодирую определенным образом, и все остальные должны делать это таким же образом

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

лучшая практика — я так делаю, и я думаю, что каждый должен

idempotent — я могу вызывать его несколько раз, и он не сломался… пока

testable — я могу написать для него тесты

модульный — я разделяю это на несколько файлов и добавляю импорт и экспорт

наследование — я разделил эту штуку на более мелкие части, чтобы собрать их вместе с помощью суперклея

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

многоразовый — я скопировал/вставил это куда-то, и оно все еще работало, поэтому я дал ему имя

абстракция — я скопировал/вставил это куда-то, и оно все еще работало, поэтому я дал ему причудливое имя и добавил несколько ручек, чтобы оно выглядело круто.

framework — я скопировал/вставил это куда-то, и оно все еще работало, поэтому я сделал для него пакет, добавил ручки и кнопки, написал документацию и выступил с докладом на модном мероприятии.

читабельно — я знаком с тем, как это выглядит, поэтому все должны писать так

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

ремонтопригодный — он работает до тех пор, пока его никто не трогает, так что не трогайте его

простой — помещается в одну строку

легко — это способ работы, который, по словам суперзвездного разработчика Джо, был легким, так что спросите его

старший - я еще не на пенсии

более высокий порядок — это стало слишком сложным, поэтому я разделил его примерно пополам.

кеширование — я сохранил результат, поэтому мне не нужно повторять это несколько раз

aync — это когда моя первая строка идет после второй

синхронизация — нормальная

цикл событий — я старший разработчик, потому что я знаю цикл событий

рекурсия — это как цикл, но функциональный

веб-приложение — это веб-страница, но я сделал ее с помощью JavaScript

прогрессивное веб-приложение — это как причудливая закладка со значком в меню «Пуск».

SSR (рендеринг на стороне сервера) — я заставил сервер работать как браузер, поэтому я могу использовать React на сервере, потому что я не знаю PHP, Python, NodeJS, Java, Go, C#…

CDN (сеть доставки контента) — я написал слишком много кода, и его загрузка заняла целую вечность, поэтому я поставил сервер рядом с пользователем.

tooling — в реальных приложениях есть инструменты, а в игрушечных — нет.

scrum — в реальных компаниях это есть, а в игрушечных — нет

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

непрерывная интеграция — я могу запускать тесты в GitLab, чтобы мои товарищи по команде могли одобрить мой MR

непрерывная доставка — я могу развертывать свои приложения из GitLab, поэтому мне не нужно использовать для этого свой компьютер

запрос на слияние — я показываю свои изменения своим товарищам по команде, чтобы я мог сделать перерыв на кофе, пока я жду, пока они посмотрят на это

оптимизация — ставлю 80+ в Lighthouse

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

ваниль — я думаю, это какая-то инопланетная технология, которая не работает на Земле.

разделение забот - я никогда не беспокоюсь, я просто делаю свою работу и иду домой

принцип единой ответственности — все помещается на один экран

Правило наименьшей мощности — оно не работает без мощности, поэтому я добавляю по крайней мере много мощности

ПОЦЕЛУЙ (будь проще, глупый) — я умный, поэтому мне это не нужно, это только для глупых людей

СУХОЙ (не повторяйся) — это святой принцип, тот самый, который отличает настоящих мужчин от обычных разработчиков, если у тебя повторяющиеся строчки кода, ты тупой и уродливый!

MVP (минимально жизнеспособный продукт) — Продукт

крайний срок — период пикового стресса, не путать с датой завершения проекта.

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

agile — я могу начать программировать до того, как у меня будет план, черт возьми!

class — это плохо, потому что это шаблон, но это хорошо для корпоративных приложений

ООП (объектно-ориентированное программирование) — именно так вы создаете серьезные приложения.

FP (функциональное программирование) — я могу писать целые приложения с помощью всего одной строчки.

мажорный релиз — я внес большие изменения, чем в минорном релизе

минорный релиз — я внес меньшие изменения, чем в мажорном релизе

зависимость — необходимый пакет для создания реальных приложений.

Jira : я не могу выполнять настоящую работу, если не регистрируюсь в Jira… но я все равно ненавижу ее

рефакторинг — мне это не нравится, поэтому я делаю это красивее

доступность — это какой-то закон, который говорит, что вам нужен крупный шрифт, чтобы слепые люди могли лучше видеть ваш сайт, и вам нужно использовать атрибуты ARIA.

отзывчивый — работает на моем iPhone и MacBook Pro

семантическая разметка — я знаю, <header>идет вверху и <footer>внизу

служебный класс — я могу кодировать CSS в своем HTML-файле, потому что мои пользователи не нуждаются в кэшировании, и я хорошо разбираюсь в редактировании с несколькими курсорами, и это единственный случай, когда я могу законно нарушить DRY, хотя это святой принцип.

Приложение

Если вы действительно хотите узнать, что означают эти термины, попробуйте Википедию, MDN и подобные места.

Приложение Б

Если говорить более серьезно, позвольте мне сказать вам кое-что, что на самом деле является правдой. Как разработчик-самоучка, а тем более нуб, я имел определенное боязливое уважение к людям, которые использовали эти термины. За свою карьеру я узнал, что 9,5 из 10 человек, которые их используют, не знают, что на самом деле означают эти термины, а сегодня их используют даже нубы. Так что не относитесь к ним слишком серьезно. Отнеситесь к ним так же серьезно, как к этому словарю. Вы можете программировать, не зная истинного значения более чем пяти терминов на этой странице, и делать свою работу лучше, чем многие люди, которые небрежно разбрасывают их.