Назад до спільноти

Не будьмо надто продуктивними!

У цій історії спільноти Франциска та Джонатан говорять про командну динаміку, про те, як різні люди в бізнесі підходять до співпраці, і про те, як обрати позицію, що допоможе навчитися стати програмістом.

Дивитися на Youtube
ТРИВАЛІСТЬ 50ХВ

Джонатан: Вітаю і запрошую до подкасту Exercism. Мене звати Джонатан, і мені випала честь бути сьогодні ведучим. Зі мною Франциска, одна з наших мейнтейнерок треків Go та JavaScript. Нам дуже пощастило, що Франциска є частиною Exercism, і вона долучена до нього вже багато років. Тож якщо хтось уже давно в спільноті, то міг натрапити на Франциску. Чи то в навчальних когортах, чи то на треках Go та JavaScript. Тож Франциска, щиро вітаю сьогодні. Дуже дякую, що приєдналася до нас. Одразу перейду до питання: як сталося, що шлях привів саме туди, де зараз?

Франциска: Так. Гаразд. Я Франциска. Я June, або June Dev в інтернеті. Зараз живу недалеко від Франкфурта в Німеччині, одразу за межею міста, у маленькому передмісті. Нещодавно почала нову роботу в Atlassian. Atlassian - це компанія, яка стоїть за багатьма улюбленими або ненависними інструментами, як-от Trello, Jira, Confluence. І там я розробляю новий інструмент, який допомагає продакт-менеджерам у їхній роботі. Бо Jira зосереджена на розробниках, але вона не дуже підходить для того, що потрібно робити продакт-менеджерам: розставляти пріоритети і так далі. Тож ми будуємо щось спеціально для них. Мені подобається Go як мова. Вона мені справді до душі. І backend побудований на Go. Тож коли я побачила оголошення про вакансію, подумала: о, круто, що вони цим займаються. Я подала заявку і отримала роботу. Поки минуло лише 30 днів, не знаю, але це був хороший досвід. А ще в дитинстві я завжди цікавилася технікою, природничими науками, науковою фантастикою, була великою фанаткою «Зоряного шляху», усім таким. Помітила, що в школі мені добре давалися математика і фізика. У ті часи багато людей ішли вчитися на компʼютерні науки, і нам завжди казали не вчитися на тому, на чому вчаться інші, бо потім таких людей буде занадто багато. І я подумала: гаразд, мабуть, не варто йти в компʼютерні науки, бо їх буде занадто багато. Так чи інакше, я подумала: гаразд, зробімо щось схоже. Тож я пішла вчитися на фізику, яка мені дуже подобалася в школі. А компʼютерні науки були радше додатковим предметом. Тож у мене були якісь курси, але не так багато, як в інших. Я помітила, що настає момент, коли треба замислитися: гаразд, а що я робитиму решту життя? Як заробляти гроші, займаючись тим, що насправді подобається. І я усвідомила, що програмування було тією частиною навчання, яка подобалась мені найбільше, і що воно мені добре дається. І мені захотілося робити цього більше. До того ж це те, що дає змогу оплачувати рахунки. Тож я подумала: гаразд, як отримати роботу в цій сфері, не маючи класичного диплома з компʼютерних наук на той момент. Інша річ була в тому, що на той момент мені не хотілося ставати розробницею на C, розробницею на Java, оце все старомодне. Десь писати банківський код для backend. Тож я подумала: гаразд, як навчитися сучасних речей, інтернету, вебу? Хочу створювати щось для цього. І тоді один знайомий розповів мені, що існують так звані буткемпи з веброзробки, куди можна поїхати на три місяці, і там навчать нових класних речей. Тож я вирішила, що хочу цим зайнятися. І тоді, ймовірно, звідти буде кращий стартовий майданчик для пошуку роботи. А на той час у Німеччині такого взагалі не було. Або можна було роками вчитися в університеті, так? Або є місця, де можна трохи працювати й одночасно вчитися, але це теж величезні програми, де навчання триває роками. А щодо буткемпів, то були хіба що щось на кшталт стартап-акселераторів. Там можна трохи навчитися програмувати, але ще й менеджменту, економіки тощо. Тож мені це не підходило. Я пошукала трохи і знайшла: був хороший буткемп у Лондоні з тими предметами, які я хотіла вивчати.

Джонатан: Ось де все відбувається.

