5 причини Софтуерните инженери са художници

Създайте софтуер като Gaudí изгради Sagrada Família

Саграда Фамилия, все още в процес на изграждане. С безплатни снимки на Canva

Откакто се преместих в Ню Йорк от района на Бей преди три години, обмислях как страхотни софтуерни инженери произвеждат страхотна работа. Може ли мисленето и подходът на Силициевата долина да бъдат възпроизведени другаде? Това ме накара да проуча някои от висококачествените софтуерни инженерни проекти, като Apache Spark, Tensorflow и Ethereum. Но докато пътувах в Барселона миналата година, ми направи впечатление, че Саграда Фамилия може би е един от най-добрите примери за научаване.

Ето пет прилики, които наблюдавах.

1. Дайте творческо пространство на художника

Ако искате да построите кораб, не барабанявайте хората да събират дърва и не им възлагайте задачи и работа, а по-скоро ги научете да копнеят за безкрайната необятност на морето.
- Антоан дьо Сент-Екзюпери, френски поет
Basilica della Santa Casa в Лорето, Италия. От Масимо Розели от Wikimedia

Първоначално Саграда Фамилия е замислена от Йозеп Мария Бокабела, който, вдъхновен от базиликата Сала Каса в Италия, иска да построи катедрала в Испания. Тогава Гауди получи пълна автономия по отношение на този проект. Той не беше отговорник на задачи, а архитект; артист. Можете ли да си представите дали Bocabella трябваше да диктува кой вид дърво, дялан камък и парчета стъкло да използвате? При такива обстоятелства вероятно Гауди би отказал работата и щяхме да загубим обект на световно наследство.

Софтуерните инженери също не са задачи - ние решаваме проблеми. Ние сме специализирани в намирането на най-доброто решение за даден проблем. Ето защо технологичните компании като Google и Facebook не се интересуват от кои езици за програмиране знаете: те търсят способност за решаване на проблеми. Те вярват, че техните инженери ще изберат правилните инструменти за решаване на проблема, точно както Гауди получи пълна свобода да следва визията си за базиликата.

Напротив, често съм виждал компании, в които продажбите или търговията до голяма степен решават какво и как да се изгради софтуер. Този операционен модел възпрепятства тези компании да реализират пълния си иновативен потенциал, тъй като те не се впускат в силните страни на своите строители. Както веднъж каза Бил Кембъл, бивш изпълнителен директор и треньор в Apple, „Оправомощените инженери са най-важното нещо, което можете да имате в [технологичната] компания.“

2. Няма единен правилен начин за правене на изкуство; тя е израз на художника

Няма правила за творчество.
- Лора Яворски, американска авторка и художничка

Когато Гауди пое главния архитект на Sagrada Família, той направи много промени в оригиналния готически дизайн, като включи естествени форми, ориенталски изкуства и уравновесени системи. Някои намеци за оригиналния готически стил остават, но това е далеч от други сгради, построени в онази епоха.

По същия начин, няма нито един правилен начин за създаване на софтуер, а само различни компромиси. Facebook е известен с това, че разполага с едно монолитно хранилище с кодове. Това гарантира, че всички проекти и зависимости са съвместими един с друг. От друга страна, Amazon има отделно хранилище за всяка услуга, което позволява по-бързи цикли на итерация, тъй като всяка услуга се изпълнява независимо една от друга.

Софтуерът също отразява авторите си. Tensorflow, рамка за машинно обучение, отворена от Google, завладя стотици хиляди разработчици заради използваемостта, скоростта, качеството на кода и изчерпателната документация. Тези атрибути директно се връзват към основните философии на Google за фокусиране върху потребителите, подчертаване на скоростта и стремеж отвъд величието.

3. Вдъхновението идва от постоянни процедури

Талантът е дълго търпение и оригиналност усилие на волята и интензивното наблюдение.
- Густав Флобер, френски романист
Един от триизмерните модели на Гауди, използван за оценка на структурната цялост на неговите дизайни.

Образът на хората на художниците често е от животи на релаксиращо творчество. Реалността е, че те разработват рутина и последователно следват. Носителката на наградата Пулицър, Мая Анджелу, ще става всеки ден в 5:30 и започва да пише в 7 часа сутринта в продължение на пет или повече часа. Както Микеланджело заключи: „Ако хората знаеха колко усилено работя, за да получа майсторството си, това изобщо не би изглеждало толкова прекрасно.“

Гауди не беше по-различен. Той изхожда от концепцията за уравновесената система - сгради, които могат да стоят самостоятелно без вътрешна или външна подкрепа. Тъй като този нов архитектурен стил не е бил построен преди, никой не знаеше дали неговите проекти ще издържат на законите на физиката. Неговото решение беше да създаде 3-D модели и да опита стотици конфигурации. Много от финалните му проекти бяха вдъхновени от неговите експерименти.

