Читать книгу Дякую за запізнення: керівництво для оптимістів сучасності - Томас Фридман - Страница 12

Частина ІІ
Прискорення
Розділ 3
Закон Мура
Програмне забезпечення: створення невидимої складності

Оглавление

Неможливо говорити про прискорення в розробленні й поширенні програмного забезпечення без згадки про винятковий внесок Білла Ґейтса й Пола Аллена, співзасновника Microsoft. Програмне забезпечення було задовго до Білла Ґейтса. Просто користувачі комп’ютерів його не помічали, бо воно вже було вбудовано у придбаний комп’ютер, як неуникне зло в лискучому апараті. Пани Ґейтс і Аллен усе це змінили на початку 70-х років, коли робили перші кроки в написанні інтерпретаторів для мови програмування BASIC, а потім – операційної системи DOS.

За тих часів виробники апаратного забезпечення здебільшого контрактували або проробляли своє програмне забезпечення для власних операційних систем чи пропрієтарних застосунків на своїх машинах. Ґейтс вважав, що якщо з’явиться спільне програмне забезпечення для різних машин (як-от згодом Acer, Dell, IBM і сотні інших), то саме воно матиме вартість, а не ставатиме безкоштовним додатком до апаратного забезпечення. Сьогодні важко собі уявити, наскільки це була радикальна ідея. Але саме з неї виріс Microsoft: людям не треба платити одноразово за розроблення ПЗ як складника машини, а натомість кожний індивідуальний користувач платитиме за можливості кожного програмного забезпечення. Власне, DOS виокремив відмінності апаратного забезпечення різних комп’ютерів. Байдуже – купуєте ви Dell, Acer чи IBM. Усі вони раптом одержали однакову операційну систему. Це перетворило десктопи й лептопи на звичайний товар, чого виробники, далебі, не хотіли. Вартість тоді перейшла на відмінне програмне забезпечення, яке можна було написати для роботи на DOS, і за нього вже платив користувач. Так Microsoft розбагатів.

Сьогодні ми сприймаємо програмне забезпечення як щось належне, забуваючи, що ж саме воно робить. «Що таке софтверний бізнес?» – запитує Крейґ Манді, який багато років працював разом із Ґейтсом і відповідав за науково-дослідну роботу та стратегування, а також був моїм ментором у всіх справах програмного й апаратного забезпечення. «Програмне забезпечення – це така чарівна річ, що виокремлює та усуває кожну нову форму складності. Відтак утворюється новий критерій, із якого починається розв’язання людиною наступної задачі без потреби долати складності. Ви починаєте з нового шару й додаєте свою вартість. При кожному підйомі базового рівня люди щось винаходять і спільний ефект дає програмне забезпечення, що скрізь прибирає складність».

Замисліться на мить про застосунок Google Photos. Він дає змогу багато що розпізнати на всіх світлинах, що будь-коли зберігалися на вашому комп’ютері. Якби двадцять років тому ваша дружина попросила: «Любий, знайди-но мені світлини з відпустки на пляжі у Флориді», вам довелося б вручну перелопатити всі фотоальбоми, усі коробки для взуття, щоб знайти потрібне. Відтоді фотографія стала цифровою і ви змогли звантажити всі світлини в онлайн. Сьогодні Google Photos здійснює резервне копіювання всіх цифрових світлин, упорядковує їх, маркує і, використовуючи розпізнавальне програмне забезпечення, дозволяє знайти всі потрібні пляжні сцени за допомогою кількох кліків чи жестів або просто вербального опису. Тобто програмне забезпечення усунуло всі складності із сортуванням і знаходженням, звівши це до кількох натискань на клавіші або доторків чи голосових команд.