Франциска: Там усе й відбувається. Так, саме так. Саме там, де відбуваються всі круті нові речі. Тож я знайшла цей буткемп і поїхала туди. Це був справді чудовий досвід. І для backend ми використовували Node.js. А потім повернулася до Франкфурта і знайшла роботу як розробниця на Node.js. Компанія була досить класна, і технології були справді круті, я швидко в усе вникла, і було дуже весело. Але мені трохи не пощастило з командою: навколо було багато членів команди з великим его й мачистськими замашками. І якщо була зустріч, то перемагав у суперечці той, хто голосніше кричав. А це... це не та команда, у якій приємно працювати

Джонатан: Це досить часта історія: люди беруться програмувати, а потім оці периферійні, командні аспекти виявляються саме тим, чого ніхто не очікує як проблеми чи виклику. Тож це, здається, доволі поширена річ. Перепрошую.

Франциска: Так. Так. Безумовно. І... Спочатку ми переоцінюємо технічну частину. Думаємо: о, у цій роботі саме ті технології, з якими хочу працювати, тож усе буде добре. Але насправді команда, мабуть, навіть важливіша за конкретні технології. Так. А потім, за два роки, один знайомий, який був CTO в іншій компанії тут, у Франкфурті, сказав, що вони теж перебудовують свій технологічний стек і хочуть створити щось нове, але не хочуть використовувати Node.js. Вони хочуть перейти на Go. Вирішили так із якихось своїх причин. І він сказав, що я можу до них приєднатися. Але, звісно, довелося б вивчити Go. І я відповіла: якщо не проти, що спочатку я витрачу трохи часу на вивчення, то я готова. Я трохи подивилася на мову, і все звучало класно. Так, я змінила компанію. І на тому новому місці команда була справді класна. Там було так: якщо обговорюєш щось із CEO і твій аргумент сильніший, це помічали. І люди на це реагували. І з ними було дуже приємно працювати, і люди були справді цікаві тощо. Тож я залишилася там на пʼять років. Будувала багато сервісів для зростання, а також багато писала, писала концепції, допомагала іншим розробникам занурюватися в Go, а ще трохи займалася frontend. Але після пʼяти років завжди шукаєш нового виклику. І ще на пошук нової роботи мене підштовхнула ситуація з Covid. Я помітила, що й так працюю з дому, так? І, може, ходжу в офіс раз на тиждень. Тож я подумала: є багато повністю віддалених вакансій. Можливо, вдасться отримати щось справді класне у більшій компанії. Якщо я все одно працюю з дому, то могла б працювати й на ту більшу, крутішу компанію, так? Ось так, коли я працювала, я знайшла цю роботу в Atlassian.

Джонатан: Тож, думаю, моє питання було в тому, чи вся ця пандемія якось відкрила думку: о, можливо, є щось більше, ніж просто Франкфурт і стартап-сцена у Франкфурті. Бо я хотів запитати, як воно, оця стартап-сцена у Франкфурті як середовище?

Франциска: Так, щодо Covid: насамперед він відкрив мені ідею працювати повністю віддалено. Бо раніше я завжди була така: ходила в офіс. Мені подобається бачити людей наживо, так я структурую свій день тощо. Але потім я зрозуміла, що після двох років переважно віддаленої роботи це нормально. Я з цим справляюся. У мене є донька, мені все одно весь час треба виходити з дому тощо. Тож тепер у моєму дні достатньо структури. Ось це пандемія мені ніби показала, і це відкрило мені ідею пошукати деінде. Що ж до Франкфурта, то тут багато всього відбувається у сфері технологій і стартапів, але багато чого. Як і можна очікувати, тут багато зосереджено на банкінгу, тож багато фінтехів тощо. І це не те, щоб... Я працювала у фінтехі в минулому, але це не тема, якою я особливо захоплююся. Тож це завжди було трохи... І до того ж навколо не так багато Go-розробників. Не було нічого, що утримувало б мене саме у Франкфурті чи в франкфуртській сцені. Так.

Джонатан: Ні, звісно. А чи є конкретні мови, на яких, сказати б, зосереджений Франкфурт? Очевидно, скажімо, фінтех і все таке, мови, які, ймовірно, лежать в його основі, це радше фокус? Тобто Go-розробник у Франкфурті - це рідкісний вид? Чи їх стає більше? Як це видається збоку?

Франциска: Так, зараз важко сказати, чи їх стає більше, бо через Covid було не так багато мітапів тощо, так? Тож нині важко сказати, чи з часом на мітапи приходить більше людей. Думаю, набагато більше відбувається, наприклад, у сфері Java. Тож точно сказати важко, але, наприклад, із JavaScript зазвичай не проблема зібрати спільноту, бо ж у кожного десь є щось із frontend, так? Тож у світі frontend зазвичай відбувалося більше, ніж у backend.