По същия начин в софтуерното инженерство ходите на работа всеки ден и dayw̶r̶i̶t̶e̶ ̶c̶o̶d̶e̶ ̶f̶o̶r̶ ̶a̶s̶s̶i̶g̶n̶e̶d̶ ̶t̶a̶s̶k̶s̶ дизайнерски решения на проблемите. При постоянство, толкова често ще изпитвате вдъхновение, което води до негативно въздействие. Например група инженери хакнаха срещу софтуер за измама за Paypal. Това накара Питър Тийл да осъзнае, че това може да бъде приложено към проблем, над който той отдавна мисли: националната сигурност. От тази реализация той е съосновател на Palantir, който оттогава е прераснал в компания на стойност 20 милиарда долара.

4. Разбърквайте с леки механизми преди окончателното им прилагане

Творчеството изисква колоездене много идеи. Колкото повече инвестирате в своя прототип и колкото по-близо до „окончателния“ е, толкова по-трудно е да пуснете концепция, която не работи.
- Дейвид Кели, основател на IDEO и d.school University University

Въпреки че постоянството е необходимо, човек също трябва да бъде стратегически. Гауди избра да повтори експериментите си върху своя 3-D модел, тъй като имаше кратък цикъл на повторение. След като вземе решение за конкретна конфигурация, той ще очертае окончателните спецификации за хората да изграждат физическата архитектура, тъй като той методично премина към следващата част на проекта.

Софтуерното инженерство не се различава. Започваме с първоначален дизайн. След това изграждаме прототип и го повтаряме. След като се спрем на решение, финализираме кода си за освобождаване и преминаваме към следващия набор от функции.

Веднъж имах ръководител на проекти, който настояваше да "извадим някакъв код" за следващата фаза на проекта, преди да бъдат събрани изискванията. Причината му, освен да покаже напредък, беше в това, че „ние така или иначе ще трябва да рефакторираме кода, така че [ние] може и да започнем да пишем код сега“. Предположих, че още не сме изпълнили изцяло следващата фаза, така че може би трябва да повторим дизайна, докато финализираме функционалните изисквания. След малко напред-назад, в крайна сметка се съгласихме да започнем с дизайна.

Представете си, ако един от спонсорите на Гауди беше казал: „нека започнем да режем камъни и да ги трупаме, за да можем да покажем напредък“, без да се съобразяваме със структурната цялост на базиликата. Ако някое от парчетата беше поставено неправилно - което вероятно би се случило без неговите модели и експерименти - щеше да струва много повече усилия за възстановяване на тези разположения. Гауди разумно е избрал да повтори с нещо лесно променящо се - своите 3-D модели - преди да премине към физическа конструкция, точно както правим за изграждането на софтуер.

5. Изкуството никога не завършва

Не можете да поставите ограничение във времето за творчество.
- Д-р Дре, американски рапър и продуцент на записи
Жълтите части на модела отразяват това, което тепърва ще се изгражда. През 2015 г. беше изчислено, че 70% от базиликата е пълна.

Леонардо да Винчи веднъж каза: „Изкуството никога не е завършено, а само изоставено.“ На въпроса за бавния ход на строителството Гауди, набожен католик, отговори: „Клиентът ми не бърза.“ Когато той починал през 1926 г., по-малко от 25% от базиликата била пълна.

Въпреки че беше перфекционист, той също знаеше кога нещо е готово за общо ползване. Например, когато през 1885 г. бяха завършени котешките и олтарни секции на параклиса "Свети Йосиф", той го отвори за литургия на следващия ден. Оттогава стотици милиони са посетили базиликата през различните етапи на нейното строителство.

По подобен начин софтуерът никога не е наистина пълен. Винаги има повече функции за изграждане и повече начини за обслужване на потребителите. Важно е да се определи кога нещо е готово да бъде освободено, но все пак да се признае, че никога нищо не е напълно усъвършенствано. Пример: дори след като Amazon пое онлайн продажбите на книги, тя продължи да разширява своите предложения за подобряване на потребителското изживяване и сега е най-голямата компания за онлайн търговия на дребно в света.

Инженерството и изкуствата често се разглеждат като в противоположните краища на кариерния спектър. Приликите обаче може да са по-чести, отколкото си мислите. Ако всеки ден изпадате в задачи за кодиране, задайте си въпроса: „Мога ли да подхождам по-цялостно към задачите си? Работното ми място осигурява ли среда, която има достатъчно бяло пространство, за да оцветя с творчеството си? “ Ако отговорът е "не", оставям ви цитат от Smallville: "Вие бяхте предназначени за много по-важни неща."

За повече разсъждения в областта на технологичната култура, организацията и управлението, следвайте ме в Twitter @ kenk616.