За книги и фронтенд програмиране, за писането – на думи и компютърен код, ще си говорим с Александър Кондов. Ще минем покрай философията и изкуствения интелект.
Програмирането е изкуство, а не инженерна работа! – гласи веруюто на днешния ни гост.
Защо ли смята така?
Седнали сме тримата – с него и ChatGPT, в една дигитална кръчма, за да побъбрим на чаша дигитален чай за ония големи теми, които вълнуват всички ни…
– Животът днес е дигитална кръчма!
Но ти го знаеш по-добре, след малко ще стане ясно защо. Работиш като фронтенд програмист, с това си изкарвам хляба и аз. Имам две книги, ти също. Пишеш за „Тао на React“, как събра философията и програмирането?
– Още първата зима на пандемиятата бях бърнаутнал много жестоко. Не бях привикнал на работа от вкъщи, безкрайни часове, няма какво друго да се прави. И си бях казал, че ми трябва разнообразие, промяна, да сменя технологиите.
Помислих си: „Обаче работя с React, кажи-речи откакто е излязъл, искам някъде да запиша всички принципи, които следвам, може да са ми полезни, ако се върна“. Седнах, написах една много дълга статия в блога си с работно заглавие от типа „Най-добри практики“.
Обаче в същия момент се бях заровил да чета „Дао Дъ Дзин“. В този период бях прехвърлил цялата лесно смилаема философска литература, която можеше да им попадне. Казах си: „Тао на React ще е!“. Аз съм много слаб в промотирането на нещата, които правя, това е една от малкото статии, които реших да споделя в Reddit.
Пускам го, лягам си, а на сутринта имам 250 известия,
много хора ми пишат: „Това е адски полезно, много ми помогна! Толкова съм се чудил за тия неща“. Всички принципи, които заложих, бяха базирани на мой опит, не как как се действа по принцип, ами, ако си в тази ситуация, направи това, защото другото ще ти създаде такива проблеми в бъдеще.
Много хора казаха, че им е полезно. Споделиха статията в един нюзлетър и на шега бяха написали: „Може да сложиш цена от 10 долара и да го продаваш като книга“. И аз се замислих… защо да не взема да го направя?
– И го направи? За моята първа книга трябваше да минат 33 години, че да ми падне една достойна история на главата…
– Разписах я, подобрих примерите, добавих неща, които бях пропуснал в статията. Кажи-речи удвоих съдържанието, сложих цена и я пуснах.
В началото беше толкова нескопосано… не бях писал нищо по-дълго от блогпост и в един момент вече не издържах. Нужни са адски много редакции, всеки пасаж ти се струва написан зле, след като преспиш една вечер…
В един момент осъзнах, че тази книга никога няма да бъде завършена, ако продължавам по този начин. И си казах – ще я пусна. С 50% отстъпка, с правописните грешки, нередактирана, но есенцията е там. А ако някой си я купи, ще продължа да я подобрявам.
Оказа се, че на доста хора им свърши работа, имаха нужда да почерпят такъв опит. Като изгледаш един курс, научаваш как да работиш с малките парченца от легото, но за да построиш корабче, ти трябват и някакви принципи, които да следваш. След това на същия принцип направих и втората книга – за Node.js. Едната е 150, другата – 180 страници. И двете са колекции от опит, събрани правила.
Просто това беше нещото, от което аз бих имал нужда, когато започвах. Една празна зона – когато започваш да програмираш, има адски много съдържание, но след първоначалната крачка, като искаш да минеш към по-сложни приложения, да боравиш по-фино с тези инструменти, просто започваш да се учиш от проба и грешка.
– Според теб днес достатъчно осмислено ли създаваме софтуер? Използваме уж правилата от „чичо-ни-бобово“ време, но оттогава писането на програми като че ли е съвсем различно…
– Трябва да дам любимия отговор на всеки опитен програмист: „Зависи“.
Има много хубави принципи в някои от старите книги, но прилагането им е доста различно в днешно време и заради начина, по който индустрията се движи.
Днес скоростта има още по-голямо значение при писането на софтуер и това променя нещата.
Ако преди е можело да разпишеш една диаграма за архитектура и 6 месеца да работиш само по нея, днес си в стартъп, който след 6 месеца я съществува, я не. Променяте, махате, добавяте идеи и не можеш да разчиташ, че ще имаш дълготраен план.
Има причина принципите да са измислени по този начин, само че вече трябва да се прилагат в посока, която да пасва на днешните ни нужди.
Софтуерът е млад като индустрия, но има осмислени принципи и според мен трябва да се развива с еволюция,
а не революция. Няма нужда през няколко години да забравяме всичко, което е било и да започваме отначало. Икономическите ефекти, които тласкат индустрията, са доста различни, но както се е писал софтуер преди години, така може да се прави и днес.
– В каква посока трябва да върви тази еволюция?
– Трябва да си говорим повече за принципите, те да се преосмислят.
Имам една много конкретна идея. В моята работа за 10 години най-важният принцип, който съм се научил, е да се отделя бизнес логиката от останалите части на приложението. От една страна това ни дава скорост, модулярност и ни помага да се справяме с промените.
За мен са важни принципите, технологията се мени.
– Какво мислиш за навлизането на ИИ? Ще ни помогне ли в тази посока?
– Мисля, че ще вдигне нивото на абстракция. Не смятам, че ще останем без работа бързо.
Ако го погледнем исторически, вече не ползваме перфокарти, не пишем инструкции за процесора, имаме езици за програмиране на високо ниво. Вече не се налага да имаш собствен сървър, да пишеш конфигурационни файлове. Мисля, че и писането на код върви в тази посока.
Това, което забелязвам, е, че, ползвайки тези технологии,
лека-полека се превръщам в диригент, а не в музикант.
Налага ми се да помня по-малко ноти, а ми е важно да имам слух за това кое звучи добре, кой код ми върши работа в момента.
Всеки алгоритъм, всяка задача, която искам да направя, ИИ я прави много по-бързо, отколкото бих могъл. Наскоро работех по нещо супер специфично, което би ми отнело дни, а той се справи за секунди. Но се наложи няколко пъти да го насоча какво е нужно, ако нямах окото или вкуса, нямаше да се получи.
Аз си представям, че просто нивото на абстракция ще се вдигне. Не мисля, че знанията ще бъдат излишни – как работят алгоритмите например.
Само че не знам дали след 10 години нивото на абстракция няма да е такова, че просто да опишем какво ни трябва и толкова.
Хубавата страна е, че винаги ще има нещо, което да творя!
Нека си кажа шегата, която повтарям напоследък: Гипсокартонът винаги е опция, творим с ръцете си и в двата случая. Едната работа, може би, е малко по-мръсна от другата, но…
– И аз имам подобна шега. Че на 30+ години вече веднъж си смених професията, на 40+ ще е по-трудно да се уча да лепя плочки, изисква и ловкост, която нямам. Но наистина по всичко личи, че в нашия бранш по-малко хора ще могат да правят повече…
– Не ми е спокойно, наистина. Съзнавам, че трябва да съм в крак с тези неща и в един момент може би ще се наложи да направя някаква промяна в професията си. Поне засега изглежда, че има промяна в индустрията, но не е рязка. Виждам екипи от петима, двама напускат и не наемат други, защото се справят.
Откакто работя това, последните 10 години, всички казваха: „Да, ИИ ще прави глупавите неща“. А сега изведнъж ние чистим данни, а той рисува картини.
Който и да прогнозираше тогава, нямаше да каже нещо такова. Щеше да предположи, че ИИ първо ще кара камионите, а
какво се оказа? Че камионите още ги караме ние, а поезията и изкуствата са решен проблем.
– Каза, че работата на програмиста е да твори, но повечето колеги не биха се съгласили. Те се възприемат за инженери, хора, които правят нещо стандартизирано.
– И пак… зависи. Няма една истина, която да кажеш за програмирането и да не се появи някой, за да ти отговори: „Обаче, ако стане такъв случай, твоето решение няма да работи“.
Може би финалният продукт, който трябва да направиш – едни инструкции на процесора, които той да изпълни, това е инженерна работа.
Но пътят, който минаваш дотам, е креативна работа. Има много аналогии с писането.
Но и в други посоки. Не съм химик, но една химическа формула или дава финалния продукт, или не. Докато в програмирането имаме колкото хора, толкова и мнения. Едно и също нещо при различни обстоятелства, различни нужди и технологии може да бъде изразено по много различен начин. Така често начинът, по който работим, не е толкова близък до научния модел, колкото до този на един писател. Започваш, пишеш една груба чернова, просто искаш да се получи някак си, не гониш скорост, комплексност, просто искаш да сработи. После започваш да променяш, да подобряваш.
Много ми е смешно, когато програмистите започнат да обясняват как това е суперлогична, инженерна, а не креативна професия. А ако вземеш трима човека и им кажеш да се разберат кой код е по-чист, няма да стигнат до обективна оценка, защото всеки си разработва вкус, стига до някакви принципи и разбирания за това какво е чист код, как би трябвало да се нарича една променлива.
Колкото хора, толкова мнения. За мен това е креативната част!
– За мен пък е много естествено да редувам писането на код и на текстове. Достатъчно са различни и винаги другото занимание „върви“ на фон. В моя случай обаче по-скоро защото са различни – докато при писането отпускам творенето, при коденето се опитвам да влизам в рамки, в правила.
– И при писането имаш правила в езика, просто ги следваш интуитивно. Говоримият език, както и програмният, също има граматика и ние се придържаме към нея, за да можем да се изразяваме.
– Логиката в тази посока също е свързана с абстракцията, за която стана дума. Наистина, при днешните езици за програмиране почти на английски казваш на машината какво да прави.
– Още повече с навлизането на изкуствения интелект. Английският се оказа най-мощният език за програмиране.
– Има красиви, гениални книги. Може ли да има красив, гениален код?
– Според мен зависи от окото на четеца. Аз съм виждал няколко реда код в кариерата си, не знам дали мога да го нарека красив, но в тях мога да оценя майсторството на човека, който ги е писал. Като го виждаш,
оценяваш, че някой наистина е вложил много мисъл и старание. Щях да кажа и „страдание“, и то не се изключва.
Интересно е, че като чуя „красив код“ не правя аналогия с това да работи бързо. Когато гоним някакви показатели, най-често сме склонни да пожертваме всичко, да пишем само с цел нещо да работи. По-скоро разбирам като „красив код“ да оценя труда на човека. Да си го подреди, да напише коментар, където сметне, че е нужно, да е използвал разбираеми имена, така че да приближи четенето на кода до нормалния начин, по който мозъкът възприема едно изречение.
– Та седнали сме ние в дигиталната кръчма… А така се казва и едно твое начинание, как стигна до него?
– Аз не съм екстроверт, социалните контакти повече ме изтощават. Само че от време на време се случва, било то някоя късна вечер с добър приятел или просто с интересен човек, да сме се заговорили, да подхванем някаква тема,
нещо, за което най-вероятно няма да стигнем до отговор – било то за Вселената, за изкуствения интелект.
Нещо, в което има много голямо поле да се движиш, отговорът не е бял или черен. Доставя ми много голямо удоволствие да си комуникирам с хора по този начин.
Забавен факт е, че аз не пия, абсолютен въздържател съм от 10 години. Много приятели се шегуват, че направих точно проект, което е свързан с кръчма и вътре за награди се дават бирички.
– И как работи?
– Приложението е супер простичко. Всички получават един и същи въпрос с идеята да ги замисли, да погледнат в мислите си и да изкарат нещо интересно, което да споделят с другите. Псевдоанонимно е, човек може да си избере прякор. Условието е, че след няколко дни, когато въпросът приключи, това, което си написал, изчезва за останалите.
Тук идва втората страна на кръчмата. Смятам, че
писането е незаменим начин да поддържиш добра ментална кондиция.
Както тренировките са за тялото, така за мен писането е за мисленето. Има една мисъл, не мога да открия на кого е, но много ми харесва: „Ако мислиш, но не пишеш, значи само си мислиш, че мислиш“.
Исках да създам място, където хората да са провокирани да пишат, за да могат да се задълбаят в мислите си, да видят какво в действителност се корени там! Когато започна да пиша, често забелязвам, че някаква абстрактна мисъл, която се е зародила в главата ми, не е точно това, което си представям. И си мисля, че този процес би бил много полезен и на други.
Разбира се, съществува и чисто егоистичната страна – много ми е интересно какво хората имат да кажат по някакви важни за мен теми и исках да имам повод да ги попитам.
– Дигитално наздраве! Колко хора гостуваха до момента във виртуалната пивница?
– Идеята с кръчмата дойде, защото много често в късните часове хората започват на по чашка да нищят политиката, въпросите на Вселената, на живота. Исках да създам такова място, което да работи целодневно. На всеки няколко дни да получиш някакъв въпрос, да се замислиш, като лимитът е между 10 и 100 думи. Отговаряш, но можеш да видиш какво са писали другите, чак след като го публикуваш. Радваш се на писанията им няколко дни, след което въпросът се променя.
Няколкостотин души се записаха, от тях около половината отговориха на поне един въпрос. Все пак го смятам за някаква победа, немалко хора се престрашиха да излеят мислите си.
Исках да създам място, където гостите са предразположени да говорят по теми извън битовото. Да споделят мислите си по по-абстрактни въпроси. Да, има безброй форуми, една камара места, където да влезеш и да си излееш мислите.
Но това, което исках, беше да подтикна хората да участват. 90% от онези, които влизат във форуми, Редит или други платформи, само четат. Пасивно лайкват нещо, но не се включват в самия процес.
– Подобни въпроси винаги може да зададеш на ChatGPT и е много вероятно да не е възможно да се различи дали наистина си го писал ти.
– Факт.
– Това не е ли малко потискащо за пишещия човек?
– Няма да си кривя душата. Да, наистина. Като чета някоя книга,
на мен ми харесва да знам, че написаното е породено от смисъл, от някаква емоция, преживяване, че някой се е потил и е мислил всяка дума
от този текст. Редактирал го е хиляда пъти, чудил се е дали тук му е мястото, създавал е сюжетни линии, мислил е какво точно иска да каже.
Стивън Кинг казва, че писането е най примитивната форма на телепатия. Някак си, като четеш, влизаш в главата на автора. Виждаш начина му на мислене, начина, по който се изразява. С ChatGPT понякога чета нещо и се чудя това наистина писал ли го е някой, мислил ли го е? Или просто има вкус за това какво се иска да каже.
Това е може би единствената сфера, в която не съм фен на този главоломен прогрес.
Искам да чета нещо, написано от хора!