Ярлик «майстер на всі руки» зазвичай звучить як докір? Можливо, насправді це перевага, особливо коли йдеться про наставництво для людей із різним життєвим досвідом, різним досвідом програмування та з різних культур! Айзек називає себе IT-фахівцем і майстром на всі руки... і це далеко не все!
Джонатан: Привіт усім, і ласкаво просимо до подкасту спільноти Exercism. Маю честь бути разом з Айзеком, який є одним із наших мейнтейнерів і контрибʼюторів і нещодавно чимало займався наставництвом багатьох студентів на наших GoHort, наших навчальних когортах, які ми проводили протягом 30 днів, здається, вже двічі, особливо з Go та Elixir. І Айзек допомагав із треком Go, що було чудово. Тож Айзеку, щиро вітаємо вас. Може, розкажете трохи про те, де ви живете, звідки ви родом і як ви потрапили в IT? Айзек: Так, я живу в Каліфорнії. Живу в Сан-Хосе, Каліфорнія. Чесно кажучи, я потрапив в IT, бо мій старший брат займався IT, а я робив би все, що робив би він. У мене було багато братів і сестер. Нам подобалося проводити час одне з одним, хоча дехто з нас любив проводити час із кимось більше, ніж з іншими. Був у мене старший брат, з яким мені дуже подобалося проводити час. Йому не обовʼязково так само подобалося проводити час зі мною, але я багато ходив за ним хвостом і хотів робити все, що робив він. Він узяв книжку «C for Dummies», яка валялася вдома, коли йому було близько 15, а мені, якщо не помиляюся, 9. Отже, він писав на C, і я собі думаю: якщо він це робить, то й я буду. Мої програми в тому віці були досить прості й базові. Це були швидше вправи типу «як тебе звати, привіт, Бобе». Не надто складні. З чогось треба починати. Треба було з цього починати. Я такий: о, можна вивести символ visual files, і він видає звук. Це так круто. Я написав програму, яка буквально просто друкує слеш A. Але я починав у 9 років. Я писав програми на C. У нас була стара машина з Windows 3.1, яка завантажувалася в DOS, і потім мій брат налаштував batch-скрипт, який під час завантаження компʼютера показував меню, де можна було вибрати: запустити Windows, запустити ігри, є таке собі меню ігор. Можна було натиснути, скажімо, 5 для Warcraft чи чогось такого. Тож я писав batch-скрипти, коли в нас зʼявлялися інші встановлені ігри та всяке таке. Звідти все й покотилося. Мій брат вступив до університету на компʼютерну інженерію, і я знову такий: якщо він це робить, то й я буду. Тож я почав писати на C, коли мені було 9. Я писав... Visual Basic 6 у старшій школі. У мене був Palm Pilot, і я писав різні програми на Palm Pilot у старшій школі. Мій учитель математики був дуже класний. Я був в одній із тих старих шкіл... Джонатан: Це було таке собі... памʼятаєте, вони намагалися випустити щось на кшталт прототипу iPad, і кілька людей його отримали, і там була така собі писанина ручкою. І всі вважали це суперкрутим, бо воно виходило з кінця, і було таке «зуп», і потім можна було по ньому тапати. Воно було таке... не те... Я завжди це памʼятаю, бо потім почав виходити iPad, і всі казали: а, зарано. Palm Pilot був трохи попереду часу, розумієте, що я маю на увазі? Айзек: Він був чудовий десь із десятиліття, але так, там був той palm Graffiti, яким треба було вводити текст. Є маленький майданчик для введення, і треба було писати символи, але вони були ніби на основі абетки. Тож A була просто трикутником, а F — ніби прямий кут. Так, мій шкільний учитель математики сказав: слухай, якщо ти написав програму, то цілком можна нею скористатися на контрольній. Тож я писав програми для Palm Pilot у старшій школі, що було дуже класно. Я вступив до університету на компʼютерну інженерію. Люди говорили про скриптові мови. Я не дуже розумів, що це таке, тож навмання взяв Perl. А потім закінчив аспірантуру, і мене найняв Google. 2013 року мене перевезли зі Східного узбережжя до Каліфорнії. І саме тоді я взявся за Python, десь десятиліття тому. І Python був моєю основною мовою останні десять років. Я працював у Google, тож мій стиль зазнав великого впливу стилю Google. Ось чому я переважно так і писав. А потім десь... Чотири роки тому, десь у 2018-му, Google почав просувати мову Go всередині компанії, і тоді я взявся за Go. Джонатан: Клас. Айзеку, коли ви говорите про стиль Google, чи було там чітке відчуття, що ось це - правильний спосіб, чи це радше щось таке... як воно... розкажіть трохи докладніше, бо це цікаво. Айзек: Стиль коду не стільки про те, як правильно, скільки про єдиний однаковий спосіб, якого всі мають дотримуватися. Кажуть, що добрий компроміс або добра угода - це угода, від якої ніхто не задоволений. Ніхто не зовсім задоволений цим стайлгайдом, але поки всі його дотримуються, код має однаковий вигляд. Це означає, що будь-хто може взяти будь-який фрагмент коду в кодовій базі Google і щось у ньому змінити, і поки він дотримується тих самих настанов зі стилю, код усюди однаковий, і не треба думати: о, ця кодова база використовує відступ у чотири пробіли, а ця - у два, або тут така конвенція найменування, а там інша. Усе в усій кодовій базі зроблено однаково. Ніхто не задоволений жодною з цих домовленостей. У кожного є свої ділянки, де він хотів би, щоб було зроблено інакше, але якщо є задокументований стайлгайд, який загальнодоступний, можна просто загуглити «Google Python style guide», і там написано, як ми пишемо код у Google. Поки всі дотримуються цього посібника, код усюди має дуже однаковий вигляд, і це справді приємно: можна відкрити будь-яку кодову базу, і вона має такий вигляд, ніби жодних сюрпризів немає, мовляв, о, тут би написали інакше. Джонатан: Може, саме тому Go так добре вписується в цей контекст? Бо він відформатований і все таке: ось так, і все. Вплив Google тут точно відчувається. Айзек: Так, я не знаю, наскільки на Роба Пайка вплинув підхід Google і наскільки він сам вплинув на підхід Google. Не певен, що з чого випливло, але Go точно виводить це на інший рівень, де... Там навіть більше... як і з Python, є різні стилі, і люди налаштовують свої лінтери, щоб ті приймали різні речі. Наприклад, усередині Google у Python використовують відступ у два пробіли, бо там багато глибоко вкладеного коду і не хочуть отримувати величезну стіну з пробілів. Назовні більшість людей використовує чотири пробіли, і це ніби записано в документації Python. Але так, коли справа доходить до Go, вони просто вивели це на інший рівень і вирішили: сама мова має і форматування. Є лише один спосіб форматувати. Немає жодних онлайн-дебатів про те, який спосіб правильний. Є лише один спосіб. Джонатан: Це заощаджує страшенно багато суперечок туди-сюди. Скажімо так. Так. Тож це добре. Айзек: Так. Джонатан: Тож, гаразд, коли ви почали працювати в Google, ви зовсім не знали Python, чи трохи пробували, чи це був досить легкий стрибок? Бо з ваших слів виходить, що ви влаштувалися в Google, а потім: окей, клас, вчи Python, і вперед. Айзек: Саме так. Гадаю, до того як я прийшов у Google, я ніколи не писав на Python. Я писав на Perl рік чи два. Здається, на той момент я вже кілька років писав на Perl. Це була моя перша робота на літо. Це зовсім інша історія. Я почав писати на Perl за шість років до того, як прийшов у Google, тож на той момент писав на Perl чимало. Писав трохи на Bash, тож зі скриптовими мовами був знайомий. Але на Python не писав ніколи. Та коли ми вже трохи покопирсалися в достатній кількості мов... Крива навчання трохи менш стрімка, коли ми беремося за ще одну мову, бо більшість конструкцій ми вже бачили, і це лише трохи інший синтаксис, трохи інший набір інструментів. Але багато в чому все те саме, тільки трохи інакше, інакше написане. Конструкції зазвичай досить схожі. Тож коли ми вже опанували чотири мови, узятися за пʼяту - це таке: о, тут просто трохи інакше написано. Джонатан: Так, так. Це цікаво. Отже, ви трохи посміялися, згадуючи свою першу роботу, ще після школи. Тож чи завжди ви були на кшталт: я буду займатися інженерією, я буду займатися компʼютерними справами? Чи це завжди було усвідомленим рішенням, чи просто так сталося, що це місце, де я природно почуваюся на своєму місці, мені це подобається, і все. Як це... Айзек: Мабуть. Я дуже намагався йти слідами брата. Він вступив на компʼютерну інженерію. Він почав програмувати, коли я був дитиною. Я за ним слідував. Я програмував із дитинства. Він пішов на компʼютерну інженерію, і це було те, знаєте, я хотів робити те саме, що й він, а ще мені страшенно подобалося програмувати й усе таке. Тож із того часу, як я пішов у старшу школу, а брат уже вчився в університеті, я знав, що хочу опинитися саме там. Джонатан: Тож він на кілька років старший за вас, і схоже, що він мав величезний вплив на вас як на особистість. Скільки у вас ще братів і сестер? Чи він був для вас найкращим у світі? Айзек: У мене восьмеро братів і сестер, але саме з ним я добре ладнав. Він один із... здається, з деякими я ладнаю краще, ніж з іншими. Коли в сімʼї восьмеро дітей, завжди є різниця. З ним я ладнав досить добре. Ми схильні думати багато в чому схоже. У нас схожі інтереси. Ми могли годинами фанатіти від компʼютерів. І досі можемо. Його дружині не подобається, коли це стає розмовою за вечерею. Вона каже: ніякої роботи за столом. Ми просто весь час фанатіємо від програмування й говоримо про нього. Складно сказати, скільки тут було того, що я просто хотів його копіювати, а скільки - того, що в нас просто схожі інтереси. Зараз у нас точно схожі інтереси. Не знаю, скільки тут від природи, а скільки від виховання. Не можу сказати, скільки в цьому того, що я його копіював, а скільки - того, що в нас просто схожі інтереси. Але з огляду на те, що я йшов його слідами з раннього віку, я йшов, а він певною мірою прокладав шлях, і я цим шляхом ішов. Джонатан: Так, це справді класно. А де він зараз? Просто цікаво, він на Східному узбережжі? Айзек: Він досі на Східному узбережжі, працює в IT. Ми недовго працювали в одній компанії. Джонатан: Так, гаразд, клас. Тож ось так. Це класно. Мені просто було цікаво запитати. Тепер, одна з речей... ви дуже активно долучалися до когорти, яку ми щойно провели. Отже, остання навчальна когорта, особливо з Go, ми проводили 30-денний марафон із Go... як... а ваша участь в Exercism раніше була більше в супроводі треків, але, як я розумію, також чимало наставництва. Тож як вам такий поділ? Тобто як ви натрапили на Exercism і які різні аспекти вам подобається вносити? Айзек: Я спочатку натрапив на Exercism, бо намагався знову вивчити Haskell. Я проходив у Google курс Haskell 101, який був досить цікавий. А потім подумав: о, треба приділяти цьому більше часу. І це відійшло на другий план. А потім я спробував повернутися до цього. Джонатан: і побачимося наступного разу. Айзек: З будь-якою мовою, як на мене, найлегший спосіб її вивчити - це насправді нею писати. Найлегший спосіб нею писати - це мати мету, для якої ми нею пишемо. Я не знайшов доброї мети, для якої писати на Haskell, і це робило його засвоєння справді складним. Але я знайшов Exercism і подумав: о, це може допомогти мені більше писати на Haskell. Ось так я спочатку й натрапив на Exercism. Коли я там опинився, то подумав: о, тут є трек з Python, трек з Bash і купа вправ. Тож я пірнув у кролячу нору. Джонатан: І ви пірнули в кролячу нору. Айзек: Так. Я почав розвʼязувати вправи на Python. Почав розвʼязувати вправи на Bash. Зробив кілька вправ із Go. Коли зʼявився GoHort і я переглядав деякі зі своїх попередніх розвʼязків, то побачив, що багато з них було надіслано три роки тому. Тобто я спершу зареєструвався на треку Go ще 2019 року й тоді розвʼязав чималу частину тих вправ. А потім на той момент я вже десять років писав на Python. Тож я почувався досить впевнено, долучаючись як наставник із Python, і саме на цьому я проводжу більшість свого часу з вправами нині. А потім я почав надсилати PR, pull requestʼи до треку Python, бо там були речі, які були недоречні. А потім почав долучатися до треку Bash. І я не зовсім певен, як це сталося, але від надсилання виправлень до треку Bash я дійшов до того, що став мейнтейнером Bash. Джонатан: Отак усе просто. Тобто це таке: обережно з тим, на що ми підписуємося, еге ж? Айзек: Так, а потім Гленн створив трек Ock, і я подумав: о, я знаю Ock, мені подобається Ock, давайте я теж долучуся. Тож я допоміг наповнити трек Ock вправами. Не зовсім певен, але, здається, три роки тому, коли я побачив вправи з Go, я пройшов весь трек, і потім хтось із наставників сказав: о, ти завершив усі вправи, може, тобі варто стати наставником. Я недостатньо... я не пишу на Go так часто, так регулярно, щоб почуватися достатньо впевнено для наставництва з нього. Тож я не був по-справжньому наставником із Go. Але коли я долучився до GoHort і там було чимало людей, які хотіли наставництва, я подумав: о, мабуть, я міг би записатися наставником на цей місяць і там допомогти. Але насправді я нещодавно долучився до GoHort як студент. І потім я, здається, переповзу з відділу студентів. Джонатан: Я щойно сам переповз зі студентів, мабуть. Стежте за тим, на що ми підписуємося. Кажу вам, схоже, вимальовується закономірність: ми підписуємося на одне, а зрештою стаємо чимось іншим. Але це справді класно. Гаразд, тож коли ви наставляли студентів саме на треку Go, які найпоширеніші речі ви бачили? Тобто на треку Go, ймовірно, було чимало досвідчених розробників, які його проходили, люди з певним досвідом у розробці. Але що ви помічали такого, що думали: окей, ось ці речі трапляються часто, на них люди ніби застрягають? Чи були якісь закономірності, які ви помітили: окей, це поширене, це досить... постійно зʼявляється, можливо. Айзек: Не знаю. Більшість наставництва, яке я бачив, стосувалося людей із завершеними рішеннями. Люди частіше за все розвʼязують вправу, перш ніж іти по наставництво. Тож у більшості взаємодій люди зазвичай не застрягають. Е-е, тобто переважно, знаєте, вони успішно завершили вправу, і тоді багато зауважень зводиться до: е-е, знаєте, чи є ефективніший спосіб це зробити? Чи є кращий алгоритм? Е-е, одна з поширених речей, яка трапляється надто часто, - це побудова рядків тексту (англ. string). У таких мовах, як Go і Python, де рядки тексту незмінні, велика кількість конкатенації рядків тексту не дуже ефективна. Тож багато чого зводиться до: слухай, це можна побудувати за допомогою масиву, а потім зʼєднати рядки тексту, або в Go можна скористатися string builder. Тож багато чого, знаєте, штовхає їх до кращих, мабуть, практик і закономірностей. Дякую за перегляд. Джонатан: Гаразд, це класно. Це захопливо. Тож зараз, як проходить ваш звичайний робочий день, і де в ньому місце для розробки? Скажімо, ви вже давно в IT, як проходить день? Які є виклики? Що вам подобається в роботі зараз? Айзек: Я працюю SRE-інженером, що приблизно схоже на DevOps. Там є трохи адміністрування систем. Останнє десятиліття я ношу пейджер у режимі чергувань on-call. Тож мій звичайний день багато залежить від того, чи це мій тиждень чергування, чи ні. Коли я на чергуванні, це багато спостереження за пейджером, є черга тікетів, черга підтримки, треба переконатися, що будь-які збійні процеси чи проблеми діагностовано й виправлено. Тож це приблизно один тиждень із шести, або скільки там зараз у команді. А решту часу я на чергуванні. Джонатан: Угу. Айзек: Я багато часу вовтужуся з автоматизацією, тож багато чого зводиться до того, щоб виявляти громіздкі процеси й робити їх менш громіздкими. Може бути, що... Може бути причина, чому це так відбувається, але загалом я помічаю, що поки щось не почне, знаєте, коли трапляється оця проблема, нам доводиться запускати, знаєте, ми вручну лагодимо, виконуючи оці команди й оні команди, і виникає питання: а чому ми запускаємо ці команди вручну? Чи можемо ми написати скрипт на Python, який зробив би все це за нас? Або чи можемо ми вдосконалити інструменти, щоб вони не збоїли й самі ловили цю проблему? І багато чого зводиться просто до спроби покращити щоденність того, як ми керуємо системами, щоб люди були задіяні менше або не мусили бути, знаєте, настільки глибоко задіяні, щоб усе працювало гладко. Джонатан: Тож чи подобається вам шукати оці маленькі ділянки, де щось можна оптимізувати? Яка частина вашої роботи - це реагування на щось, а потім із цієї реакції виникає: о, клас, це нагода, а яка - проактивний пошук таких маленьких ділянок? Який зазвичай баланс? Айзек: Мені подобається автоматизація, це, мабуть, те, що я люблю найбільше у своїй роботі: можливість автоматизувати речі. Це не завжди реакція. Тобто реакція може означати, що щось зламалося, а може бути й таке: о, знаєте, люди запускають оцю команду, і я виявив, що є команда, яку ми схильні копіювати й вставляти, чи можна її покращити? Коли я бачу, що хтось щось змінює в якійсь інструкції з експлуатації чи покращує десь команду, я думаю: о, ця команда досить неохайна, чи можна просто переписати її з нуля? І, звісно, уваги до цього забагато, це треба збалансовувати з привабливістю, треба менше великих слів, краща мова, і все таке. Треба братися за це, намагаючись це робити. Чесно кажучи, усе в моїй роботі справді підходить, якщо подумати. Тож я дуже вмотивована людина. Не знаю, моя робота, здається, є скрізь, але в будь-якій роботі, яку я люблю, я вбиваю для себе час, і вона там лише для того, щоб спробувати... Джонатан: можна сказати, виробництво Айзек: Рефакторинг, помічати, що є інструменти, знаєте, громіздкі у використанні, і вирішувати переписати їх або написати до них обгортки. Я побачу, так, я побачу зміни в коді якоїсь великої складної програми і подумаю: о, ця програма - суцільний безлад. Чи можна зайти й переписати її чи відрефакторити? Або створити нове... тобто це не завжди рефакторинг, іноді це просто створення нових інструментів. Отак: у нас є процес із 20 кроків, давайте я запакую все це в програму. Багато чого справді зводиться до того, знаєте, що я мушу якось це виявити. Іноді я виявляю це, бо мені доручили виконати набір завдань, і тоді я думаю: не хочу запускати це вручну. Іноді я виявляю це просто тому, що зауважую: шукаю якийсь фрагмент коду десь і бачу: о, он той інший код, який супроводжує інша команда, зроблений погано, давайте я його відрефакторю або використаю сучасні бібліотеки, чи щось таке, так. Джонатан: Тож багато чого... просто вміння це побачити. Тож наскільки вільні у вас руки? Чи маєте ви досить багато свободи, щоб ходити довкола й налітати, щось підправляти? Тобто це, мабуть, досить весело, досить приємно. Айзек: Мій менеджер дає мені багато свободи, і це справді приємно. Не знаю, скільки цього походить із... я зараз не в Google, але не знаю, скільки цього походить із мого досвіду в Google. У Google люди були дуже відкриті до того, щоб втрутитися й сказати: о, я помітив, що інші, знаєте, я випадково користуюся цією бібліотекою, і її можна було б у такий спосіб покращити. Дозвольте я це виправлю. Е-е, я дуже-дуже недовго працював у стартапі, де культура була зовсім іншою, набагато менш відкритою. Е-е, і в тому стартапі люди дуже берегли свої кодові бази, і те, щоб інші люди щось змінювали в їхньому коді, не дуже віталося. Тобто я казав: о, у цій кодовій базі є проблема. Дозвольте я це зміню... для цієї кодової бази. Джонатан: Так, відчепіться. Але це цікаво, бо... ми припускаємо, що стартап був би набагато більше в дусі: ну, просто зробіть роботу й зробіть її якнайдешевше, знаєте. Але насправді, можливо, Google набагато краще міг із цим упоратися як із концепцією. І це... вибачте, я щойно ввімкнув світло, бо в нас... зараз світла немає, для всіх, хто слухає, у Кейптауні час від часу відключають електрику. Щойно я сам себе засліплюю, але нічого. Але це цікаво: повертаючись до того моменту про культуру стартапів і про те, як люди, за іронією, набагато більше переймаються тим, щоб володіти чимось, і потім, можливо, трохи самі собі шкодять, знаєте? Айзек: Так, не знаю, чи бути стартапом обовʼязково добре поєднується з відкритою робочою культурою, де все ґрунтується на грі. У Google чимало з того, що робили люди, було для них грою, бо їм подобалося те, що вони роблять. Вони роблять це, бо їм це подобається. Вони були дуже приязні до цього, дуже відкриті щодо цього. Деякі інші робочі культури менше про те, щоб обовʼязково робити речі, бо вони нам подобаються, і більше про те, що це просто робота, або це мій код, і я знаю, як він працює. Не хочу, щоб інші люди в нього лізли. Я не зовсім певен, з чого складаються такі зміни робочої культури. Але Google дуже плекав відчуття, що кожен має доступ до всього коду. Кожен має право вносити в нього зміни. Робімо те, що вважаємо за правильне. А тоді в моїй нинішній роботі з моїм нинішнім менеджером він теж дав мені багато свободи. Він каже: звісно, якщо ви знайшли щось, що треба виправити, то йдіть і виправте. Якщо знайшли ділянку, яку можна покращити, то я не стану вам на заваді. Скажіть, чим я можу допомогти. Тож я значною мірою сам керую тим, що роблю, і просто, знаєте, якщо я знаходжу ділянку, де думаю: о, я міг би зробити це краще, він каже: так, класно, беріться за це. Джонатан: Гаразд, гарно. А ви... компанія базується на Східному узбережжі, чи правильно я розумію, що ви насправді працюєте віддалено? Здається, я памʼятаю, як ви казали, що збиралися переїхати, а потім вдарив COVID, і все це якось... ця історія закінчилася. Як вам віддалена робота, відстань, різниця в часі, усе таке? Це на вас якось впливає? Айзек: Мені, звісно, бракує офісу й живого спілкування з людьми. Е-е, тож ось так. Е-е, щодо різниці в часі, моя команда дуже, е-е, терпляче ставиться до різниці в часі. Я на три години позаду решти своєї команди. Е-е, є короткий щоденний стендап, який я пропускаю. У нас є два щоденні стендапи для двох різних продуктів. Е-е, тож перший я справді пропускаю, і моя команда дуже добре до цього ставиться, іде назустріч, і всередині ми багато користуємося Slack. Тож вони дуже добре ведуть таку щоденну гілку в Slack із проблемами, що виникають, щоб я міг бути в курсі, і якщо їм щось потрібно, вони мене пінгують. Е-е, я, я намагаюся відповідати якнайшвидше, е-е, і намагаюся якомога швидше вранці все це розібрати. Тож, е-е, це трохи таке... різниця в часі не ідеальна, але й не... нам вдавалося досить добре з цим давати раду. Е-е, а з іншого боку, є й те, що вони знають: у них у команді є хтось, хто не спить трохи пізніше. Тож у мене були колеги, які, знаєте, коли на Східному узбережжі було б 18:00, казали: о, ось це зламалося. Гей, Айзек на Західному узбережжі, знаєте, Айзек міг би мені з цим допомогти, бо там лише 15:00. Е-е, тож воно працює в обидва боки. Е-е, так, і... Джонатан: Так. Айзек: Я, так, тож я пішов із Google 2019 року, вибачте, 2020-го. Співбесіду проходив 2019-го. Мав приєднатися 2020 року в травні. Планував переїхати в серпні, квітні 2020-го, але почався COVID і все таке, офіс закрили, і це було багато всього на кшталт: о, офіс ще не відкрито. Він переїде, щойно відкриють офіс. А потім, через два роки пандемії, офіс знову почали відкривати. І я подумав: знаєте, я вже не певен, що хочу переїжджати. Нью-Йорк звучав дуже захопливо, але там були всі ці відкриті заклади, знаєте, майданчики й усе таке. Але тепер, коли є пандемія, багато з цього вже не звучить так захопливо. Тож я перейшов на віддалену посаду після двох років роботи віддалено. Джонатан: А ви людина міста, села чи щось посередині? Тобто як? Бо Нью-Йорк - це місто. Це на 100% місто. Тобто тут немає двох думок. Розумієте, що я маю на увазі? Тож це був би досить серйозний переїзд, мабуть. Так. Хоча все одно захопливо. Айзек: Я виріс у великому мегаполісі, тож міське життя мені не чуже. Зараз я живу в передмісті. Люблю ходити в походи й кататися на велосипеді, і намагаюся бувати на природі так часто, як можу. Тож мені подобається жити в передмісті поблизу чудових туристичних і велосипедних маршрутів і всього такого. Переїзд до Нью-Йорка був би серйозною зміною. Але я вважаю, що час від часу змінювати обстановку - не погано. І якщо мені не сподобається життя в Нью-Йорку, я завжди можу переїхати. Джонатан: Це не так уже й складно зробити. Але це класно. Тож зараз ви, напевно, поправте мене, якщо я помиляюся, проводите багато часу перед екраном, у якомусь офісі, вдома, чи як там. Тобто чи виходите ви щодня кудись... як ви балансуєте весь цей світ за екраном із... чи є у вас такий щоденний час, коли ви собі кажете: треба вийти й просто бути на вулиці, зробити щось інше. Айзек: Хотів би. У деякі дні, місяці чи роки в мене виходить краще, ніж в інші. 2020-го я досить добре тримався й катався на велосипеді майже щодня. На більшість вихідних я таки буваю на природі. Намагаюся ходити в похід раз на тиждень. Не завжди добре виходить, але я йду в похід. Залежить від сезону. Я в Каліфорнії. Деякі тижні бувають надзвичайно спекотними. У нас щойно була хвиля спеки, коли було... понад 40 градусів за Цельсієм десь із тиждень підряд. Тож вибратися на вулицю стає складно. Ми в Каліфорнії, де бувають пожежі, тож, знаєте, іноді минає тиждень чи два, коли якість повітря надворі не зовсім безпечна для дихання. Тож деякі тижні бувати на вулиці в Каліфорнії складно. А сидіти в приміщенні під час пандемії теж складно. Тож точно є тижні, коли я набагато більше в приміщенні, ніж в інші. Але мені подобається бувати на вулиці. Бувало так, знаєте, що я по шість місяців поспіль ходив у походи, принаймні раз на два тижні. Джонатан: а потім. Айзек: Бували в мене періоди, коли я ходив у похід із ночівлею раз на місяць, знаєте, шість місяців підряд. Тож є періоди, коли в мене виходить краще, а є періоди, коли я просто сиджу вдома два тижні підряд. Джонатан: Так, це класно. Тож, Айзеку, що далі... Може, не знаю, може, ви не заглядали так далеко наперед, але як для вас мають минути наступні пʼять років? Чи є у вас якесь уявлення, чи, може, у вас є таке бажання: започаткувати власну справу, зробити щось таке, чи ви просто: а, насолоджуюся життям і тим, де я є. Айзек: До переїзду на Західне узбережжя мені здавалося, що я краще уявляю, як складеться моє майбутнє. Але те, що все це перевернулося з ніг на голову, навчило мене, що справді важко передбачити, що станеться наступного року, а вже про пʼять років годі й казати. Я цілком задоволений. Я зовсім недавно змінив роботу. Змінив роботу десь два, два з половиною роки тому. Мені досить подобається моя нинішня робота, тож я не бачу, щоб це найближчим часом змінилося. Я був би радий залишитися на тій самій роботі наступні два-три роки, а то й пʼять. Мені дуже подобається жити в Каліфорнії. Мені подобається мати змогу ходити в походи, кататися на велосипеді, ходити в похід із ночівлею та все таке. Тож я не бачу, щоб я найближчим часом покинув Каліфорнію. І не бачу, щоб найближчим часом покинув ту роботу, бо мені там справді дуже подобається працювати. Тож я цілком задоволений, і жодних великих... я не планую жодних великих змін, але справді важко щось сказати. Джонатан: Це класно. Гаразд, тож у мене є ще кілька запитань, і мені цікава ваша думка щодо них. Перше, мабуть, не те, до якого я вас готував, але таке... Тож якби ви... Якби до вас в офіс зараз зайшли 10 людей, 10 цілковитих незнайомців, які зовсім не зналися б на програмуванні, і серед них були б, скажімо, арфіст, садівник і хтозна-хто, які б ви дали їм три головні поради, щоб навчитися починати програмувати? Тобто якщо звести все до: робіть це за будь-яку ціну, якими були б ці поради? Айзек: Отже, порада номер один, яку я маю, - спробувати знайти проблему, яку можна розвʼязати за допомогою програмування. Тоді в нас є конкретний проєкт, який дає мотивацію і конкретну мету, що штовхає вперед. Починати вчитися програмувати надзвичайно складно; як і будь-яка інша навичка, навчання програмуванню вимагає чималої наполегливості чи завзяття. Просто треба не кидати. Спочатку може бути дуже складно. Може бути дуже прикро. Без чогось, що штовхає вперед, дуже легко все покинути. Тож якщо є така можливість, дуже допомагає мати щось, що ми справді хочемо зробити за допомогою програмування. Це ніби все з одного сузірʼя порад. Просто треба... треба не кидати. Дуже допомагає бути терплячими до себе й усвідомлювати, що ми опановуємо нову навичку і будемо багато разів зазнавати невдач. У мене були люди, які намагалися вчитися програмувати й засмучувалися. Вони казали: о, я зазвичай добре все засвоюю, а тут одразу не виходить. І я відповідав: так, невдача - частина процесу навчання. І якщо нам некомфортно зазнавати невдач, опановувати нові навички може бути справді важко. Треба бути терплячими до себе й до процесу і просто не кидати. Джонатан: Це корисно. Тобто я б сказав, що це таке... я лише нещодавно зрозумів, як працюють методи. І це просто прийшло з досвідом, бо багато знань... ну, коли люди про щось говорять, у процесі навчання особливо багато чогось, що вважається само собою зрозумілим. Тож раптом усі кидаються оцим словом «методи». Я такий: що взагалі таке метод? Що тут відбувається? І лише завдяки когорті з Go я почав розуміти: о, методи працюють ось так. Це було майже як осяяння, але мені довелося зануритися в це середовище й цю термінологію так надовго, що воно ніби просочилося всередину. Я б сказав, що одним із найбільших моїх усвідомлень було те, що не треба намагатися вивчити все одразу, а просто потроху гризти один простий концепт. Бо все так сильно повʼязане між собою, що зрештою ти можеш почати складати докупи ментальну модель, а це дуже важливо. Тож це чудовий маленький інструмент. Я розповім людям про це, про пораду Айзека: бути терплячими й добрими до себе і гризти потроху. Це справді класно. Гаразд. Айзек: Це, мабуть, дуже сильно під впливом того, як усе влаштовано в Google. У Google є такий концепт - readability, коли код має бути легким для читання. І багато з того, що я роблю, коли пишу код, зводиться до того, що я хочу, щоб мій код було просто читати й розуміти. І я бачив багато коду, особливо в коді... там багато уваги приділяється ефективності, бенчмаркам і тому, щоб зробити код швидшим. І часто я визнаю, що спосіб, у який я це роблю, не обовʼязково найефективніший, але якщо мені здається, що код легше читати, я віддам перевагу неефективному, але легкому для читання коду над надзвичайно ефективним. Тож, знаєте, є такий відомий вислів, не певен, кому саме він належить: що передчасна оптимізація - корінь усього зла. І коли люди кажуть: о, а як це зробити ефективнішим? - я питаю: а йому справді треба бути ефективнішим? Чи воно вже в продакшні й створює проблеми з ефективністю? Чи воно надто повільне для продакшну? Якщо насправді не було проблеми з кодом у продакшні, де йому потрібно бути ефективнішим, то навіщо робити його ефективнішим? Так його легше читати. Легше підтримувати. Інші люди можуть зрозуміти, що відбувається. Навіщо відмовлятися від добре написаного коду, з яким легко працювати й легко підтримувати, щоб зекономити якийсь такт CPU? Хіба електрика й процесори такі дешеві, що нам не треба оптимізувати код? Просто щоб оптимізувати. Джонатан: Так, це завжди смішно, бо це одна з тих речей, коли я такий... наша програма скомпілювалася й виконалася за 30 мілісекунд. А вони: о, але ми скоротили це до 20 мілісекунд. Я кажу: та я не можу вам сказати. Не можу сказати, що було швидше, а що повільніше. Це й так здається швидким. Тож, гадаю, це слушна думка. Певен, мені було б приємно читати ваш код, але це чудово. Айзеку, щиро дякую за ваш час, за те, що прокинулися рано, і за те, що мирилися з відключеннями електроенергії в Південній півкулі. І за те, що я сиджу в цілковитій темряві, певен, для вас це, мабуть, досить комічно. Але щиро дякую за ваш час. І з нетерпінням чекаю на зустріч із вами на майбутніх навчальних когортах, у наставницьких стрімах і в усьому такому. І дякую за весь внесок, який ви робите в Exercism і загалом. Дуже ціную це. І так, ще раз щиро дякую. І побачимося за секунду. Ні, завжди раді. Бувайте, Айзеку. До побачення. Айзек: Ще раз щиро дякую. Нема за що. Бувайте, Айзек.
Слухаймо, навчаймося й надихаймося від учасників нашої спільноти.