І ще на мить пригадайте, як ви ловили таксі п’ять років тому. «Таксі! Таксі!» – гукали ви з перехрестя, стоячи під дощем, а таксі летіло повз вас, бо було вже зайняте. Також ви телефонували до компанії таксі з найближчої телефонної будки чи стільникового телефона, а там тримали вас на дроті хвилин п’ять, а тоді повідомляли, що доведеться почекати хвилин двадцять, хоча ні ви, ні вони в це не вірили. Тепер ми бачимо, наскільки все змінилось: усунуто всі складності, пов’язані з додзвоном, визначенням місця, графіком руху, диспетчеризацією – приховано й шар за шаром, – нині це лише кілька доторків до застосунку Uber у смартфоні.

Історія комп’ютерів і програмного забезпечення, пояснює Манді, «це історія поступового усування складностей за допомогою комбінацій апаратного та програмного забезпечення». Зробити таке диво дає змогу інтерфейс ужиткового програмування (або ІУП). Насправді це програмні команди, за якими комп’ютер виконує всі ваші побажання. Якщо ви хочете, щоб застосунок, над яким ви працюєте, мав опцію «зберегти», яка запускала б копіювання файлу на флешку, то ІУП із цим допоможе; те саме з опціями «створити файл», «відкрити файл», «відіслати файл» тощо.

Сьогодні ІУП багатьох розробників, веб-сайтів і систем став більш інтерактивним; компанії обмінюються своїми ІУП, і завдяки цьому розробники пишуть свої застосунки й сервіси, що взаємодіють із різними платформами та працюють на них. Тож я можу використати ІУП Amazon, щоб дати людям змогу купувати книжки, клікнувши на позначку на моєму веб-сайті – ThomasLFriedman.com.

«Завдяки ІУП примножується вибір у веб-сервісі “мешапів”, у яких розробники з’єднують і підганяють ІУП, скажімо, Google, Facebook чи Twitter, щоб створювати нові застосунки та сервіси», – пояснює розробник веб-сайту ReadWrite.com. «З багатьох міркувань розширені можливості ІУП для більшості сервісів дали нам усе те, що пов’язано з павутиною. Коли ви, наприклад, шукаєте ресторани неподалік за допомогою застосунку Yelp для Android, він винесе їх на мапи Google, а не будуватиме власні мапи», використовуючи ІУП мап Google.

Такий тип інтеграції називається «безшовним», пояснює Манді, «бо користувач не помічає, коли софтверні функції передаються від одного веб-сервісу до іншого… ІУП шар за шаром приховує складності того, що відбувається в комп’ютері, – і транспортні протоколи та формати повідомлень приховують складність горизонтального з’єднання в мережу». Таке вертикальне впорядкування й горизонтальні з’єднання дають вам змогу щодня насолоджуватися роботою на комп’ютері, планшеті чи телефоні. Хмара Microsoft, Hewlett Packard Enterprise, не кажучи вже про сервіси Facebook, Twitter, Google, Uber, Airbnb, Skype, Amazon, TripAdvisor, Yelp, Tinder чи NYTimes.com, – це все наслідок тисяч вертикальних і горизонтальних ІУП та протоколів, що працюють на мільйонах машин, сполучених між собою в мережі.

Нині виробництво програмного забезпечення прискорюється ще швидше не тільки тому, що експоненційно покращуються інструменти для написання ПЗ. Ці інструменти дозволяють дедалі більшій кількості людей в окремих компаніях чи їхніх об’єднаннях співпрацювати в написанні дедалі складнішого ПЗ та кодів ІУП, щоб дати раду ще складнішим завданням; тож тепер є не просто мільйон розумних людей, які пишуть код, а мільйон розумних людей, які співпрацюють для написання всіх тих кодів.

І це підводить нас до сервісу GitHub – одного з найбільших генераторів програмного забезпечення. GitHub – найпопулярніша платформа для підтримки співробітництва у створенні програмного забезпечення. Зусилля в цьому напрямі можуть набувати різних форм: особи працюють з іншими особами, закриті групи з компаніями або відкриті групи, що працюють із відкритими кодами. Нестримний розвиток почався 2007 року. Розуміючи, що гуртом ми розумніші за одного з нас, дедалі більше фахівців і компаній покладаються на платформу GitHub. Це дає змогу швидше вчитися, маючи змогу користуватися найкращим колективним програмним забезпеченням, що вже працює на різні аспекти комерції, і будувати на них щось нове разом із поєднаними групами, які пропонують інтелектуальні можливості всередині своїх компаній та поза ними.

