DEV Community

sundaycoding
sundaycoding

Posted on

Перестань программировать! Лучший программный код - это код, который не написан. Лучшая кнопка - это кнопка, которой нет.

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

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

Конструктивная схема ложки. Изучаем программирование на жизненных примерах!
Эволюция как живых существ, так и неодушевленных предметов удивительна - жизнь старается экономить ресурсы, и создавать что-либо настолько просто, насколько в принципе это возможно. Программисты же, как большие специалисты в описании окружающей нас реальности - по идее должны заниматься тем же самым - решать задачи максимально эффективными способами - с минимальными затратами ресурсов. То есть, стараться простыми словами и лаконично описывать то, над чем они работают.

Как мне это видится, тружеников в любой области можно разделить на два больших лагеря. Первая часть (меньшая) - это те, кто познали Дзен, и идут по пути упрощения окружающей реальности. И вторая часть (большая) - те, кто ещё находится на пути познания, и по различным причинам усложняют окружающую их реальность.

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

Искусство упрощать, египетские пирамиды и эпоха возрождения 👨‍🎨
Идея упрощения не является чем-то новаторским, и совсем не относится к философским достижениям современной эпохи. Концепция экономии ресурсов, и поиска простейших решений, пришли к нам из глубокой древности.

Жил да был такой известный скульптор и художник, как Микеланджело. В наследство он оставил нам множество величественных росписей, картин и скульптур. К примеру, "Сотворение Адама" или скульптура "Давид" или Базилика Святого Петра. Так вот, Микеланджело известен ещё и своими философскими мыслями, одна из которых звучит следующим образом. В ответ на вопрос "Как Вы делаете свои скульптуры" он ответил: "Я беру камень и отсекаю всё лишнее".

Сотворение Адама - известная роспись руки Микеланджело.
Вернёмся чуть назад в прошлое. Жили да были Египетские фараоны. Одним из интересных хобби правителей легендарного древнего царства, было строительство собственных усыпальниц. По удивительному стечению обстоятельств была выбрана форма пирамиды - трёхмерного треугольника. Почему так?

Помимо эстетической красоты, и немного отбросив в сторону теории заговора (вроде космических маяков для космических кораблей рептилоидов, концентрирующих своей треугольной формой космическую энергию), можно сказать следующее. Форма пирамиды - это наиболее простая конструкция, позволяющая организовать монолитную многоэтажную стройку, поднимая каменные блоки вверх по наклонной поверхности (с минимально возможными усилиями - например относительно подъемных кранов и других механизмов).

Египетские пирамиды - прекрасный пример упрощения сложного капитального строительства.
В линейку простейших решений, найденных человечеством, следует отнести конечно же колесо. Колесо - простейшая конструкция для качения, которое позволило сэкономить огромное количество энергии и ресурсов на транспортировке чего либо. Если что, колесо изобрели в Месопотамии примерно 4000 лет до нашей эры (6000 лет назад к настоящему моменту). К слову сказать, Христианство берёт свое начало 2000 лет назад, Римская империя возникла в 27 году до нашей эры, а дольмены (загадочные строения, которые можно найти на юге России и в других частях мира - порядка 3000 лет до н.э).

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

К созданию любой программы следует подходить с изрядным настроем на упрощение. Сюда же хорошо ложится концепция MVP - минимально валидных продуктов. Моя практика показывает, что хорошие продукты получаются в тех случаях, когда они быстро делаются - во первых на изначальном энтузиазме коллектива, а во-вторых без обременений бесконечными допилами и переделками, корректировками дизайна и согласованиями. Ну и конечно, про концепцию быстрых MVP пишут в таких умных книгах как "Lean Startup" или "От нуля к единице".

Типичная ситуация при создании стартапов. Проверено лично. Не усложняй то, что ты делаешь.
Из личного опыта опять же, большинство выживших продуктов к которым я имел отношение, было сделано не более чем за месяц. А вот продукты которые создавались 4, 5 или более месяцев - либо долго буксовали, либо оказывались вовсе неуспешны. Почему так? Мне кажется здесь тоже есть две причины. Во-первых, упорно запиливая продукт на протяжении многих месяцев или лет, программист сильно отрывается от реальности. Обратная связь от живых пользователей очень важна, и чем быстрее её получаешь - тем более "честным" по отношению к покупателю является продукт. И второе - если продукт невозможно сделать за месяц или два, то скорее всего он очень сложен. А сложность - это то что никому не нравится. // Может поэтому все так не любят читать инструкции?

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

Загадочные любители всё усложнять 🧐
Ну, не буду здесь сильно философствовать. Думаю, каждый узнает в картинке ниже знакомые ему лица. Чем руководствуются люди, выбирающие путь усложнения? Откуда берётся эта фантастическая любовь к страданиям? Ответы на эти вопросы ещё предстоит найти.

Типичная ситуация в разработке любых программных продуктов.
Приведет ли упрощение к деградации? 🤤
Ещё один интересный вопрос на тему дня - стоит ли бояться упрощения? Является ли путь бесконечного облегчения жизни дорогой к глупости? Ведь посмотрите сами - когда-то великой привилегией, доступной лишь избранным, было умение читать и писать. Некоторые книги ценились на вес золота, а прикладные технологии тщательно охранялись. Сейчас же, увидеть читающего человека можно всё реже, а молодые люди и вовсе предпочитают видео-контент привычному тексту.

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

Современное общество, поколение за поколением, всё глубже подсаживается на современные технологии, и делегирует решение прикладных задач бездушным механизмам. Людям больше не требуются бумажные энциклопедии - есть Wikipedia. Не нужны проводные телефоны, не нужны бумажные письма - потому что есть беспроводная связь. А в скором времени, ненужными окажутся и сами люди - потому что вместо таксиста есть автопилот, вместо складского служащего - робот, а вместо юриста - ChatGPT.

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

Top comments (0)