Джонатан: І, напевно, коли починалося програмування й був буткемп, там був і аспект frontend. Трохи з ним ознайомилися, а тепер більше уваги на backend. Чому backend подобається більше за frontend? Чи це лише моє припущення?

Франциска: Ні, це точно так. Ще на буткемпі я зрозуміла, що мені більше до душі частина з backend, і тут є кілька причин. По-перше, я не людина-дизайнер, а якщо людина займається frontend, то зазвичай їй самій доводиться ухвалювати рішення. Іноді: який воно повинно мати вигляд? Що тут можна зробити? Як це покращити, написати трохи CSS тощо. І мені дуже важко ухвалювати такі рішення. Звісно, у реальній роботі є готові дизайни. Але так, у мене просто немає такого ока на речі. І я бачила, що ті frontend-розробники, у яких це є і які вміють це робити, ефективніші у своїй роботі. Тож це була одна річ, де я подумала, що це не зовсім для мене. А друга річ була в тому, що нині простір frontend справді надзвичайно складний. Фреймворки, які там є, більшість із тих, що зазвичай використовуються, справді складні. Тож певною мірою нинішній backend трохи простіший. Він складніший у тому сенсі, що його важче уявити, так? Не бачиш кінцевого результату на екрані, як у frontend, де ось він, кінцевий результат. Але з погляду складності задіяних технологій мені зараз він видається радше простішим, ніж те, що відбувається у світі frontend. Тож я точно в якийсь момент карʼєри хочу повернутися й до frontend. Але чекаю, коли зʼявиться кращий фреймворк. І тоді, коли весь той безлад, який зараз навколо, вщухне і зʼявиться щось краще, я повернуся й стану frontend-розробницею.

Джонатан: Мабуть, дочекаюся рішення щодо того, коли зʼявиться той фреймворк, і тоді приєднаюся, бо як подивитися на фреймворки, побудовані на JavaScript, а тут іще новачок. У кожному сенсі цього слова. Нині намагаюся вивчати Go, і мені це подобається. Але навіть самі лише концепції й ментальна модель, які треба мати, це вже цілий новий світ. І тоді хотілося б запитати, як долається прірва від вивчення JavaScript, коли програмування тільки починалося, а потім уже Go. Бо з розповіді здається, що це був досить прямолінійний процес: гаразд, JavaScript, а далі Go. Як це було? Що робилося для такого переходу?

Франциска: Так. Гарне питання. Тут важливо, що JavaScript не був моєю єдиною мовою, так? В університеті я не заглиблювалася в багато мов, але вивчала C. Вивчала Java, вивчала C++, вивчала MatLab та ще якісь такі езотеричні мови. Тож для мене JavaScript був уже пʼятою мовою чи близько того, а Go - шостою. Наприклад, Go був такою річчю, де ще чуєш про вказівники тощо, і якби я знала лише JavaScript, це було б щось цілком нове, і довелося б розбиратися, що це взагалі таке. Але маючи за спиною всі ці інші мови, я вже знала це з C та C++ тощо. Тож я спиралася на багато того, що вже вивчила раніше в університеті, і це зробило вхід дуже легким. А друга річ, що допомагає з Go, це те, що це доволі мінімалістична мова. У ній не так багато ключових слів, не так багато конструкцій, які можна побудувати. Її можна опанувати досить швидко. Я зазвичай кажу: зайти на офіційний тур, на сайт чи на якийсь інший ресурс, і за два-три тижні все пройдено. І вже маєш міцне розуміння. А з JavaScript це було б неможливо. Щоб хоч міцно зрозуміти основи, потрібно набагато більше часу, а далі ще стільки всього вчити. Тож так. І те, що це була моя цільова мова, теж дуже допомогло зробити перехід легким.

Джонатан: Гаразд. Тож тепер є робота в Atlassian, і вже трохи згадувалося про перетин продуктів, технологій і всього такого. І мовилося, що фінтех не дуже надихає, що це не було особливо захопливо. Чи можна сказати, що простір продуктів і взаємодія між технологіями та продуктом це та сфера, яка справді тішить? Або що саме у сфері технологій було б пристрастю, якби спробувати це підсумувати? Знаю, що це дуже велике питання, але хотілося б почути про це трохи.