GitHub сьогодні використовують понад 12 мільйонів програмістів для написання, удосконалення, спрощення, збереження й розподілу софтверних застосунків, тому він швидко зростає: між першим моїм інтерв’ю 2015 року й останнім – на початку 2016-го – додався мільйон користувачів.

Уявіть собі місце для програмного забезпечення, що поєднує Вікіпедію та Amazon: заходите онлайн до бібліотеки GitHub і берете просто з полиці потрібне програмне забезпечення для, скажімо, системи керування запасами, або системи оброблення кредитних карток, або системи управління людськими ресурсами, або рушія відеогри, або системи керування дронами, або керування робототехнікою. Ви завантажуєте його на комп’ютер компанії чи власний, адаптуєте для своїх специфічних потреб, ви (або програміст) модернізуєте його, і вже з усіма цими вдосконаленнями завантажуєте його знов до бібліотеки GitHub, щоб наступна особа змогла користуватися новою й покращеною версією. Тепер уявіть-но, що найкращі у світі програмісти з усіх усюд, які або працюють на компанії, або яким потрібне визнання, роблять те саме. У результаті маєте ефективний цикл швидкого навчання й поліпшення програмного забезпечення, що значно прискорює новаторство.

GitHub заснувало троє розумах, зациклених на компах: Том Престон-Вернер, Кріс Венстрет і П. Дж. Гаєт; тепер це найбільший у світі сховок кодів. Оскільки в усіх великих компаніях, які я відвідував, були програмісти, що користувалися для співробітництва платформою GitHub, то вирішив відвідати й джерело такої кількості вихідних кодів у штабі в Сан-Франциско. За збігом обставин, я за тиждень до того інтерв’ював президента Барака Обаму в Овальному кабінеті12 з приводу Ірану. Я згадав про це лише тому, що вестибюль для відвідувачів у GitHub точнісінька копія вестибюля в Овальному кабінеті, навіть килим такий самий!

Вони полюбляють, коли відвідувачі відчувають себе по-особливому.

Мій інтерв’юйований Кріс Венстрет, виконавчий директор GitHub, почав розповідати мені, як Git потрапив до GitHub. Він пояснив, що Git – «це дистрибутивна версія системи керування», котру 2005 року винайшов Лінус Торвалдс, один із великих і недооцінених новаторів нашого часу. Торвалдс – проповідник відкритого коду, який створив Linux, першу ОС із відкритим кодом, що потужно конкурувала з Microsoft Windows. Програма Торвалдса Git дозволяла групі кодувальників працювати разом, використовуючи ті самі файли, уможливлюючи програмістам робити власні надбудови або паралельні структури, користуватися чужою роботою, а також бачити, хто й що саме змінив, – можна було все зберегти або скасувати, покращити та поекспериментувати.

«Візьміть Вікіпедію, яка є версією системи керування для написання енциклопедій із відкритим кодом», – пояснював Венстрет. Люди роблять свій внесок до кожного запису, а ви можете бачити, покращувати або скасовувати зміни. Там чинне одне правило: усі покращення може використовувати вся спільнота. Пропрієтарне програмне забезпечення, наприклад Windows або iOS компанії Apple, також є версією керівної системи, але коди його закриті, і вихідним кодом та подальшими змінами компанії зі спільнотою не діляться.

