Як настільна гра, що, здавалося б, немає нічого спільного з програмуванням, допоможе увійти в ІТ? Розповідає Олександр Вітер, інженер SoftServe, якому ґо, як і багатьом його знайомим, допомогла стати ІТ-спеціалістом і розвиватися в професії.
Що це за гра?
Ґо — це стратегічна настільна гра для двох. Гравці по черзі ставлять чорні та білі камені на дошку з решіткою з горизонтальних та вертикальних ліній. Ціль гри — захопити якомога більшу територію дошки каменями свого кольору.
В Україні ця гра не дуже відома, але в усьому світі в неї грають десятки мільйонів людей, існують професійні ліги й асоціації, а переможці найсерйозніших світових змагань можуть заробляти за турнір сотні тисяч, а іноді й мільйони доларів та дозволити собі рівень життя елітних спортсменів відоміших дисциплін.
У 2016 році комп’ютерна програма AlphaGo перемогла одного з найсильніших у світі гравців у ґо, що стало важливою віхою в розвитку штучного інтелекту. Якщо в шахах програми вже декілька десятиліть домінували над біологічними гравцями, то з ґо все було не так просто, адже ця гра вважається складнішою, ніж шахи.
У шахах із розвитком партії залишається все менше фігур на дошці та все менше можливих сценаріїв розвитку подій, стає простіше прораховувати найкращі можливі ходи. У ґо ситуація прямо протилежна. Партія починається з абсолютно порожньої дошки, яка містить 361 ігровий пункт проти лише 64 у шахах, а кожен гравець має 180 ігрових фігур (каменів) проти лише 16 у шахах. Що далі розвивається гра, то більше каменів опиняються на дошці, більше перспективних місць для наступного ходу мають гравці, важче стає аналізувати ситуацію. Окрім того, якщо в шахах є історично перевірені дебюти, які майже обов’язково грати, щоб не програвати з перших же ходів, то в ґо набагато більше свободи та набагато сильніший вплив інтуїції.
А який зв’язок між ґо й ІТ?
То як саме ця гра, що, здавалося б, жодним чином не стосується програмування (якщо не брати до уваги розробку ігрових програм), допомогла мені та багатьом моїм знайомим стати ІТ-спеціалістами? І як вона може стати в пригоді вам?
Річ у тім, що під час гри в ґо люди розвивають декілька важливих навичок, необхідних для того, щоб бути хорошими фахівцями в ІТ. Натренувавши свій мозок і підготувавши таким чином фундамент, ви легше опануєте обрану ІТ-спеціальність, а вивчення нового, особливо в технічних напрямах (розробка, автотестування, devops тощо) йтиме як по маслу.
Як важливі для айтівців навички розвиває ґо?
1. Вміння тримати в голові великі обсяги абстракцій
Безперечно, найголовніше вміння, яке розвиває ґо — це навичка бачити оптимальні варіанти ходу й уявляти, як розгорнуться події на дошці через 5, 10, 20, 30 ходів.
Звичайно, це приходить із досвідом. Більшість початківців не думають про наслідки навіть на один хід уперед, а просто ставлять камені, як їм подобається чи здається правильним. Але вже за декілька місяців активних тренувань ця навичка сильно прогресує. І потім, коли ви починаєте вивчати програмування, де треба тримати в голові купу інформації про взаємозв’язок різних об’єктів і функцій, то з подивом проводите аналогію і розумієте, що в роботу включаються ті самі нейронні зв’язки, які були натреновані тримати в голові безліч варіантів майбутніх ходів — як ваших, так і опонента.
2. Вміння керувати часом
Ще одна важлива навичка, яку розвиває ґо, — це вміння раціонально використовувати час. Усі серйозні партії та навіть більшість дружніх передбачають контроль часу: гравці мають обмежену кількість годин/хвилин на обдумування ходів. Тобто недостатньо мислити правильно, треба це робити ще й швидко. Якщо це не один із престижних турнірів, де на кону мільйони доларів, а звичайний турнір міського чи обласного рівня, то умовним стандартом вважається одна година часу на партію кожному гравцю. Якщо взяти до уваги те, що в середньому за ці 60 хвилин кожен гравець має встигнути зробити 120-150 ходів, стає зрозуміло, що важлива навіть не кожна хвилина, а кожна секунда.
Важко переоцінити важливість уміння швидко мислити й приймати правильні рішення в умовах часових обмежень і стресу. Для тих, хто опанував цю здібність, багато аспектів роботи в ІТ стають значно простішими. Які це аспекти?
- Live coding на співбесідах. Написати алгоритм сортування за 15 хвилин? Легко! Ще й 10 хвилин залишиться попити каву.
- Дедлайни. Не будуть проблемою, бо ваш мозок звикне не відкладати важливі справи до останнього. Крім того, з великою ймовірністю ваша продуктивність буде значно вища, ніж у ваших колег, і те, що вони роблять 1-2 дні, ви будете робити за декілька годин (менеджменту про це знати необов’язково 😉).
- Хакатони, змагання з програмування. Атмосфера дуже схожа на те, що відбувається на турнірах з ґо: всі заряджені й готові до боротьби, а часу обмаль. Щоб перемогти, треба бути не тільки розумнішим за інших, але й швидшим за них.
3. Вміння працювати в команді
Здавалося б, яка може бути командна робота в грі, де лише двоє гравців грають один проти одного? Насправді ж сама партія — це лише частина світу ґо. Не менш важливим є післяігровий аналіз, до якого зазвичай долучаються не тільки двоє безпосередніх гравців, а й усі зацікавлені: розбирають сильні й слабкі ходи, аналізують, що можна було б зробити інакше і до чого це призвело б. Це допомагає всім залученим ставати сильнішими та не допускати проаналізованих помилок у майбутньому.
Проводячи аналогію з ІТ-світом, я сказав би, що це схоже на код рев’ю (перевірку вихідного коду програми для виявлення помилок — прим. ред.) та ретроспективу спринта. Розбір помилок у партіях ґо (особливо в програних) привчає адекватно ставитися до критики під час код рев’ю та краще аналізувати слабкі моменти команди під час ретроспектив.
4. Вміння вчитися на своїх помилках і ставати краще
У ґо є багато рівнів майстерності. За азійською традицією учнівські розряди називаються кю, а рівні майстрів — дан. Людина, що вивчила правила гри, але ще не зіграла жодної партії, має 30-й рівень кю. У процесі вивчення нових прийомів, аналізу власних помилок та набуття досвіду людина переходить від 30-го до 29-го кю і т.д., доки не дійде до 1-го кю — це максимальний учнівський рівень, дійти навіть до нього займає декілька років. Після цього, якщо людина продовжує прогресувати та стабільно виграє в інших людей із таким же рівнем, вона стає майстром та отримує 1-й дан, після чого цифри вже зростають — 2-й дан, 3-й і так до 9-го.
Якщо проводити аналогію з градацію рівнів в ІТ, то умовно можна сказати, що двозначні кю (30-10) — це рівень джуна, однозначні (9-1) — це рівень мідла, а справжні майстри (1-9 дан) — це сеньйори.
Як в ІТ деякі люди застрягають на певних рівнях і роками залишаються джунами чи мідлами, не доростаючи до рівня сеньйорів, так і в ґо теж є багато людей, що роками залишаються на тому чи іншому рівні кю, не стаючи майстрами. В обох випадках зростання вимагає здобуття нових знань, тисяч годин практики, аналізу власних слабких місць та їхнього посилення.
5. Вміння бути спочатку учнем, а потім ментором
Усі люди починають з нуля. Навіть найкрутіші мегасеньйорні сеньйори колись були джунами, а ще до того навіть не вміли писати код. Так само й майстри ґо не народилися зі своєю майстерністю, а здобули її завдяки рокам і десятиліттям важкої інтелектуальної праці.
Хоча багато людей можуть сказати, що самостійно навчилися грати в ґо чи самостійно опанували програмування, насправді навіть у них були ментори. Просто не завжди ментор — це конкретна людина. Ментором може бути книжка, програма з підказками чи відеотуторіал.
Починаючи з нульовими знаннями, ми вчимося засвоювати великі обсяги інформації, робити власні висновки й використовувати ці знання в реальних партіях та на реальних проєктах. Досягши певного професійного рівня, ми можемо передавати свої знання менш досвідченим колегам. Тільки не варто забувати, що ми колись були на їхньому місці й теж багато чого не знали. Кожен пройде свій шлях, треба лише дати йому шанс.
6. Знання англійської мови
Не всі змагання проводяться лише для найсильніших гравців у світі. Наприклад, щорічний Європейський ґо конгрес збирає сотні людей, рівень майстерності яких коливається в дуже широких межах: зазвичай від 20-го кю до 7-го дана й вище. Гравців часто розбивають на групи, де їм дістаються суперники близького до них рівня. Тобто навіть не бувши майстром, ви все одно маєте шанс добре виступити на турнірі.
Але оскільки на турнір з’їжджаються люди з усієї Європи, ви можете собі уявити, люди скількох різних національностей, культур і мов збираються в одному місці. Тож без універсальної мови спілкування — англійської — буде доволі важко орієнтуватися під час турніру та комунікувати з іншими людьми.
Вивчивши англійську до більш-менш упевненого розмовного рівня, ви матимете велику перевагу й над конкурентами в ІТ, коли будете шукати роботу. Як жартують самі розробники: «Головна мова програмування — це англійська».
Фінальний хід
У гравців в ґо та ІТ-спеціалістів є ще дещо спільне: вони однаково інтелектуально страждають у складних ситуаціях 😀 Подивіться на наступні кадри, на яких Ке Цзе, найкращий у світі гравець у ґо, змагається з черговою версією AlphaGo. І просто уявіть, що хлопець сидить не перед дошкою з каменями, а перед монітором із заплутаним кодом.
Якщо вас зацікавила гра ґо, але ви не знаєте нікого, хто грав би в неї у вашому місті, на сайті Української федерації ґо є список усіх клубів України з контактними даними, а також безліч іншої корисної інформації. Зустрінемося на турнірах!
Читайте також
Стартувати в IT в 35: як шахи, танці та дитина привели мене в тестинг
Програмування чи тестування? Що вибрати початківцю в ІТ
Які навички варто розвивати, щоб бути успішними у майбутньому
Дякуємо!
Тепер редактори знають.