Франциска: Так, є різні сфери й теми, які мене цікавлять. Не лише те, де я працюю зараз. Наприклад, мені подобається багато чого у споживчих продуктах. Є такі компанії, як Hello Fresh, які роблять багато класних речей. Також класні технологічні речі, або багато всього у сфері освіти, як-от Exercism тощо. А ще є сфера, повʼязана з інструментарієм для розробників чи загалом для команд. Тож є кілька сфер, і ця була однією з тих, де я подумала: о, це дуже логічно, допомагати людям із цим. А щодо продакт-менеджменту зокрема, можу розповісти таку історію про Джеремі. Коли я розповіла своєму CEO в попередній компанії про цю нову роботу й про те, чим займатимуся, він сказав те саме, що й Джеремі, засновник Exercism. Він сказав мені дослівно те саме: чи не тому я обрала цю роботу, що мене дратували його навички продакт-менеджменту? І це показує, що продакт-менеджмент і його покращення були й завжди залишалися чимось, що мене захоплює. Бо річ у тому, що розробник може написати найкращий код у світі. Але якщо це код не для того, якщо будується не те, то все марно, так? Тож якщо продакт-менеджер погано впорався з тим, щоб зʼясувати, що саме варто будувати, то, можливо, ніхто й ніколи не скористається тим, що створено, бо не було доброго аналізу ринку, не було доброї розстановки пріоритетів тощо. І я це бачила на своїх минулих роботах. Я створювала багато речей, які так і не побачили світла денного, бо не було доброго процесу розстановки пріоритетів, так? Тож саме тому, гадаю, покращення цієї сфери продакт-менеджменту загалом робить життя розробників у всьому світі значно кращим, бо тоді вони можуть створювати правильні речі й справді творити цінність, а не будувати щось, що опиниться в смітнику або його ніколи не побачать користувачі.

Джонатан: Так, ні, це справді цікаво, бо, здається, йдеться про мислення. Думаю, у нас часто був такий підхід: якщо людина добре розбирається в технологіях, то все відбувається десь у фоні. Сама вона ніколи не бачить світла денного, бо займається технологіями, і це, сказати б, і є стереотип. Але відчувається, що за останні кілька років стає дедалі більше перетину між технологіями та бізнесом. І для мене... я завжди думав про Agile як концепцію. І ця концепція Agile, гадаю, це бізнес-мислення або бізнесовий погляд на речі, накинутий на технічну команду. Якщо чесно, мені здається, що це корисно, але я, здається, ніколи не бачив середовища, де Agile давав би плоди вчасно, якщо це має сенс. І, можливо, це тому, що я бачив його погано керованим у минулому. Але відчувається, що перетину стає більше, і розробники починають хотіти бути залученими до бізнесової частини, що, на мою думку, справді цікаво і насправді добре, бо тоді рішення загалом кращі.

Франциска: Так, деякі розробники хочуть бути залученішими, а інші не хочуть, але їм усе одно доводиться бути залученими. Річ у тому, що так не працює: що продакт-менеджмент просто сяде, усе розкладе по поличках, перекине через стіну, розробник це зробить, і все гаразд. Це ніколи добре не працювало, навіть у минулому, коли це було стандартною моделлю. І нині... так, цьому приділяють більше уваги, але діалог між розробниками й дизайнерами, розробниками й продакт-менеджерами завжди був правильним. І ще: коли є ланки далі за течією, наприклад команда підтримки чи хтось, хто займається обслуговуванням, то чим тісніше вони працюють разом і справді разом виробляють найкраще рішення, тим більше цінності можна створити разом. І це завжди було правдою. Наприклад, зараз щодо можливості, над якою ми працюємо, у продакт-менеджменту є багато ідей. Що могло б увійти до першої ітерації цієї нової можливості, але самі вони не можуть цього оцінити. Додати оцю річ це ще один день роботи чи це роздує весь обсяг і додасть ще три місяці роботи? Так. Тож для них це неможливо оцінити. І єдиний спосіб знайти добру «упаковку» для цієї першої ітерації - це говорити одне з одним і казати: оце буде легко додати, а оце складно додати тощо. І тоді ми знаходимо добрий обсяг. І приємна річ у моїй роботі в Atlassian - це те, що в нас є продакт-менеджер, який бачить це так само. Він завжди каже, що обсяг це двостороння річ: у нього є якісь ідеї, але й команда має давати йому свої міркування про те, що найбільше має сенс. І тоді ми разом щось вигадуємо. Я також бачу, що коли я проходила процес найму, то тема спілкування з іншими, з іншими командами тощо зараз дуже у фокусі. Багато хто питає, як людина працювала з іншими командами. І вони справді, вже просто розмовляючи, оцінюють, наскільки добре людина вміє формулювати думки, бо надзвичайно важливо, щоб їй було небайдуже, чим займаються інші команди, і щоб вона була залучена. І лише тоді можна справді використати свій час якнайкраще.