Модель із відкритим кодом, яка є в GitHub, – це «дистрибутивна версія контрольованої системи: кожний може докласти своє, а спільнота щодня принципово вирішує, у кого найкраща версія, – сказав Венстрет. – Найкраща опиняється нагорі за законом соціального відбору при співробітництві, – у такий спосіб на Amazon.com читачі рейтингують книжки. На GitHub спільнота оцінює різні версії, проставляючи зірочки або лайки, або це саме можна простежити за кількістю завантажень. Ваша версія ПЗ могла бути найпопулярнішою в четвер, а я міг прийти, попрацювати над нею, і моя версія стала б найкращою в чартах популярності у п’ятницю, а тим часом плодами роботи скористається вся спільнота. Ми могли б об’єднати наші доробки або піти далі різними шляхами, але в кожному разі в споживача з’являється більше вибору».

Як він вийшов на такий формат роботи? Я запитав про це у тридцятиоднорічного Венстрета. «Почав я програмувати років у 12—13, – розповів він. – Я хотів створювати відеогри, бо дуже їх любив. Моя перша спроба – рейкова програма штучного інтелекту. Проте відеогри були тоді для мене заскладні, і я навчився робити веб-сайти». Венстрет пішов до Цинциннатського університету на спеціальність «англійська мова й література», але більшість часу він не Шекспіра читав, а писав коди та брав участь в онлайновій початковій спільноті з відкритих кодів. «Мені вкрай потрібне було наставництво, і я шукав програми, які потребували допомоги, і це вивело мене на шлях створення девелоперських інструментів», – пояснював він.

Відтак Венстрет порозсилав свої резюме про роботу з відкритим кодом і практичні приклади до різних софтверних майстерень у Кремнієвій долині, шукаючи посаду молодшого програміста. І ось менеджер CNET.com, медіа-платформи, що надає хостинг веб-сайтам, вирішив спробувати, спираючись не на атестат коледжу, а на лайки під його програмними розробками, які проставляли різні спільноти, що працювали з відкритими кодами. «Про Сан-Франциско я майже нічого не знав, – сказав він. – Гадав, буцім основне там – пляжі й катання на роликах». Незабаром він зрозумів, що насправді це біти й байти.

Отже, 2007 року «я почав працювати програмістом, використовуючи програмне забезпечення з відкритим кодом для розбудови власних продуктів для CNET». Тим часом 2007 року Торвалдс пішов до Google і в розмовах про високі технології розповів якось про Git, свій інструмент для спільного написання кодів. «Це виклали в YouTube, і гурт моїх колег, які працювали з відкритими кодами, сказали: “Ми випробуємо цей Git, щоб відійти від купи серверів, що працювали на різні спільноти”».

До цього моменту спільнота з відкритими кодами була вельми відкритою, але надто балканізованою. «За тих часів єдиної спільноти, що працювала з відкритими кодами, не було, – пригадував Венстрет. – Це була низка спільнот із відкритими кодами, котра гуртувалася на основі проекту, а не учасників. Така була культура. Усі інструменти, уся ідеологія зосереджувалася на тому, як ви з проектом працюєте й завантажуєте, а не на спільній роботі та спілкуванні. Усе було програмоцентричне». У Венстрета визрівав інший погляд: чому б не працювати над десятьма проектами одночасно в одному місці на основі розшарованої підстильної мови, щоб можна було спілкуватися і щоб програмісти могли переходити від одного до іншого й назад.

Отже, він почав розмовляти про відмінний підхід з колегою з CNET П. Дж. Гаєтом, який мав ступінь з інформатики, і Томом Престоном-Вернером, із котрим Венстрет співпрацював над проектами з відкритим кодом ще задовго до їхньої особистої зустрічі.

«Ми собі казали: хай йому грець, тому Git, який він складний у роботі. А якщо ми спростимо його за допомогою веб-сайту? – пригадував Венстрет. – А ще ми подумали: якщо всі почнуть користуватися Git, ми зможемо більше не перейматися інструментами й зосередитися на тому, що ми пишемо. Я хотів, щоб у павутині це все робилося за один клік, тоді я зміг би залишати коментарі про програму, стежити за людьми й кодом так, як це робиться на Twitter, ще й так само просто». Отже, якщо ви схочете працювати над сотнею різних проектів програмного забезпечення, вам не доведеться вишукувати сто способів зробити свій внесок. Достатньо вивчити Git, і ви зможете просто працювати з ними всіма.

