Тема: Код мінус соціум: у пошуках сенсів та форм
Пишучи код, відмовмось від використання його для вирішення соціальних задач. Тобто, це:
не комерційний код (заробляння грошей — соціальна задача),
не навчальний код (якщо мета навчання — вдосконалити кодерські скіли, щоб стати соціально успішним програмістом, то ні — це може бути побічним наслідком асоціального кодингу, але ніяк не метою),
не демонстраційний код (показувати свою кодерську майстерність перед іншими членами соціуму непотрібно — ні перед потенційним роботодавцем, ні перед іншими кодерами для власного самоствердження),
не утопічний код (надзадача типу стати ще одним Ґейтсом чи Торвальдсом, написавши щось круте — соціальна замануха для підлітків, її ми відкидаємо),
не кримінальний код (помститися ворогам чи всьому людству віртуально не є нашою метою, або ж такий код може бути кримінально-комерційним, що теж нашою метою не є),
не код для оцінки чи самооцінки (нас не цікавить, як пишуть код інші члени соціуму, краще чи гірше, навіть якщо результат такого порівняння більш ніхто не бачить).
Що лишається? Ви, машина та код на умовному «безлюдному острові» чи «вежі зі слонової кості».
Мистецтво для мистецтва, де нема навіть глядачів, крім самого митця.
Експерименти для задоволення власної цікавості.
Код для вирішення особистих утилітарних задач — теоретично, він може знайти застосування і як публічний комерційний/демонстраційний, але початково ви не ставите за мету продавати свої саморобні табуретки — ви їх робите, просто щоб сидіти на них.
Додатковий наслідок асоціальності: ви не пишете такий код у команді з іншими людьми, тому не можете делегувати їм виконання якоїсь частини задачі. Якщо це код, написаний з нуля, то він або буде мінімалістичним, або його написання стане довготривалим процесом. Утім, це може бути і продовження чужої розробки (але розбиратися в чужому коді теж вимагає часу; крім того, це ставить під сумнів, наскільки такий код асоціальний, але будемо вважати, що ви не плануєте ні з ким ділитися своїми змінами в чужому коді; сторонні розробки інших програмістів, починаючи з самого комп'ютера, ви все одно будете використовувати, так чи інакше). Менше рук — менше можливостей перекласти рутину на ці руки, тому рутинну складову має сенс звести до мінімуму. Зробити так, щоб потрібний вам результат досягався мінімумом зусиль.
Якщо вас приваблює написання коду як процес, то з часом ви можете усвідомити, що послідовне дотримання завчених патернів правильного кодингу стає надто мілким для вас — вам тісно, як рибі на мілководді, ви не можете зануритись у глибину, не можете відкрити щось нове — хіба що вас приваблює методичне повторення однакових дій. Езотеричне програмування? Езотерика буває різна (напр., є велика кількість низькоякісних езотеричних мов, що відрізняються від традиційних лише заміною більш осмислених ключових слів менш осмисленими, що, проте, суттєво не впливає на структуру коду, крім того, що його важче читати). Якщо написання для цікавості поєднується з утилітарною складовою, то додаткове ускладнення має бути осмисленим — «інше програмування» не повинне бути «таким самим, тільки гіршим», там має бути справді достатньо новий підхід до задачі, щоб процес написання був для вас цікавим, а не лише випробування своїх можливостей ускладненням заради ускладнення. Крім того, не забуваймо про обмежену кількість рук та вимоги до трудоємності кодингу. Але, якщо цей код призначено тільки для себе, то вам не доведеться й пояснювати логіку своєї програми іншим людським істотам — від цього шматка роботи ви вільні. Втім, «іншою людиною» можете бути і ви, через багато років намагаючись зрозуміти свій власний код.
Нестандартне не значить невдале. Ви не можете застосувати ці підходи в комерційному коді, але експеримент однієї програми з часом може стати загальним підходом і в ваших інших таких програмах. Відмовляючись від усталеної практики, ви поступово вибудовуєте світ програм, де діють ваші власні правила написання коду. Відмова від правил системи породжує нову систему з новими правилами.
Чи можна такий нестандартний код зробити комерційним? В загальному випадку — ні, але, можливо, ви є певним законодавцем мод у світі програмування, і ваш експериментальний код стане для когось зразком — тоді так, код, написаний без огляду на соціум, прендує на те, щоб стати соціально прийнятним підходом у світі комерційної розробки. Але не це є нашою метою.
Асоціальний код може бути інструментом дослідження можливостей системи (може йтися як про залізо й ОС, так і про мову програмування — залежно від того, що вас цікавить). Також інколи це найпростіший спосіб зробити те, для чого нема готових програмних рішень, доступних для вас чи достатньо для вас зручних; або ж це завдання настільки незатребуване іншими, що навіть поставити його можете тільки ви — ви зможете його виконати для себе, але, за визначенням, не для іншої людини. А ще це свобода дій, коли ви лишаєтесь наодинці з собою (та комп'ютером).