Джонатан: Відчувається, що це набагато більш інтегрований підхід у цьому сенсі. І це наводить мене на ще одну думку, яка так часто

Франциска: О, можливо, перш ніж рухатися далі, згадалося оте тригерне слово Agile, так? Тож мушу на нього відреагувати. Не знаю, чи це було навмисно, щоб мене зачепити, чи ні. Щодо Agile, то мені завжди здається, що базові ідеї, з яких усе це виросло, як-от люди важливіші за процеси та всі ці прості речі, які вигадали давно, досі мають великий сенс. Хоча навколо них багато магії. Але потім прийшли консультанти, вигадали всі ці величезні фреймворки тощо, продали їх, і зʼявилися скрам-майстри тощо. І за моїм досвідом, як уже мовилося, багато з цього не надто допомагає. Якщо, наприклад, продукт і розробники погано комунікують, то самé лише нагромадження всіх цих структур на верхньому рівні цього належно не виправляє. Тож так, я теж не велика прихильниця стандартних скрам-практик, agile-практик, і не бачила, щоб це десь працювало дуже добре.

Джонатан: Це цікаво, бо відчувається... Якщо шукати роботу на LinkedIn, скажімо, на посаду product owner чи product manager, то скрізь Scrum, Agile. Усюди, і це просто вражає. Але кумедно, що найбільш, як би це сказати, винахідливі команди розробників, які я бачив, працювали за Kanban, де немає тиску обовʼязково видавати результат у певний строк, але це дає якість, і відповідальність повертається до окремої людини, яка сама за це відповідає. Це було справді цікаво спостерігати, бо молоді команди застрягають на Agile, він не працює, вони засмучуються, а потім доходять до Kanban, де ми просто потроху, послідовно гриземо, і все працює. Але, думаю, цікаво також порівнювати, коли продукт є в самому бізнесі і коли продукти створюються для інших. Не знаю, якою була попередня робота і чи це був внутрішній продукт. Знаю, що в Atlassian по суті створюються власні продукти.

Франциска: Так, я завжди створювала власні продукти. Ніколи не працювала в агенціях.

Джонатан: Так. Агенції - це жах, бо там усі прискіпливо рахують кожну годину розробки чи щось таке, і кажуть: «Але я не розумію. Чому ця кнопка коштує мені 400 доларів?» А йшлося про те, що її хотіли перемістити звідси сюди, а це переробка всього backend. Тож хотілося б поставити питання, яке ми ставили багатьом людям у різних подкастах і стрімах. І це вся ця концепція «пагорба, на якому готовий померти», або те, що людина захищала б усе життя, коли йдеться про думку чи про технології. Ми не хочемо сказати, що це думка, якої обовʼязково треба дотримуватися, а радше: яка одна цінність чи думка є абсолютно ключовою і яку хотілося б бачити повсюдно у сфері технологій? Це досить широке питання, але чи є щось, що захищалося б дуже рішуче в технологіях?

Франциска: Я думала, що це буде трохи легше. Я хотіла взяти щось легке й непопулярне. Так теж можна?

Джонатан: Так, звісно.