Тож у жовтні 2007 року ця трійця створила хаб для Git – звідси й назва GitHub. Офіційний запуск відбувся у квітні 2008 року. «Стрижнем була дистрибутивна версія системи керування з соціальним шаром, що об’єднував усіх людей і всі проекти», – сказав Венстрет. Головний тодішній конкурент SourceForge вирішував протягом п’ятьох днів, чи надавати хостинг вашому ПЗ з відкритим кодом. А от GitHub став тим місцем, де можна було поділитися своїм кодом з усім світом.

«Скажімо, ви хочете завантажити програму під назвою “Як писати колонку”, – пояснював він мені. – Ви просто публікуєте її під власним іменем на GitHub. Я побачу матеріал в онлайні та скажу: “Гей, я хотів би дещо додати”. За старих часів я позаписував би всі ті бажані зміни і в конспективному вигляді виставив для ознайомлення спільноти. А тепер я просто забираю ваш код до своєї пісочниці. Процес називається “форк”. Я працюю над цим, і тепер мої зміни для всіх відкриті – це моя версія. Якщо схочу повернути вам як оригінальному авторові свої зміни, я вдамся до технології “пул”. Ви дивитеся на те, як я подав “Як написати колонку”; водночас ви бачите всі зміни. Якщо подобається, ви натискаєте на “мердж” (інтегрувати). І тоді кожний бачитиме агреговану версію. Якщо вам не все подобається, ми можемо обговорювати, коментувати й переглядати кожну стрічку коду. Це організований краудсорсинг. Тобто у вас є фахівець – людина, яка написала вихідну програму “Як написати колонку” і яка має право вирішувати, що прийняти, а що відкинути. GitHub покаже, що я над цим працював, але ви контролюєте, що агрегується з вихідною версією. Отак сьогодні вибудовують програмне забезпечення».

Півтора десятиріччя тому Microsoft створив технологію .NET, пропрієтарну платформу із закритим кодом для розробки серйозного підприємницького програмного забезпечення для банків і страхових компаній. У вересні 2014 року Microsoft вирішив відкрити його код на GitHub, щоб подивитися, що спільнота зможе додати. За півроку Microsoft мав більше людей, які задарма працювали над .NET, ніж кількість штатних працівників компанії, які над програмою працювали від самого початку, сказав Венстрет.

«Відкритий код не означає, буцім люди роблять із ним усе, що їм заманеться, – квапливо додав він. – Microsoft визначив для програми пакет стратегічних цілей і пояснив спільноті що й до чого, і спільнота запропонувала виправлення та вдосконалення, з якими Microsoft потім погодився. Спочатку їхня платформа працювала лише на Windows. Тож Microsoft оголосив, що в майбутньому вона працюватиме ще й на Mac і Linux. Наступного дня спільнота сказала: “Чудово, красно дякуємо. Ми й це для вас зробимо”». За одну ніч спільнота GitHub сама зробила Mac-версію. Це був подарунок для Microsoft за те, що компанія поділилася зі спільнотою.

«Тепер, коли я користуюся Uber, – виснував Венстрет, – я думаю тільки про те, куди поїду. А не як туди потрапити. Те саме з GitHub. Нині слід думати лише про завдання, яке хочете вирішити, а не про інструменти». Можете звернутися до полиці GitHub, знайти потрібне, взяти його, покращити й повернути для наступного користувача. А у процесі, додав він, «ми ліквідуємо всі тертя. На GitHub ви бачите те, що й у кожній галузі».

