Габріель Нелле живе на півдні Німеччини поблизу Баден-Бадена. Він ділить квартиру зі своєю дівчиною та двома котами. Він навчався на вчителя математики та німецької мови в університеті Зігена, який закінчив у 2008 році
Jonathan: Що ж, усім привіт. Мене звати Джонатан. Радий бути ведучим цього вечора. У мене в сьогоднішньому ефірі гість, запросити якого для мене велика честь. Хочу представити вам Габріеля Нелле. Габріель — один із наших основних контрибʼюторів в Exercism. Він дуже активно залучений саме до треку Go, але незабаром він сам розповість про себе докладніше. Але для початку, Габріелю, дуже раді, що ви з нами. Дякуємо, що долучилися, і сподіваємося, що вам буде так само цікаво, як і всім слухачам сьогоднішнього ефіру. Тож, Габріелю, передаю вам слово. Розкажіть трохи, звідки ви родом і як ви опинилися там, де ви зараз?
Gabriel: Так. Привіт. Я Габріель. Дякую, що запросили. Отже, я з Південної Німеччини, там я виріс, і там я зараз, не в тому самому місці, але все ще Південна Німеччина. Так. Я ріс... почнімо з того, що я людина початку вісімдесятих, я народився 81 року. І, гадаю, моя історія починається десь у кінці вісімдесятих, коли батько приніс додому свій перший компʼютер. Тож, думаю, саме там починається історія. Принаймні текстова історія.
Jonathan: Так.
Gabriel: На ньому стояла MS-DOS, точно не скажу, яка саме версія. Гадаю, версія була старіша, ще й тому, що, якщо я правильно памʼятаю, батько приніс його додому, бо на тій фірмі його просто викидали, а їм привезли нові компʼютери, тож він зміг забрати той додому. І так, це було моє перше враження від компʼютерів. MS-DOS. Це цікаво й дивно.
Jonathan: Ті, ті лінії, кольорові лінії на чорному екрані? Це було гарно?
Gabriel: Так, це було просто біле на чорному. Так, по суті. І, по суті, здебільшого це був просто командний рядок, з яким я й познайомився першим. А потім пізніше, разом із батьком, десь у 90-му, близько 1991 року, батько показав нам наші перші цикли for у QBasic. Мені тоді було років 10. А ще було вивчення слів. Тож батько купив програму для вивчення слів, і вона була під певну систему, і, здається, там була мишка, щоб клікати, але я не на сто відсотків певен. Можливо, це було пізніше. Тож це точно були ті часи, коли я вперше почав займатися компʼютерними справами, і я кілька разів його зламав. Батькові кілька разів доводилося його лагодити. Тож мені точно було цікаво про це дізнаватися. Не так, щоб я сів і сказав собі: мені треба про це дізнатися. Мене дуже цікавило й захоплювало розуміння того, що з ним можна робити.
Jonathan: А ваш... ваш батько, він працював саме з компʼютерами, чи він просто був у бізнесі й так сталося, що приніс компʼютер додому, чи була якась конкретна причина, чому він його приніс? Компʼютерні причини чи технічні?
Gabriel: Так, він, власне, за фахом електрик, цього він і вчився. Але тоді він працював у Bosch, в електронному відділі, де розробляли нові чипи чи щось нове для автомобілів. І там, звісно, були компʼютери, і він доволі рано став відповідальним за все, що повʼязано з компʼютерами, мережевими принтерами і всім таким. Ось так він у це й занурився. Він, по суті, був тим, хто робив усе, щоб там усе працювало. А оскільки в нього не було докторського ступеня, як у більшості інших у його відділі. Тож він, власне, займався такими справами й багато про це дізнався, про компʼютери. Так.
Jonathan: Так. Гаразд, круто. Вибачте, я просто втрутився. Отже, ви розповідали, що гралися з ним, кілька разів його ламали. Це було ваше знайомство з компʼютерами, залізом і всім таким. А що далі? Що сталося потім, із того моменту? Як усе розвивалося?
Gabriel: Тож, гадаю, наступним великим кроком було те, що я отримав власний компʼютер, це сталося, сказав би, років пʼять чи шість потому. Коли я був молодим. Дорослі.
А я дедалі більше цікавився компʼютерами, а ще в школі в нас були якісь заняття. Я почав писати домашні завдання на компʼютері й усе таке. І це вже ті часи Word, MS Word та подібні. І, сказав би, одного дня все почалося: батько завжди виконував якусь роботу з літературою для нашої церкви. Ми виросли в дуже маленькій церкві, і в нас була ця література, яку ми фактично використовували, і батько оцифровував або допомагав оцифровувати цю літературу. Спочатку це був побічний проєкт, повʼязаний із даними. Це фактично стало моєю першою роботою на повну зайнятість. Робота на. На... дайте подумати, чи можете ви на це подивитися? Робота на видавця в США, який відповідав за цю літературу.
Jonathan: Мм.
Gabriel: По суті, батько запитав мене: так, у мене є купа макросів. Я написав їх на якомусь євро-скрипті, який, по суті, базувався на версії Word, можна сказати. До-Word, і тепер я хочу перейти на Word, і мені потрібні всі мої макроси у Word. Я, власне, сказав: гаразд. Гаразд. Ось так я почав програмувати в Word. Тобто Visual Basic for Applications; спочатку можна було записати макроси. Можна було подивитися на код, побачити, що він робить, і покращити його, і, по суті, так удосконалити макроси, що вони вже могли, власне... Раніше це було так: ставиш курсор ось тут, натискаєш клавішу, і він робить щось у наступних кількох рядках. А врешті-решт він обробляв увесь документ Word згори донизу, повністю автоматично. І, по суті, це стало входом у безліч макросів, які я написав для цієї справи. Це наробило чимало галасу, і люди, які дали батькові таке завдання на вільний час, сказали: ого, це чудово. Зробімо більше й автоматизуймо це дедалі більше. Так. Ось так я й потрапив у
Jonathan: нього, ви заощадили батькові багато часу
Gabriel: Так.
Jonathan: у цьому сенсі, у молодому віці,
Gabriel: Можна й так сказати. Отже, написання макросів у Word, а пізніше в Excel. Я написав систему на основі Excel... для магазину, для невеликої крамниці. Це була маленька крамниця органічних продуктів тощо, і, по суті, вони записували всі ціни, а потім рахували їх у голові або на папері. Спочатку це працювало саме так. І я написав для цього систему зі скануванням штрихкодів і з вагами, де можна було покласти... зважити щось, отримати чек, а потім відсканувати його, коли йдеш платити, і все таке. Тож, по суті, усе це було на основі Excel. Отже, так. Хоча я точно зробив би це інакше. Excel був одночасно і базою даних, і друкарською машиною. Я форматував усе в Excel, на аркуші Excel, і потім це друкувалося на принтері чеків, і все таке. Звісно ж, так. Я вважав, що це був початок моєї карʼєри, так би мовити.
Jonathan: Скільки вам було, коли ви все це робили, і що потім із цього випливло? Це було до університету, десь у старших класах, і чи це, так би мовити, суттєво вплинуло на ваш карʼєрний шлях?
Gabriel: Так, усе це було до університету. Система для крамниці — це було, коли мені було десь 20-21, приблизно тоді я проходив цивільну службу.
Jonathan: Га?
Gabriel: Написання макросів було, коли мені було років 16. Між цим я також написав систему на основі Access для друку ярликів до листів, щоб їх можна було надсилати. Тобто адреси тощо. А потім почалося навчання, і, сюрприз, я не вчився на інформатиці.
Jonathan: Гаразд.
Gabriel: Я, власне, вчився на вчителя математики й німецької для різних вікових груп. Дайте порахувати. Вік від 10 до 20 і 19. Ось такі вікові групи. Тобто з пʼятого
Jonathan: тож ви
Gabriel: до 13 класу.
Jonathan: ваш карʼєрний шлях почав... і на чому ґрунтувалося те рішення, щось на кшталт,
Gabriel: Насправді я, мабуть, пішов би шляхом програмування, можливо, часто. Але під час цивільної служби я дізнався набагато більше, ніж просто технічні речі, сказав би. Я був відповідальним або входив до невеликої команди, яка опікувалася будинком для людей похилого віку. Можна сказати, там було кімнат 5, 5, 6. І там були різні люди, і я здебільшого відповідав за одну жінку. Їй було, може, 55, 60, і в неї був Альцгеймер. І це справило на мене велике враження, бо коли стикаєшся в такому віці з таким... можна сказати, так, їй було 60, і для двадцятирічного це звучало як старість, але мені все одно було ясно, що це може статися з будь-ким, і зі мною теж. І це викликало в мене набагато більший інтерес до соціальних сфер життя і
Jonathan: Захопливо.
Gabriel: соціальних карʼєрних шляхів. І, власне, ось у чому річ. Це, по суті, причина, чому я тоді вирішив стати вчителем. Мені хотілося писати код, але я дуже добре вмів навчати або допомагати своїм однокурсникам, особливо в школі. І математика. Математика була моєю найсильнішою ділянкою, і вона мені завжди подобалася. Так, мені завжди подобалося допомагати іншим. Покращувати їхні навички, і я завжди любив момент, коли вони раптом розуміли. Коли я бачив в очах: ось тепер вони зрозуміли. Так. І тому я, власне, став учителем.
Jonathan: О, це круто. І розкажіть мені, ви згадали про цю штуку, цивільну службу, так би мовити. У Німеччині це обовʼязково для кожного студента чи підлітка перед вступом до університету? Як це все вписується в німецьку культуру?
Gabriel: Тоді це була альтернатива, альтернатива військовій службі. Тобто або ти служиш девʼять місяців... девʼять місяців у війську, або проходиш 11 місяців цивільної служби. Такою була вимога.
Jonathan: Гаразд.
Gabriel: Для чоловіків, не для жінок.
Jonathan: Так це досі так у Німеччині?
Gabriel: Ні, уже не так. Ні. Ні.
Jonathan: Гаразд. Я знаю, що так у Швейцарії, звідки родом моя дружина. Тож просто така система досі поширена. Гаразд. Отже, ви займалися математикою й училися на вчителя, і очевидно, що програмування відігравало в вашому житті досить значну роль. Коли ж воно... тобто чи був у вас момент, коли ви такий: насправді я в освіті. Мені це подобається, але я не... але все ще є оця частина з програмуванням, яка. Активна й задіяна. Як ці дві речі збалансовувалися, викладання й програмування?
Gabriel: Як я повернувся до програмування? Так.
Jonathan: Так
Gabriel: Так. Тож під час навчання я, по суті, займався двома речами як підробітками. Одне — викладання. Я викладав у. Репетиторській агенції. Я викладав в університеті, для молодших курсів, тобто математику, здебільшого на першому й другому семестрах. І водночас я працював в IT-компанії. Здебільшого... тобто це було здебільшого на основі Access.
Jonathan: мм.
Gabriel: Отже, це була компанія, яка робила апаратне й програмне забезпечення для каршерінгу та для компаній, які мали багато автомобілів і здавали їх в оренду своїм працівникам. І так, там я, по суті, спочатку почав як автор документації, а потім вони зрозуміли, що я вмію й програмувати. Тож я швидко перейшов у сферу програмування. Так. А потім, сказав би, усе змінилося здебільшого тоді, коли почалася остання частина... це були частини навчання, коли треба було йти, потрібно було шість тижнів у школі, а потім чотири тижні тощо. І, гадаю, мені стало ясно й близько, зокрема з розмов із дуже досвідченими й дуже... дуже відданими вчителями. Що часи сильно змінилися. Учні сильно змінилися. Одна вчителька сказала мені, вона завжди викладала в пʼятому й шостому класах, і вона, по суті, розповідала мені, що пʼять років тому в неї був один учень у класі, який був проблемною дитиною в тому сенсі, що сімʼя була неповною, було розлучення або проблеми вдома, тощо. А тепер у неї таких понад 50%,
Jonathan: Авжеж.
Gabriel: І це було 10 чи 15 років тому. 2000... шість чи сім, мабуть, тобто 15 років тому. І це показало, наскільки все змінилося. І мені також було цілком ясно, що багато учнів сьогодні просто не хочуть більше вчитися. А вчитель завжди... по суті, учитель завжди останній. Хвіст усього цього. Так. Батьки, директор і учні. Вони, по суті, усі господарі вчителя. Так. Учитель завжди той, хто винен, можна сказати, чи не знаю, як це висловити англійською. Він завжди той, хто має нести всю відповідальність, але, по суті, не має жодних прав.
Jonathan: повноваження, так. Діяти. Так.
Gabriel: Так.
Jonathan: Тож чи ваше рішення? Ну, вибачте, я вас перебиваю. Продовжуйте, продовжуйте
Gabriel: Щось таке, принаймні це змусило мене багато про що подумати. І після того, як я закінчив університет, я просто знову поринув у програмування, бо один мій друг, саме він дав батькові ту роботу з літературою. Він, власне, запитав, чи не можу я допомогти йому з одним проєктом. І той проєкт, який спочатку вважався проєктом на чотири чи шість тижнів, перетворився на два з половиною чи три з половиною роки. Або три з половиною роки. Проєкт
Jonathan: на розповзання обсягу. Розповзання обсягу було справжнім
Gabriel: Так. Спочатку він попросив допомогти йому з чимось. А потім він постійно спілкувався з людиною з цього видавництва в. І видавець завжди казав: я хочу публічну домашню сторінку для цього з літературою. Я хочу, щоб люди читали цілі книжки онлайн.
Jonathan: Оце так.
Gabriel: Я сказав... одного разу я просто сказав своєму другові, він говорив із ним по телефону, і той сказав, що міг би уявити, як це робити. Мовляв, у мене зараз немає особливо чим займатися. І він сказав: о, Габріель це зробить. Ось так усе й почалося. Тож
Jonathan: Ого.
Gabriel: У мене зʼявився проєкт, так, і потім я працював над цим проєктом три з половиною роки. Вивів онлайн тисячі книжок, усю бібліотеку контенту
Jonathan: Ого.
Gabriel: індекс. Різні мови повʼязані між собою. Так, сайт досі онлайн. Це egwwritings.org. Тож якщо комусь цікаво на нього подивитися, у нього новий дизайн. Я бачив десь у грудні минулого року, вони перейшли на новий дизайн, але код під ним.
Jonathan: Все той самий.
Gabriel: Здебільшого мій, бо я бачу, бо він був здебільшого на JavaScript.
Jonathan: Так.
Gabriel: Код дуже впізнаваний, він організований інакше, по файлах, але всі різні стилі все ще ті самі.
Jonathan: Вам доведеться надіслати мені посилання, і ми опублікуємо його в нотатках до шоу у свій час. Але тепер ви... ви зробили три з половиною роки, тобто три роки цього проєкту. Ви розмістили, проіндексували все це. Ви використовували JavaScript як свою основну мову на той момент? Яким був ваш, так би мовити, технічний набір? Можна сказати, на чому ви зосереджувалися?
Gabriel: Отже, це, по суті, був великий крок — перехід від програм на базі Windows, тобто раніше це були Visual Basic і Visual Basic .NET. А тепер це був лише jQuery, JavaScript і PHP на бекенді.
Jonathan: Гаразд.
Gabriel: У нас також була домовленість, що коли я займався дослідженням, у мене була нижча погодинна ставка,
Jonathan: Мм-хм.
Gabriel: це була третина від того, коли я, власне, програмував. І так, це давало мені свободу, по суті, вчитися прямо на роботі. Так.
Jonathan: Круто. А далі, де, де. Exercism. І тепер ви робите багато речей. Чи правильно я розумію, що Go — це, сказати б, головна складова того, чим ви займаєтеся. Ви багато працюєте наставником, і ви були... ну, ви залучені до Exercism у напрямі Go і допомагаєте цій частині. Коли це почало зʼявлятися в картині, і чому це було вам цікаво? Вперед, розповідайте.
Gabriel: Так, 2016 року це була моя перша робота після того великого проєкту. Власне, ближче до кінця того проєкту я почав переходити на Go. На тій роботі я здебільшого писав трохи PHP і Python. І він дуже швидко став моєю улюбленою мовою, моєю улюбленою мовою, бо в ньому є ця простота. Він, по суті, намагається. Вирватися з того божевільного світу дедалі більшої кількості можливостей і мов, які роблять їх дедалі складнішими й заплутанішими, і дедалі більше накладних витрат для розробника, бо йому доводиться обирати, як саме це зробити. І він також має розуміти всі інші способи, якими це роблять інші люди. Тож усі ці накладні витрати, і Go раптом приніс цю тишу й це. Повернення до простоти. І це дуже швидко стало моїм номером один. І я будував прототип у тій компанії десь за пів року до того, як пішов. Бо вони хотіли перейти на Go. І спочатку, звісно, були ці початкові речі, коли спотикаєшся об те, чого не можна зробити в мові, а потім розумієш, чому немає сенсу робити це саме так, або чому краще зробити інакше. І мені було справді цікаво навчитися робити ці речі. Ось так я почав слухати подкаст Go Time. Це від Change Log.
Jonathan: Гаразд.
Gabriel: І в тому подкасті, здається, двічі була Катріна Оуен. Принаймні двічі я чув від неї, здається. Так. І ось так я почав у це заглиблюватися. Гадаю, 2017 року я зареєструвався на Exercism. Не певен на сто відсотків, довелося б уточнити.
Jonathan: Уявляю. Приблизно так, так?
Gabriel: Так, гадаю, це могла бути ще навіть перша версія, бо спочатку не було... я не отримував... я не отримував жодного зворотного звʼязку. Я зробив кілька вправ, але зворотного звʼязку так і не отримав, а сам міг давати зворотний звʼязок іншим, і давав. Але сам я його не отримував. Тож не було жодного процесу, щоб справді отримати зворотний звʼязок. І це було: хочеш — роби, не хочеш — просто залиш. Так би мовити. Так. Гадаю, це була перша версія, правда?
Jonathan: Мабуть. Тобто, гадаю, від першої до третьої версії було чимало змін.
Gabriel: Так. Так.
Jonathan: У першій зворотного звʼязку було мало. У другій версії вимагалися надзвичайно великі обсяги зворотного звʼязку, а третя десь осіла посередині, трохи, можливо, ближче до меншого. Але ні. І чи ви, чи ви брали участь у розбудові третьої версії, і як ви... так. Якою була ваша участь у цьому? Тобто мені це не зовсім зрозуміло, але хотілося б зрозуміти.
Gabriel: Може, дозвольте на один крок назад. Отже, по суті, я повернувся після другого інтервʼю. Я почув про Катріну на Exercism,
Jonathan: Гаразд.
Gabriel: Тоді існувала друга версія. І коли було багато роботи, і була ця потреба в безлічі зворотних звʼязків. Я в це поринув, і мені дуже подобалося давати цей зворотний звʼязок. І,
Jonathan: Мм-хм.
Gabriel: По суті, я почав думати про те, як зробити це швидше. Так. Бо я швидко зрозумів, що особливо на перших вправах було ясно, що я давав би ту саму відповідь знову, знову і знову.
Jonathan: Так.
Gabriel: А з іншого боку, звісно, іноді... ці дві проблеми, а іноді була оця проблема й інша. Тож, по суті, я почав це оптимізувати. Я почав писати невеличку програму на Go, яка використовує статичний аналіз, бо мені хотілося зануритися в аналіз. Я цього раніше не робив. Мені хотілося з цим познайомитися. Тож мені було цікаво спробувати це в будь-якому разі, і це здавалося хорошою ідеєю. Бо це все ще був код, який був дуже поширеним або дуже схожим увесь час. Розвʼязки однієї вправи, особливо перших, дуже схожі. Ось так я зайнявся статичним аналізом, і я просто шукав різні закономірності в коді, а потім автоматично додавав блоки відповідей або наперед визначені блоки до відповіді. По суті, я почав це локально, і так я міг робити близько 100 на тиждень, 100 з чимось на тиждень. І я навіть не працював над цим повний день. Це було понад мою роботу. І так. А потім це почало... Пітфілд, здається, був першим. Джон Арун, здається, його справжнє імʼя. Він був, здається, першим, хто сказав: ого, це чудово. Це супер. І ось так, по суті, моя робота й те, що я робив зі статичним аналізом, почало ставати відомим.
Gabriel: І, гадаю, це було великою частиною третьої версії. Ми почали думати про те, як, по суті, зменшити роботу наставника завдяки цим інструментам, цьому автоматичному, цьому статичному аналізу, або інструментам, які, по суті, перевіряють код автоматично й дають зворотний звʼязок автоматично. Навіть цілком автоматично, без участі наставника чи без потреби в ній. І тому що наставники, було цілком ясно, що в нас є наставники, і їх не вистачає на цю роботу. У нас був цей інструмент, і ми також бачили, що багато наставників вигорали, вони зникали, і так, це було просто занадто. Занадто багато на багатьох наставників. Так. Роботи було... щось із серіями; у них було 500 або більше розвʼязків, які чекали на наставництво, а іноді час очікування сягав місяця чи більше. І, звісно, це були умови, за яких учні в якийсь момент просто йшли. Так.
Jonathan: Хм. Це кумедно, бо, здається, Джеремі днями казав, що з усіх, з усіх розвʼязків, які надсилають, десь 75% з них цілком унікальні, що й мені теж здається захопливим. Тобто береш вправу на кшталт Hello World, вона очевидно дуже проста. Напевно, це мав би бути стандартний підхід, який застосовують постійно. А він каже: люди пробують найрізноманітніші речі. І кумедно, як цей перетин відбувається, бо коли програмування стає популярнішим і дедалі більше людей беруться за розробку й програмування, мимоволі замислюєшся: а де ж почнеться ця автоматизація? Яка зведе нанівець роль розробника. Я, я замислююся... я не знаю, чи так станеться. Гадаю, тут ще занадто багато потрібно. Але що стосується, не знаю, що ви про це думаєте, але мені здається, що останнім часом в Exercism є великий поштовх до наставництва, і це справді захопливо, бо воно, як ви сказали, воно, воно. Бере всі ці повторювані уроки, які доводиться давати знову й знову, і подає їх так, щоб людям було зручно з ними працювати. Водночас чи не переходить це в те, що насправді потрібна людська взаємодія, людина, яка справді працює з матеріалом. Тож не знаю, чи є у вас ідеї щодо цього, але мені здається, що це цікава царина на цей момент.
Gabriel: Так, не думаю, що розробників замінять дуже скоро. До цього ще досить далеко. У розробці, у застосунках загалом, у наставництві, гадаю. Гадаю, статичний аналіз, а також автоматизоване наставництво, і автоматизоване наставництво загалом на Exercism, можуть бути великою допомогою. Але наставники потрібні для справжнього наставництва, сказав би. Так. Наприклад, у мене є людина, яку я наставляю, десь кожні два-три місяці ми маємо розмову, іноді частіше. І я наставляю її щодо карʼєри, так би мовити. Так. А також технічно, дуже глибоко технічно, але це зовсім інакший спосіб наставництва, ніж просто подивитися на розвʼязок і сказати, що можна покращити. І, гадаю, саме для цього наставники, які є, все ще потрібні, і точно будуть потрібні, і, гадаю, на цьому ми можемо зосередитися. З іншого боку, гадаю, гадаю, ми не можемо повністю замінити наставників у роботі з розвʼязками, і не думаю, що повинні. Ми можемо автоматизувати багато речей, але наставник — це все ж той, хто може вказати напрям. Він може побачити проблеми, з якими ви боретеся, і сказати. Розберіться з цим і цим, а не просто: тобі треба покращити код ось так.
Jonathan: Так. Так.
Gabriel: І, чесно кажучи, мені хотілося б повернути більше наставництва на Exercism. Тож я думаю, чи не варто нам
Jonathan: Ви маєте на увазі взаємодію віч-на-віч?
Gabriel: Так. Я думаю, чи не варто нам. Раніше в нас був цей шлях: 10 вправ, принаймні 10. Які треба було пройти, і можна було рухатися далі, лише коли їх опрацював наставник.
Jonathan: Так.
Gabriel: І, гадаю, з тією автоматизацією, яку ми маємо зараз, ми могли б це знову ввімкнути. Або, можливо, не зараз, а в майбутньому. І, гадаю, мені б це сподобалося.
Jonathan: Ми точно могли б, нам варто підняти це на, на зустрічі спільноти, бо, гадаю, було б круто повернути це, повернути це в центр уваги. Отже, Габріелю, одне з питань, які ми часто ставимо, і це не те, про яке я говорив із вами раніше, але я. Одне з питань, які мені подобається ставити, бо воно завжди дуже цікаве й різне: чи програмування для вас наче клацнуло? Люди кажуть, що був такий досвід, коли раптом усе стало зрозуміло. Я часто розповідаю свою історію. Наводжу приклад зі школи, коли я вивчав хімію, у Великій Британії, де я навчався. Там є ці іспити. І все веде до цих іспитів протягом трьох років до них. Тобто три роки навчання, і все завершується випускним іспитом. І це стосується всіх предметів. І одна з тем, звісно, була хімія. І я провів десь три роки, не маючи жодного уявлення про хімію. Я просто не міг, не міг. Я не міг її зрозуміти. А потім за тиждень до іспиту наче щось клацнуло, як то кажуть, річ раптом стала зрозумілою. І я такий: оце так. Я можу отримати все з періодичної таблиці. Якщо я знаю числа в періодичній таблиці, я можу зрозуміти те, те й те. І речі стали справді простими, і це було наче. Чи був у вас такий момент із програмуванням, чи це було щось таке, що. Воно природно стало зрозумілим, і коли був той момент, якщо це доречно?
Gabriel: Не певен, що в мене був такий чіткий момент. Гадаю, дуже допомогло те, що був цей запис макросів і можна було дуже рано просто дивитися на код у Visual Basic for Applications. Не певен, чи щось таке існує й сьогодні. Гадаю, у Word це все ще можна. Робити. Але не часто трапляється щось таке, коли можна записати, а потім подивитися на код і вчитися саме так. Гадаю, це мені дуже полегшило життя, бо на початку я дуже мучився. Гадаю, був один, один такий момент, коли я сказав би: гаразд, не те щоб я щось зрозумів, але я усвідомив, по суті. Чи я насправді роблю речі правильно чи неправильно. Це було, коли я приєднався до тієї компанії, коли був студентом. Це фактично був перший раз, коли я працював. Я працював разом з іншими розробниками. До того я завжди був сам і, по суті, мав робити все сам. І завжди було велике питання. А зазвичай так роблять? Це здається дивним. Здається складним. Здається, що працює, але чи правильно це? І. І на це певною мірою знайшлася відповідь, коли я приєднався до тієї компанії й почав там працювати. Звісно, мені багато чого треба було вивчити, і я багато чого вивчив. Наприклад, набори записів Access. Я ніколи по-справжньому не розумів їх раніше. Я з ними працював, але
Jonathan: Мм.
Gabriel: так, воно працювало
Jonathan: Так. Щось
Gabriel: А потім я справді зрозумів, почав їх розуміти. Тож, можливо, саме це для мене клацнуло, бо в мене була колега, і вона мені це пояснила, і це справді, клацнуло. Одного дня я зрозумів, як вони працюють і
Jonathan: Мм-хм.
Gabriel: як вони мають працювати й як користуватися ними правильно, тощо. Тож так, можливо, це був один із тих моментів. Але, гадаю, такі моменти трапляються в нашій роботі дуже часто. Не думаю, що є якийсь один момент, можливо, це був один початковий момент. Але й у Go є безліч місць, де в мене може клацнути, де я розумію. Чому щось саме так і як це має використовуватися. І, наприклад, context. . Так. Наприклад, context.
Jonathan: Так.
Gabriel: Так. Наприклад, context, відколи його додали, не певен, у 1.6 чи 1.7, можливо. Десь тоді я на нього не дивився. Чесно кажучи, спочатку він мені не дуже був потрібен. А потім я потрапив на один такий. Це був ніби мітап, і хтось презентував про context, як його використовувати, як і таке інше. І ця думка
Jonathan: Хм.
Gabriel: про яку варто було подумати. Але все одно минуло кілька місяців, перш ніж я справді на нього подивився й зрозумів, навіщо він потрібен. І, наприклад, закритий канал. Не знаю, чи ви знаєте, що багато людей досі радять в інтернеті, що треба закривати горутину за допомогою закритого каналу, а цього не варто. Саме для цього й потрібен context. Так. Ви використовуєте context, скасовуєте context, і тоді можете закрити горутину за його допомогою. Якщо ж ви використовуєте закритий канал, то, по суті, робите вручну те, що context робить усередині, і є безліч підводних каменів, яких треба уникнути, безліч проблем. Щоб цього уникнути, зазвичай люди роблять це неправильно.
Jonathan: Я впевнений, що ви мали... ви проводили прямий ефір і згадували щось про це. Я, здається, справді пригадую, що ви казали: просто використовуйте context, бо
Gabriel: Так.
Jonathan: це дуже логічно.
Gabriel: Памʼятаю, я згадував про це.
Jonathan: Так. Але ні, тож, тоді, коли ви наставляли людей у минулому, які є... Чи можете ви визначити. Дії або поведінку, або речі, які. Які дозволяють людям, що схоплюють усе швидко, чи можете ви сказати, що вони роблять такого, що дає їм змогу налаштуватися на швидше або ефективніше навчання? Чи це просто багато наставників, тобто люди, яких ви наставляли, вони просто природно такі залучені? Чи є люди, про яких ви кажете: ого, вони роблять речі, вони роблять речі, які дозволяють їм прискорювати своє.
Gabriel: Не певен, що можу сказати таке про інших людей. Про себе точно можу. Я навчився, гадаю, від своїх батьків. Вони самі багато чого навчилися, і саме цього я також навчився від них: вчити себе самому. Тож програмування я вивчив. Цілком самотужки. Спочатку був батько. Були якісь речі в школі. Здебільшого в старших класах я, власне, або ми, майже всі ми були кращими за вчителя, тож навчання там особливо не було. Було радше якесь навчання одне від одного більше. Але
Jonathan: Так.
Gabriel: Загалом я всього навчився сам. І це, гадаю, те, що потрібно в програмуванні. Бо постійно треба заглиблюватися в речі, яких ти раніше не бачив. Про них не знаєш, треба їх вивчати. Як це слово? Ця. Здатність. Так. Здатність заглибитися в щось і вивчити це самому, гадаю, це ключове в програмуванні для навчання. І, звісно, можна вчитися набагато швидше, якщо знайти когось, хто розповість про це. Тож я не хочу казати, що не варто шукати наставника, не варто йти на Exercism тощо. Це допомагає зростати набагато швидше, але все ж. Ось що я б сказав.
Jonathan: Мені здається, що ваше навчання відбувалося через практичні спроби розвʼязувати задачі. Тож чи то створення макросів, щоб робити щось ефективніше, чи то щось інше, мені здається, що це була наче ключова тема, яка повторювалася у вашому житті щодо навчання, і, гадаю, це багато в чому збігається. Загалом із тим, що Exercism також намагається робити, допомагаючи людям практично щось робити
Gabriel: Так. Спробувати це.
Jonathan: Тож так. Це справді круто. Отже, Габріелю, у нас не так багато часу лишилося, але в мене є два останні... Ну, не запитання до вас. Одне — це запитання, і я попрошу вас поділитися своєю думкою, а друге буде, ну, це теж певною мірою думка, яку ви могли б. Я попрошу вас дати спільноті пораду щодо чогось, що варто спробувати цього тижня. Але спершу: ми розмовляли з багатьма нашими попередніми людьми, у яких брали інтервʼю, і якщо ви слухали цей подкаст чи цей прямий ефір хоч якийсь час, то знаєте, що ближче до кінця ефіру ми зазвичай ставимо одне велике запитання. І це запитання: на якому пагорбі ви готові померти в IT? Тобто яка єдина думка, якої ви дуже твердо дотримуєтеся, за яку ви хотіли б постояти. І майте на увазі, що на це треба дати вагому причину. Не можна просто сказати: це моя думка, і все. Треба вміти захиститися в цьому сенсі. Але якою була б ця думка, і вона може бути такою завгодно рішучою, інтенсивною чи дрібʼязковою, як вам заманеться. Тож якою вона була б?
Gabriel: Я сказав би, що це приказка. У нас у спільноті Go... або хтось сказав у спільноті Go, і це: нудний код кращий за хитрий код.
Jonathan: Мені це подобається. Що це означає?
Gabriel: Що це означає? Так, по суті, це, це узагальнює велику частину філософії Go щодо простоти й читабельності. Тож якщо в коді на Go ви думаєте: ого, це хитро, то це насправді поганий код. Навіть якщо той, хто це написав, був дуже розумним і зробив це дуже хитро. І іноді мені здається, що якщо справді дотримуватися простоти й ідіом Go, то у вас у всій кодовій базі не буде коду, на який ви хотіли б показати або на який можна показати. Дивіться, який це гарний код, бо весь ваш код насправді нудний і дуже простий, і кожен, хто подивиться на ваш код, скаже: що в ньому такого особливого? Так, але річ у тім, що ви дійшли до простоти, бо ви хороший програміст, і це процес ітерацій, і складний код... писати складний код дуже легко. Писати простий код. Бо вам ще спершу треба зробити задачу простою у своїй голові, потім написати код правильно, а потім ітерувати його й зробити простим. І це набагато довший процес, і він потребує набагато кращих розробників, ніж просто написання складного коду, який, коли на нього дивишся, важко зрозуміти. Його важко читати, важко підтримувати й важко змінювати.
Jonathan: Це те, це те постійне питання компромісів, правда? Тож я, я досить молодий в IT, три роки, і я прийшов не з боку розробки. Я прийшов із продукту, радше з продуктового боку. Більше з бізнесової перспективи. І, можна сказати, і одна з речей, яка була справді цікавою, це те, що дедалі очевиднішим ставало, що все зводиться до компромісів. Тобто компроміс — це простий код проти складного, причому складний код може виявитися просто громіздкішим і підступнішим у майбутньому. Простий код може зайняти більше часу й вимагати більше енергії та зусиль на старті. І це компроміс, який постійно доводиться робити. Тож це було одне з, не знаю, що ви про це думаєте, але мені справді здається, що це стосується саме простоти, бо я памʼятаю, у моєї мами був друг в університеті, і він завжди писав для своїх завдань есе лише на дві сторінки. Бо він умів усе вмістити у дві сторінки, і за це отримував найвищі оцінки. Тож, гадаю, це збігається з усією концепцією простоти, і, гадаю, писати простий код справді важко, бо це вимагає ясного, ясного мислення, а не лише програмування. Тож, гадаю, це гідний пагорб, і, гадаю, ви це добре розкрили. Ви дуже добре про це сказали. Круто. Тож, Габріелю, останнє запитання цього тижня. І тепер ви можете дати трохи порад спільноті Exercism. І це може бути будь-що. Це може бути порада про здоровʼя, про харчування. Це ваша нагода поділитися порадою, яку ви дали б спільноті, і це може бути будь-що, що захочете. Тож якою була б ваша рекомендація спільноті Exercism цього тижня? Що єдине їм варто спробувати чи зробити, на вашу думку?
Gabriel: О, це складне. Гаразд, якщо вже ви кажете, що це може бути будь-що, можна я дам дві речі?
Jonathan: Дозволю вам, дозволю вам дві
Gabriel: Гаразд. Одна, одна рекомендація. Я, власне, вегетаріанець. Я виріс вегетаріанцем. Ніколи не їв мʼяса, і, власне, виріс веганом, більшу частину, більшу частину дитинства й юності. Тож спробуйте тиждень без будь-яких молочних продуктів. Ось це буде одна. Так. А друга рекомендація буде така, не певен, чи це можна зробити за тиждень, але якщо ви хороший розробник, то можете, дуже цікаво й дуже варто спробувати побудувати спільну памʼять, спільну між кількома сервісами, або в межах одного сервісу, спільну памʼять. Спробуйте реалізувати спільну памʼять за допомогою протоколу Raft. Можна використати бібліотеку. Сам Raft реалізовувати не потрібно, але
Jonathan: Raft Вам треба буде дати мені, вам треба буде надіслати мені посилання, щоб я міг це опублікувати. Тож це завдання Габріеля. Ну, можливо, варто назвати це завданням Габріеля на тиждень. Можливо, не так рекомендація. Можливо, нам треба
Gabriel: Так. Це радше щось, що варто спробувати.
Jonathan: Ви надсилаєте, ви надсилаєте завдання. Це могло б бути, це могло б бути весело. Але круто. Отже, тиждень без мʼясних продуктів узагалі. Побачимо, як воно піде, і будуємо сервер спільної памʼяті. Як ви сказали? Сервіс, спільна
Gabriel: Так, можна назвати це сховищем ключ-значень у памʼяті
Jonathan: Гаразд.
Gabriel: Тобто кілька сервісів, одна база даних, або один сервіс. Так.
Jonathan: Круто. Це
Gabriel: Бо це багато вчить про те, як насправді працюють бази даних. Так. Під капотом. Особливо ті розподілені, які спільні, як, так, не певен. Так. Cassandra/Scylla, не знаю, чи у вас є Scylla. Це щось на кшталт Cassandra, але на C++, і зараз вони переходять на протокол Raft. Або Це база даних ключ-значень. Спільна — це etcd, ні, це не база даних. Це розподілене сховище. Так, Badger від Dgraph. Тож воно, гадаю, теж використовує Raft під капотом, щоб розподіляти дані. Не можу сказати напевно, треба було б подивитися ще раз. Але є багато баз даних, які ми використовуємо на цьому. Розподілені системи. Тож розподілена система — це, сказав би, великий виклик наших сучасних часів. Ми в процесі його розвʼязання, але ще багато викликів треба подолати, і так, завжди добре вміти думати в цьому напрямі, бо якщо вмієш, то це відкриває багато можливостей.
Jonathan: Хм.
Gabriel: Якщо вам щось потрібно. У моїй останній компанії я, власне, ішов цим шляхом: мав спільну памʼять між кількома сервісами водночас. Так.
Jonathan: Може, можливо, нам варто організувати це як майстер-клас. Дам людям кілька тижнів, щоб спробувати. Тож, Габріелю,
Gabriel: ось це, ось це і є майстер
Jonathan: Так,
Gabriel: коли ви закінчили з Exercism і зробили всі вправи,
Jonathan: Ось це велике. Велике. Воно все, воно все поєднує докупи. Габріелю, дуже дякую за ваш час. Було справжнє задоволення поговорити з вами сьогодні ввечері. Якщо хочете, просто залиштеся після, після того як ми закінчимо запис, лише ненадовго, але хотілося сказати величезне дякую і щиро ціную все, що ви вкладаєте в Exercism, і не лише для нас, а й усе наставництво, яке ви робите далеко за межами, і допомогу людям писати кращий код. Я впевнений, що це всюди надзвичайно цінують. Тож дякую за ваш час. І. Звертайтеся до Габріеля. Якщо ви на Exercism, напишіть йому, попросіть наставництва, і, впевнений, вам буде добре з Габріелем. Круто.
Gabriel: Дуже дякую.
Jonathan: Закінчуємо запис. Так, ні, дякую, дякую, що долучилися, і незабаром побачимося на якійсь із платформ десь.
Gabriel: Дякую.
Слухаймо, навчаймося й надихаймося від учасників нашої спільноти.