Франциска: Гаразд. У мене не так багато тих, ну, супервеликих пагорбів, на яких готовий померти. Одне з того, що мене справді зачіпає, це те, що багато людей радять оптимізувати особисте середовище для розробки. І, на мою думку, це здебільшого переоцінено. Отже, люди кажуть: о, треба вивчити Vim, бо тоді більше ніколи не тягнешся до мишки, і це так чудово тощо. І люди... Люди вірять у це, особливо коли тільки починають в індустрії, вірять. І тоді витрачають рік на вивчення всіх магічних скорочень тощо. А потім, так... Але зрештою, не знаю, економлять, можливо, день на рік чи близько того. Тож той рік болю не окупився. І таких речей багато: кажуть, що треба налаштувати всі свої alias для термінала у своїх dot-файлах, кажуть, що треба знати всі шпаргалки зі скороченнями тощо, і на вивчення всього цього витрачається дуже багато часу, але зрештою економиться не так уже й багато. І, гадаю, тут люди переоцінюють час, який насправді витрачається на набирання тексту на роботі, так? Як уже згадувалося, значна частина роботи - це також спілкування. Значна частина роботи - це насправді роздуми. І лише якась частина дня справді йде на набирання чогось: коду чи команд тощо. Тож багато людей оптимізують цю зовсім невелику частину дня. І, на мою думку, якщо це чиєсь хобі, то хай цим і займається. Або якщо це має для когось подібну цінність. Якщо людина працює SRE, тобто інженером із надійності сайтів, і залазить на сервери тощо, то знати Vim, можливо, і має сенс, так? Бо графічний інтерфейс там недоступний. Але якщо це не потрібно, то й не варто перейматися. Хай кожен користується тим, що йому зручно. Наприклад, щодо скорочень я завжди кажу: гаразд, більшість графічних інтерфейсів показують скорочення поруч із тим елементом, на який можна натиснути. Тож якщо людина натискає на щось разів пʼять на день, то, можливо, і має сенс запамʼятати. Або якщо кожні пʼять хвилин, тоді точно має сенс запамʼятати. Якщо ж ні, то можна спокійно користуватися графічним інтерфейсом, робити свою справу й краще витрачати час на вдосконалення власне навичок програмування. Поробити вправи, щось таке. Вивчити нову мову. Та будь-що. Але так, це те, чим я завжди намагаюся підбадьорити нових розробників: не варто лякатися людей, які кажуть, що треба користуватися якимось із тих стародавніх редакторів і оптимізувати там свою продуктивність.

Джонатан: Кумедно, бо часто чиїсь захоплення непомітно просочуються в розмову, і це зрозуміло. Бо: о, я в захваті, бо оптимізував собі життя. Але якщо замислитися, це не завжди найкраще. Отаким був і мій досвід навчання: було просто безліч речей, рекомендацій, які люди отримують. А якщо зайти на YouTube і шукати, як навчитися програмувати, то хтось починає з того, як налаштувати GitHub. Хтось починає з того, як зрозуміти термінал тощо. Я, мовляв, мушу стягнути це локально, і працювати в онлайн-редакторі, чи якось так. Але, думаю, це справді хороша порада. Тримати все досить просто. Тож якщо на роздуми витрачається більше часу, то як саме відбувається обдумування задач? Якщо є якась ситуація на роботі чи загалом, що робиться протягом дня? Чи виокремлюється для цього час? Як відбувається цей процес?

Франциска: Одне, з чого мені подобається починати, це по суті отримати задачу трохи заздалегідь, перш ніж справді братися за її розвʼязання, а потім просто тримати її десь на думці тиждень чи близько того. А тоді, наприклад, у душі трохи про неї подумати. І перед сном трохи подумати, просто покрутити її в голові якийсь час. І зазвичай це допомагає знайти якісь відправні точки. А далі, особливо якщо це стосується роботи, я зазвичай починаю записувати деякі пункти, бо записування точно допомагає прояснити думки, знайти пункти, де, наприклад, ще треба поговорити з продакт-менеджером, бо незрозуміло, що саме там потрібно для користувачів. Тож я записую те, що вже знаю, і те, як це розвʼязувати. А ще зазвичай записую досить велику таблицю відкритих питань: або для когось із команди, або й для себе, те, що треба зʼясувати. І це справді допомагає все прояснити. А потім від цієї супервисокорівневої концепції намагаюся розкласти все на конкретніші програмні задачі. Який має бути API? Які дані для цього треба зберігати? І як воно потрапляє від story point до даних і назад, і яка логіка має відбутися дорогою. Залежить від ситуації. Буває, що я вже знайшла багато задач, які треба розвʼязати, ще на етапі роздумів, але іноді, коли починаю писати код, знаходжу нові проблеми, яких не передбачила, і тоді треба знову відступити, ще раз усе обдумати й повернутися до власне коду. Так теж буває. Але зазвичай система така: спершу трохи обдумати річ. І розвʼязання частини задач заздалегідь мені дуже допомагає. А далі, так, або код пишеться прямолінійно, або знаходяться нові проблеми й доводиться повертатися, але це теж нормально.

Джонатан: Гаразд. Ні, це класно. Часто, здається, у мене в голові така ідея: якщо людина програміст на повну ставку, то вона буквально сидить за компʼютером від ранку до ночі й потроху гризе. Але я усвідомлюю, що здатність обдумувати задачі, і, гадаю, саме на це намагається націлювати Exercism, це добре обдумати задачу. Переконатися, що є весь контекст. А тоді частина з написанням коду це насправді лише вираження цього процесу, втілене в коді. Джеремі сказав би те саме. Думаю, він обдумав би багато речей, а тоді написав би досить короткий код.