Коли світ плаский, можна всім роздати всі інструменти, однак у системі є ще багато тертя. Але світ стає дуже швидким, коли інструменти зникають і ви думаєте тільки про проект. «У ХХ ст. обмеження обумовлювалися апаратним забезпеченням і його прискоренням – швидші процесори, більше серверів, – зауважив Венстрет. – У ХХІ ст. все залежить від програмного забезпечення. Ми не можемо продукувати більше людей, але можемо давати більше девелоперів і хочемо дати людям змогу створювати чудове програмне забезпечення, беручи те, що існує, і відкриваючи світ для творчості, щоб примножити кодувальників… щоб створити новий пречудовий стартап або інноваційний проект».

Спільноті, яка працює з відкритим кодом, притаманне щось дивовижно людське. В основі своїй – це глибоко людське жадання співпрацювати й мати визнання добре виконаної роботи, і тут не йдеться про грошову винагороду. Дивовижно багато вартості можна створити просто за допомогою слів: «Гей, ваш застосунок прекрасний. Чудова робота. Відкриваються нові можливості!» Мільйони годин праці задарма можна здобути, коли просто сприяти внутрішньому тяжінню людини до новаторства, бажання поділитися й визнання.

Але найцікавіше сьогодні – це побачити, на думку Венстрета, «як проектанти на GitHub відкривають себе одне одному. Компанії знаходять девелоперів, девелопери – одне одного, студенти – наставників, і аматори хобі здибують тут одне одного, – усе, що треба. Це перетворюється на бібліотеку в голістичному розумінні. Утворюється спільнота в найглибшому значенні цього слова». Він додав: «Люди знайомляться на GitHub і довідуються, що живуть в одному місті; вони разом ідуть на піцу й поночі балакають про програмування».

Але, щоб працювати, відкритому коду теж потрібні гроші, особливо коли користувачів 12 млн, тому GitHub створив бізнесову модель. Вона виставляє рахунки компаніям за використання платформи для приватних бізнес-рахунків, де компанії створюють приватні депозитарії програмного забезпечення із власним пропрієтарним бізнес-кодом і вирішують, кому дозволити працювати з ним. Нині переважна більшість великих компаній має і приватні, і публічні депозитарії на GitHub, бо це дає змогу швидше рухатися й максимально використовувати інтелектуальні можливості.

«Ми збудували хмарну архітектуру на ПЗ із відкритим кодом під назвою OpenStack для обслуговування спільноти, і в нас є 100 000 розробників, які працюють не на нас, але те, що вони можуть зробити за тиждень, ми не зробимо й за рік, – зазначив Меґ Вітмен, президент і виконавчий директор Hewlett Packard Enterprise. – Я переконаний, що світ сьогодні урухомлює перевірка правильності, тому спільноти настільки потужні. Люди дуже хочуть, щоб інші члени спільноти їх перевіряли. Я вам подобаюся? Справді? Така перевірка випадає не всім. Я зрозумів це на eBay. Люди шаленіли від зворотного зв’язку. Де ще ви можете прокинутися й побачити, як вас усі люблять?!»

Колись компаніям доводилося чекати на випуск нового чипа. А тепер програмне забезпечення змусить апаратуру й танцювати і співати на всі заставки; тож люди чекають на програмне забезпечення й охочіше на ньому співпрацюють. Тому Джон Донован з AT&T сказав: «Для нас закон Мура – це добре старосвітське явище. Кожні рік-два ми розраховували на новий чип, знали, що він з’явиться, і тому вже з ним були пов’язані й тести, і нові плани». Сьогодні радше чекають на нове програмне забезпечення. «Темп змін задають ті, хто пише нове ПЗ, – додав він. – Ви впізнаєте, що щось діється, коли хлопці з вантажівками та драбинами, щоб видиратися на телефонні стовпи, кажуть вам: “Тепер ми – софтверна компанія”. Раніше програмне забезпечення було тісним місцем, а тепер воно панує скрізь. Нині це складний множник закону Мура».

12

Робочий кабінет президента США в Білому домі.

Дякую за запізнення: керівництво для оптимістів сучасності

Подняться наверх