Франциска: Так. І ще одна поширена порада: почати просто виписувати в коментарях, що саме ця штука має робити. Гаразд, спершу треба зробити оце, потім результат буде такий, а потім отак. І вже тоді заповнювати кодом окремі частини. Це теж дуже допомагає.

Джонатан: Кумедно, бо те, що мовилося, я точно спробую, бо усвідомлюю. Коли треба програмувати, особливо в навчанні, на Go чи як завгодно. Одна з вправ, яку я намагався зробити, це взяти введення з клавіатури, зберегти його, а потім повернути щось на кшталт: було стільки-то спроб, чи якось так. Але весь процес обдумування, розбиття цієї задачі на справді дрібні кроки був для мене дуже незвичним. Тож було справді цікаво вчитися думати про таку задачу. Крок за кроком. Тож ні, це класні маленькі поради, які я точно візьму.

Франциска: Це також те, що багато людей, які приходять на Exercism, вони не так сильно мучаться з розумінням мови та синтаксису. Але оце загальне: як розвʼязати цю доволі загальну задачу, ось із чим у людей труднощі. І ми трохи намагалися створити документацію і про це, де кажемо: ось, це хороший ресурс, щоб навчитися думати як програміст тощо. Але так, можливо, у цьому можна зробити й краще.

Джонатан: Ні, це так, це правда. І, гадаю, це наводить на цікаве питання, яке я також ставив кільком людям, і воно завжди було цікавим, коли я спілкувався з іншими. А саме про оцю концепцію: коли програмування «клацнуло»? Не знаю, чи бувало таке відчуття. Були концепції й теорія, пройдені підручники, а потім одного ранку людина прокидається і раптом: о, воно просто має сенс. Таким часто був мій досвід навчання. Коли це сталося у випадку Франциски? Чи це сталося взагалі? Чи це був просто поступовий процес: гаразд, я потроху це засвоюю. Як це було?

Франциска: О, так. Я трохи про це думала, і, так, думаю, момент «клацання» був. Але почнімо. Спочатку не клацнуло, якщо можна так сказати. Коли я була підлітком, у мене був один із тих іграшкових ноутбуків, на яких були якісь ігри. І в ньому також була можливість програмувати мовою BASIC. І зайшов мій дідусь, і він... він починав програмувати ще на перфокартах. Тож він завжди цікавився технікою, і йому здалося: о, круто, що тут можна програмувати. І він хотів показати мені, що програмування це щось класне. Він почав так, як починають усі. Він ввів print, Hello world, і воно виплюнуло Hello world, а я: я й сама вмію набрати Hello World. Що ти взагалі робиш? І тоді він сказав: ні, воно робить те, що йому скажеш. І так далі. А потім він набрав щось на кшталт «один плюс два», і воно виплюнуло три. І я: мій калькулятор і це вміє. Що ти хочеш мені тут показати? Я не зрозуміла. А потім, пізніше, у мене був такий собі курс із компʼютерних наук у школі. Там був Turbo Pascal, і в ньому був ніби плагін чи щось таке, де можна було мати маленьку черепашку, яка щось малює на екрані. І там нам давали класні вправи: вводиш якісь формули, і воно малювало справді круті, заплутані фрактали. Вони мали вигляд листя тощо, і все це виходило лише з невеличкої формули, яка каже цій черепашці, що малювати. І саме тоді в мене «клацнуло», бо я усвідомила, що з дуже простих інструкцій можна створити таку складну річ, якої я сама ніколи не зробила б. Бо я не намалювала б стільки еліпсів, так? Тож для мене це було те саме: о так. Тобто воно може більше, ніж я сама. Але раніше, з пояснень мого дідуся й того, що він показував мені в цій штуці, ні. Це не спрацювало. А от побачити оце, графічне, і побачити, як мало інструкцій потрібно, щоб змусити компʼютер зробити таку складну річ, ось тоді в мене «клацнуло».

Джонатан: Гаразд, це класно, бо в мене так було з методами днями. Я такий: що взагалі таке метод? І в мене просто не «клацнуло». І так само було з хімією. Я вчив її два роки, а потім за одну ніч періодична таблиця набула цілковитої ясності. Мені тоді було років 16. І я памʼятаю, як подумав: оце так, це ж найлегша річ. Не можу повірити, що не розумів цього. Два роки. А потім іспит був легкий. Бо всі відповіді ніби в періодичній таблиці. Треба лише зробити свою маленьку річ, і все синхронізувалося в моїй голові. І було також цікаво говорити з людьми про те, коли настає цей момент «клацання». Ось Rebecca, яку, можливо, хтось знає з треку unison на Exercism, я запитав її, бо вона має диплом з англійської літератури. І я такий: як сталося, що від англійської літератури людина перейшла до програмування? І який метод у голові допоміг концептуалізувати цей зсув? І вона сказала, що уявляла програму, яку пише, як історію, як розповідь із головним героєм, а функції були персонажами тощо. І я такий: о, вау, це так цікаво. Ніколи б не подумав про це в такому сенсі. Ні, це справді

Франциска: Так. Але це повертає нас до того, про що ми говорили щодо коментарів, так? Що спершу пишеться текст, а потім код. Це саме те: спершу розповідається історія, а потім під неї пишеться код.

Джонатан: Це справді класно, що це згадалося, бо, гадаю, усвідомлення того, що насправді пишу історію в коментарях, я обовʼязково візьму це на озброєння. Ні

Франциска: І ще одне щодо цієї теми: проводили дослідження про те, у чому люди добре вміють, наприклад, у програмуванні, і зʼясували, що вербальні навички, скажімо, словниковий запас, теж відіграють велику роль. Наприклад, кажуть, що називати речі в програмуванні завжди було складно. Тож якщо людина добре добирає слова, які описують те, з чим вона має справу, це значно покращує код. Тож насправді річ не лише в математиці й аналітиці. Багато важить уміння добре поводитися зі словами, чого спочатку можна й не очікувати.

Джонатан: Ні, це, мабуть, зрештою мова, і це цікава думка, яка в мене виникла. Природно, що рідна мова німецька, але англійська вже теж майже своя. А зараз у Atlassian розробка ведеться англійською? І чи було так і раніше? Бо я б сказав, що, можливо, на жаль, усе англійською. І англійська чудова. Але чи вивчалася англійська ще в школі, а програмування було все німецькою? Як усе це опановувалося з того досвіду?

Франциска: Так, найголовніше, мені пощастило, що більшість програмування була англійською, і всі коментарі були англійською тощо. Не завжди найкраща англійська, але нічого. Щодо вивчення англійської, то в школі я ніколи не була сильною. Але мені пощастило в університеті провести рік, як рік за обміном, у Великій Британії. Тож це було справжнє занурення в мову. І тоді моя англійська значно покращилася. Після цього все було легко, а до того було справді погано. І до того ж... це точно важливий чинник. Якщо англійська не рідна, то знову ж таки важче боротися за правильну назву для речей, так? А називати речі доводиться в кожному рядку коду, який пишеться, так? Постійно щось чомусь присвоюється, і треба назвати цю річ якнайкраще, щоб код був зрозумілим.

Джонатан: Ні, це не видається таким уже легким для тих, для кого англійська не рідна. І, думаю, це почне змінюватися. Днями я бачив статтю про те, що Індія зараз найшвидше зростаючий IT-простір у світі. І англійська: чи залишатися на ній, чи на місцевих діалектах, яких, знаю, в Індії багато. Просто цікаво про це думати, обмірковувати все це. Тож ми вже майже годину розмовляємо. Мені це дуже сподобалося. У мене є ще одне питання, Франциско. І тут саме час дати рекомендацію. Спільноті Exercism. Якою була б одна рекомендація? Це може бути що завгодно: від їжі, яку варто спробувати, до прогулянки, чи будь-чого, що хочеться порадити спільноті. Якою була б рекомендація для спільноти Exercism цього тижня?

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

Джонатан: Класно. Ні, мені це дуже подобається. Що ж, усі, хто це слухає, ось це рекомендація, порада на цей тиждень від Франциски. Тож Франциско, дуже дякую за час, за все, що вкладено в Exercism, за всі роздуми й залученість до спільноти. Знаю, що Франциска дуже багато робить для Exercism, покращує його й допомагає, і ми це дуже цінуємо. Тож хотілося просто подякувати, і дякую за час цього ранку. Національне свято, коли можна було б святкувати чи робити щось веселе, а час приділено тут, тож надзвичайно це ціную. Застряг на дзвінку після зупинки запису, але просто хотілося дуже подякувати, і так, гарного решти дня. Класно.

Франциска: Дякую, що запросили.

Більше історій від нашої спільноти

Слухаймо, навчаймося й надихаймося від учасників нашої спільноти.