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

Почнімо з Python!

Час від часу ми зустрічаємо людей, які одразу пірнають у глибину з головою, беручися вчитися програмувати! Карл, відомий в інтернеті як «Meatball», почав опановувати програмування на треку Python в Exercism... це чималий подвиг, але хто ж не любить викликів!

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

Джонатан: Що ж, вітаю й запрошую до подкасту Exercism. Мене звати Джонатан. Для мене честь знову ділитися життям та історіями з вами, де б ви не були. Тож сьогодні в нас гість на імʼя Карл. Я одразу перейду до справи й попрошу Карла трохи розповісти про себе. Тож, Карле, звідки ви родом? Чим зараз займаєтеся? І як ви натрапили на Exercism? Карл: Що ж, я живу в місті Гетеборг у Швеції і зараз навчаюся на денній формі. А коли я почав займатися IT і програмуванням, я користувався Exercism. Я почав із треку Python і вважаю, що для більшості початківців найкраще підходить саме трек Python, бо синтаксис Python доволі прямолінійний і, на мою думку, доволі природний. А якщо говорити про типи в мові програмування, то Python доволі привітний. У ньому не так багато типів, типів даних, але... Так. Тож я почав виконувати концептуальні вправи й іти за силабусом. Робив це десь кожні вихідні, по одній-дві вправи. За якийсь час, коли я... бо спочатку... я робив багато помилок, які тепер згадую. Тепер, коли я програмую довше, я можу розпізнати ті помилки. Тож не обовʼязково, щоб код був ідеальним від самого початку. І мені сподобалося те, що коли я... коли я виконав багато вправ на треку Python, я перейшов на трек Ruby. Гаразд. Ruby - чудова мова, щоб перейти на неї з Python, бо між ними багато схожого. І... синтаксис Ruby доволі схожий, але є деякі відмінності. Наприклад, Ruby значно більш ООП, обʼєктно-орієнтований. Тож, гадаю, для початківця це може бути досить гарною подорожжю: почати з Python, а потім перейти на Ruby. І до зустрічі наступного разу. Джонатан: Ви почали з Python. Часто люди приходять на Exercism, уже маючи трохи досвіду в розробці. Якщо вже є якісь попередні знання й досвід у розробці та написанні коду, то Exercism зазвичай використовують, щоб підтягнути конкретну мову. Але чи правильно я розумію, що ви прийшли зовсім без досвіду в коді чи програмуванні й почали саме з Exercism? Карл: Я раніше трохи працював із Scratch, із візуальним програмуванням, але ніколи по-справжньому з кодом. Починати з нуля важко. І, гадаю, це те, що обʼєднує всіх програмістів. Початок схожий на пагорб: коли підіймаєшся на нього, далі стає легше. Джонатан: Я думав, ви скажете, що підіймаєшся на пагорб, а тоді пагорб стає більшим, ти підіймаєшся ще трохи, а він усе росте й росте. Чи бувало у вас таке відчуття? Був момент, коли все стало зрозуміло. Чи була мить, коли ви подумали: «Окей, так, я це розумію». Карл: Ну, насправді, щоб повністю щось зрозуміти, потрібно багато часу, і більшість на початку часто... багато використовують цикли while, бо ними можна керувати значно легше, ніж циклами for, адже для циклу for потрібно заздалегідь сказати, якої довжини має бути цикл. І я думаю... коли я навчився правильно використовувати цикл for, а не надмірно вживати цикли while, тоді програмування для мене клацнуло, а точніше, клацнуло розуміння того, як працюють цикли. Джонатан: Окей, тож це був такий момент, коли ви відчули: гаразд, ця концепція мені зрозуміла. А потім ваше розуміння циклів перейшло й на інші концепції, які почали потроху ставати зрозумілішими? Скажу зі свого досвіду. Я теж вивчав Go на треку Go. І цикли не мали жодного сенсу, доки я не витратив, здається, близько трьох днів на вправи й документацію, розбираючи все по частинах, крок за кроком. І досвід проходження циклів та спроби їх зрозуміти насправді дуже вплинув на моє загальне розуміння коду й того, як працюють функції та все таке. Чи було у вас схоже, як гадаєте? Карл: У Python, щоб розвʼязати різні задачі, ми часто перебираємо щось. Це більш-менш усе, що ми робимо в Python. У Python ми перебираємо елементи, щоб розвʼязувати задачі. Тобто цикли дуже важливо розуміти повністю. Коли ми справді добре розуміємо цикли в Python, можемо робити багато чого, просто тому що все побудовано на перебиранні обʼєктів. Джонатан: Класно. Отже, ви зараз навчаєтеся, ви коротко згадали перед записом про математику, фізику. Які теми ви зараз вивчаєте? Які предмети зараз у вас? Карл: Я вивчаю програмування, математику і фізику. Джонатан: І як вам усе це? Карл: Річ у тім, що я насправді проходив Exercism як підготовку до тих курсів із програмування. І я зрозумів, що тепер знаю значно більше, ніж охоплюють ті курси. Джонатан: Це чудово. Карл: Я не так багато з них виношу, бо натомість вивчаю марксизм. Джонатан: Тобто ви хочете сказати, Карле, що людям варто проходити Exercism замість університетського диплома? Карл: Ну, якщо вивчати компʼютерні науки, то, мабуть, справді трохи більше дізнаєшся про те, як працює компʼютер, про біти й таке інше. Тоді як Exercism учить лише програмування й розвʼязування задач та всю логіку в цьому. Гадаю, сенс іти до університету все ж є. Джонатан: Я трохи вас підколював, бо, гадаю, ми б, мабуть, образили багатьох людей з університетськими дипломами, якби сказали їм, що вони нічого не знають. Тож облишмо це. Карле, розкажіть, я поставлю ще кілька запитань уже про дорослішання. Як це... намагаюся сформулювати. У дитинстві вам подобалося розвʼязувати задачі? Вас цікавили, скажімо, Lego чи щось таке? І питаю я про це тому, що коли люди займаються програмуванням, часто є природне задоволення від розвʼязування задач. Тож коли ви росли, чи було у вас багато захоплень чи занять, які були радше технічними? Розкажіть трохи про це. Карл: Ну, Lego мені подобалося. Але не те щоб... У дитинстві я добре знав математику. Це теж розвʼязування задач, спроби розвʼязати різні математичні задачі. Гадаю, насправді в програмування мене привів просто... мій загальний інтерес до IT, мені дуже подобаються компʼютери. І мені дуже подобається... Дякую. Щоразу, коли в когось проблема з компʼютером, вони кажуть: «О, можеш допомогти?» Іноді це трохи дратує, але насправді часто дуже весело. Тож я дуже зацікавився компʼютерами, і це привело мене до цікавого програмування. Джонатан: Окей, наскільки я розумію, ви вже пройшли чотири-пʼять треків на Exercism, чи, точніше, вивчили чотири-пʼять мов за допомогою Exercism, так? Карл: Так. Я почав десь на шести треках. Але пристойно я знаю лише чотири. Джонатан: Окей, і які саме? Це Python, Ruby. Карл: Python, Ruby, JavaScript і TypeScript, а ще я досить непогано знаю Elixir. Джонатан: Окей, і з усіх цих мов яка вам найбільше сподобалася з погляду навчання? Карл: Мені дуже подобається Elixir. Мені дуже подобається, як цією мовою пишеться код. Гадаю, це дуже... дуже цікава мова для написання коду, але вона дуже відрізняється від того, до чого я звик в інших мовах. Це наче в якийсь момент починаєш усе з нуля. Так. Але, гадаю, якщо хтось справді хоче вивчити справді потужну мову, то JavaScript саме така. На мою думку, це одна з найпотужніших мов, які можна знати. Джонатан: Окей, тож JavaScript, виправте, якщо помиляюся, більш інтерпретована мова. Чи слушно так казати? А Elixir, мабуть, більш функціональна. Так? Карл: Так. Джонатан: Окей, тож вони досить різні за своєю природою. Мені цікаво, що вам, схоже, подобаються обидві, увесь спектр цих двох мов. Що саме в Elixir вам здається цікавим чи приємним? Можете це сформулювати? Карл: Ну, це функціональне програмування. У нас є ці... Є ці функції, і ми маємо поєднати їх усі докупи. І за допомогою всіх цих функцій ми маємо розвʼязати задачу. І це означає, принаймні для мене, що я сильно... документація Elixir дуже важлива, щоб насправді щось зробити. І документація Elixir, на мою думку, чудова. Тож шукаєш потрібні методи, і, на мою думку, це дуже цікаво. Джонатан: Тож це майже як складати пазл, можна сказати, де все збираєш докупи, щоб побачити задачу. Карл: Збираєш усе докупи, щоб побачити пазл. І, як я казав, мені дуже подобається, як цією мовою пишеться код. Тож це дуже гарний пазл. Джонатан: Окей, класно. А на якому ви місці на тому треку? Ви вже пройшли практичні вправи чи ще на концептуальних? Карл: Для цієї мови є багато концептуальних вправ. Здається, близько 20 або навіть більше. Я ще на концептуальних вправах, виконав, мабуть, відсотків 90, тож майже завершив. Джонатан: Чудово, це дуже класно. Справді дуже класно. Тож, Карле, хочу дізнатися трохи більше про життя поза межами коду й розробки. Що вам подобається робити у вільний час, які у вас захоплення? Чи є щось таке, чим би ви займалися весь час, якби могли, окрім програмування? Карл: Ну, якщо не можна казати «програмування», то у вільний час я люблю пограти у відеоігри, а ще люблю кататися на велосипеді. Це теж весело. Джонатан: Гірський велосипед чи шосейний? Карл: Шосейний. Джонатан: Тож ви їздите на велосипеді? Розкажіть трохи, бо ж ви у Швеції, так? Так. А там, де ви живете, рівнинно? Горбисто? Є гарний океан? Бо в мене таке враження про Швецію, що там є океани. Карл: Так, там, де я живу, доволі рівнинно. Але якщо поїхати на північ, там більше горбів. Джонатан: Зараз у Швеції йде сніг? Відчувається, що вже починає холоднішати. Карл: Минулого тижня, здається, йшов сніг, але зараз снігу немає. Джонатан: Окей, а ви їздите на велосипеді по снігу? Карл: Так. Джонатан: Справді. У нас є ще один... можливо, ви знаєте Брайана. Брайан, він один із наставників Elixir. Брайан Андервуд, він теж живе у Швеції, здається, у Стокгольмі, і він бігає посеред зими, бігає темними ночами у Швеції. Тож я подумав, що це досить, досить класно. А ви часто їздите на велосипеді, раз на тиждень, двічі на тиждень? Чи це щось регулярне? Чи просто... Карл: Я, я, коли я їду, я доїжджаю велосипедом до автобусної станції, а потім їду автобусом від станції. Джонатан: Окей, і тоді просто знаходите гарне місце і... Тож ви подорожуєте автобусом. Карл: Я доїжджаю велосипедом до автобусної станції, а потім їду автобусом. Джонатан: Зрозуміло. Окей, класно. Карле, а як далеко від вас університет? Ви зараз живете вдома чи орендуєте помешкання? Як у вас усе влаштовано? Карл: Я живу вдома. Це за 30 кілометрів. Це займає... не знаю. О, зачекайте. Так, 30 кілометрів, напевно, правильно. Це десь хвилин 40. Джонатан: Окей, тож не так і погано, але все одно досить далеко. Тож скільки вам ще років навчання залишилося до виходу в реальний світ, так би мовити? У вас ще чотири роки навчання. Ви зараз на першому курсі? Карл: Так. Джонатан: Окей, вау. Тож ви завершили перший рік, а навчання триває чотири роки. Окей. А чи є у вас уявлення про те, яка ваша мрія на майбутнє, чим би ви хотіли займатися як карʼєрою, чи якісь думки про це? Карл: Ну, я завжди хотів працювати з космосом, бо, на мою думку, це класно. Не в астрофізиці чи щось таке, а, можливо, якесь програмування навколо космічних речей. У нас є Європейське космічне агентство, це було б щось, але... Якщо не це, то, мабуть, просто... не знаю, звичайна робота на backend була б приємною. Джонатан: Просто звичайний backend, мені подобається, як ви це сказали. Для мене це звучить так просто й легко. А чи хотіли б ви колись переїхати кудись інде, не до Швеції? Чи вам подобається у Швеції? Які думки про це? Слухайте, я ставлю запитання, про які ви, можливо, ще навіть не думали, бо вам ще кілька років до того, як доведеться робити цей вибір. Але космос звучить справді захопливо. Як ви збираєтеся цього досягти? З чого почнете? Карл: Я, чесно кажучи, гадки не маю. Ніколи по-справжньому не думав, як саме, але... Ну, побачимо. Це радше мрія, ніж справжній план. Але відповідаючи на ваше попереднє запитання, я справді думав, можливо, пожити в Канаді чи десь так, але, мабуть, усе одно житиму в північній частині світу. Джонатан: Окей, тож холод, лід і сніг. Вас це влаштовує? Так. Карле, у вас є брати, сестри? Карл: У мене є молодший брат. Джонатан: Окей, тож вас двоє. А йому подобається програмування? Ви вчите його того, що вивчаєте й знаєте? Карл: О, йому насправді не подобається програмування. Не знаю. Джонатан: О, справді? Тож спільного немає. А ви з ним теж граєте в ігри? Карл: Іноді граю з ним в ігри, так. Джонатан: Він значно молодший, чи, мабуть, зараз ще в школі? Карл: Він молодший за мене десь на пʼять років. Джонатан: Окей, тож різниця у віці досить помітна. О, класно. Чудово. Тож повертаючись до Exercism і вашої участі: зараз ви супроводжуєте трек Python, якщо не помиляюся? Так, чи долучаєтеся. Долучаєтеся, окей, класно. Одного дня супровід. А як вам це? Що ви винесли з цього досвіду? Карл: Ну, люди на треку Python справді класні, і з ними дуже цікаво працювати. Бо зараз я зробив багато документації, і ми насправді вчимося писати документацію, а ще часто доводиться багато досліджувати. Тож маємо багато документації й багато вчимося, бо мусимо прочитати багато документації інших людей. І справді дуже глибоко занурюємося в концепції. Джонатан: Тож чи сподобалося вам це саме як дисципліна в контексті внеску? Карл: Так, і я багато вчуся, коли читаю цю документацію. Джонатан: Ні, це справді класно. Тож щодо внеску в Python зараз: чи думаєте ви, що хотіли б почати долучатися до Elixir і Ruby? Як ви це бачите? Карл: Ну, так, я можу уявити себе в ролі дописувача до треку Ruby, а от Elixir, мабуть, ні. У мене є довгостроковий план долучитися до треку TypeScript, але побачимо. Гадаю, наступні пів року я насправді залишуся на треку Python. Джонатан: Окей, класно. Тож розкажіть, можете трохи пояснити, що таке TypeScript? Просто дайте мені відчуття, у чому суть. Питаю, бо я про нього чув. Але чув, що він наче... зміцнює JavaScript, але знову ж таки, скажіть, якщо я зовсім помиляюся. Він ніби допомагає трохи перевіряти JavaScript на безпечність, але, можливо, я помиляюся. Що це таке? Карл: Що це таке? Ну, це досить влучний опис. У мене був курс із front-end, і викладач використовував JavaScript, робив базовий JavaScript у HTML. І я скопіював цей код у TypeScript. А TypeScript такий: о ні, так робити не можна. Це небезпечно. Тож багато в чому саме про це, про те, щоб код був безпечним. Щоб він не падав і не ламався. Тож він додає типи, щоб не було конфліктів типів. І загалом підказує робити безпечні речі, а не небезпечний код. Так, це окрема мова, але вона дуже схожа на JavaScript. TypeScript часто можна уявляти як JavaScript, на який вдягнули броню. Тож він наче захищений. Джонатан: Окей, тож це окрема мова. У мене в голові було враження, що це майже як плагін до JavaScript, але ви кажете, що це насправді цілком окрема мова. Карл: Гадаю, так. Вони дуже схожі, тож, можливо, це те саме, наче плагін, але я волію думати про нього як про окрему мову, бо в ньому є кілька ключових відмінностей. Джонатан: Я, мабуть, щойно образив усіх фанатів TypeScript, сказавши, що це плагін для JavaScript. Упевнений, це викличе цікаві думки. Але для вас саме безпекова частина TypeScript робить його можливістю, вартою глибшого вивчення. Так? Карл: Ну. Насправді мене привів до TypeScript те, що моя бібліотека React не підтримувала звичайний JavaScript і підтримувала лише TypeScript. Я звик до TypeScript і вважаю, що він справді хороший. Він також робить код зрозумілішим, коли використовуєш типи, бо насправді бачиш: окей, сюди надходить число, а на виході буде рядок тексту (англ. string). Читати стає легше. Джонатан: Окей, ви там згадали React Native. Ви віддаєте перевагу front-end розробці чи back-end? Наскільки я розумію, ви більше любите back-end. Але чи потроху займаєтеся й front-end? Карл: Я трохи займався frontend, але я жахливо поганий у CSS. Тож зазвичай намагаюся знайти якусь хорошу UI-бібліотеку й використати її. Джонатан: Коли ви кажете, що погано знаєте CSS, що саме маєте на увазі? Просто не розумієте його, чи він заплутаний, чи в ньому занадто багато... У чому саме для вас складність? Карл: Річ у тім, що є дуже багато всього, що можна призначити обʼєкту, такого дуже... О, наприклад, прибрати щось: коли створюєш посилання в CSS чи в HTML, під текстом зʼявляється лінія. І щоб її прибрати, треба додати text-decoration і написати none. Це насправді її прибирає. І треба памʼятати так багато всього. А найдратівливіше в CSS те, що коли робиш зміну в коді чи в CSS, це часто ламає щось інше. Тож доводиться: окей, я розвʼязав цю проблему. Тепер зʼявилася інша, і треба розвʼязати її, і так далі. Тож воно просто... Джонатан: Тож воно просто перекидає проблему кудись далі. Це, мабуть, страшенно дратує. Мабуть, мій єдиний досвід із CSS — це навчання, теж спроба вивчити React. І там так багато змінних, як ви кажете, так багато варіантів. Розширювати чи обмежувати? І якщо зробиш одне, то зміниться ця кнопка. І поки схаменешся, усі твої component роблять різні речі, якщо не бути уважним. Джеремі в Exercism справді добре знає CSS, але, гадаю, він просто знає дуже багато про всі його різні аспекти. Тож для вас front end — це не те, що вам подобається так, як більш back end. Карл: У мене немає проблем із програмною частиною front end, але сам вигляд мені не дуже подобається. А back end, принаймні для мене, це більше принцип «якщо працює, не чіпай». Джонатан: Так, не чіпай, хай працює. Мені цікаво, як люди схильні обирати щось одне. Чи знаєте ви, що саме в back end вам подобається? Ви кажете, що вам подобається те, що воно просто працює. Може, логічне продумування й обробка речей у back end? Це той аспект, який вам подобається найбільше? Карл: Так, мені це подобається, бо там переважно логіка й налаштування різних структур баз даних. Оце переважно все, хоча я не дуже добре знаюся на базах даних. Джонатан: Це класно. Чудово. Тож, Карле, у мене є ще кілька запитань. Мені дуже приємно було трохи дізнатися про те, звідки ви й що вам подобається робити. Чи могли б ви назвати кілька ключових порад чи речей, які б ви рекомендували тому, хто тільки починає вчитися програмувати? Можете виходити з того, що в людини, можливо, науковий бекґраунд, і дати поради для таких людей. Але якби дивитися зовсім з іншого боку, що, на вашу думку, варто робити постійно? Карл: Постійно? Ну, гадаю, варто почати з простої мови. Не варто починати з Rust, C++ чи C. А тоді вже... Знаєте, Джун казав щось подібне, але... Коли ми бачимо задачу, варто прочитати її, зробити перерву, подумати, як ми її розвʼяжемо, а тоді повернутися й насправді розвʼязати, бо... Добре дати мозку опрацювати, як саме ми розвʼязуватимемо задачу. Ще одна річ, гадаю, це... намагатися не рухатися надто швидко. Зробити трохи зараз, трохи потім, бо, скажімо, коли ми робимо багато концептуальних вправ, краще дати цій інформації засвоїтися, ніж робити всі концепції одного дня, бо тоді, ймовірно, ми просто заплутаємося. Джонатан: І як усе застосовується. Окей, класно. Тож не поспішаймо. Дамо собі простір обміркувати все. І чи сказали б ви, що рухатися повільніше, глибоко засвоювати речі краще, ніж швидко, і, схоже, саме це ви й кажете, краще, ніж швидко ковзати по поверхні? Карл: У деяких мовах, можливо, достатньо вивчити синтаксис і... і базові речі, а потім перейти до більш реальних сценаріїв і вже там заглибитися. Щодо JavaScript, я вивчив основи, а потім робив проєкти на React, і там... трохи вивчив нове й заглибився в мову. Джонатан: О, класно. Окей, гарно. Чудово. Тож, Карле, у мене є ще одне запитання на цей тиждень. Яка ваша рекомендація для спільноти цього тижня? Ваша особлива рекомендація, і це може бути будь-що. Це може бути, знаєте, покататися на велосипеді по снігу. Може бути стрибок у крижану воду чи похід у сауну, якщо ви у Швеції. Якою буде ваша рекомендація для спільноти? Карл: Так, ну, я не... гадаю, це... це дуже важко — їхати велосипедом по снігу. Тож я не рекомендую це людям. Джонатан: Так. Карл: Але, гадаю, скажу те, що казав раніше. Якщо застряємо на якійсь задачі, варто зробити перерву. Не варто сидіти там іще кілька годин, просто намагаючись її розвʼязати. Краще зробити коротку перерву, а потім повернутися до задачі. Джонатан: Окей, класно. Тож цього тижня ваша рекомендація: якщо потрібно щось вивчити, сповільніться, зробіть перерву, випийте кави. Ви пʼєте каву? Карл: Ще ні. Джонатан: Ще ні. Окей. Ніколи. Карл: Я насправді пʼю лише воду. Це, мабуть, і є моя особливість. Джонатан: Окей, чудово. Це, кажу вам, зекономить вам багато грошей у подальшому житті. Чудово. Окей, Карле, було справжньою честю поговорити з вами сьогодні. Дякую за ваш час і дякую за весь ваш внесок у різні треки та за те, що ви долучаєтеся до Exercism. Ми це дуже цінуємо. Мені було дуже приємно знайомитися з вами останні кілька місяців, особливо через сервер Discord, який ми вели. Здається, це були «Experts», ви були на Discord-сервері Elixir? Карл: Або когорта, або експерти. Джонатан: Так, я впевнений, що бачив вас там досить часто, і це було чудово. І так, дякую за ваш внесок. Було чудово. Тож з нетерпінням чекаю нашої наступної розмови і дуже дякую за ваш час. Тож просто залишайтеся на лінії, і ми все завершимо. А всім дякую за прослуховування. З вами спілкувалися я, Джонатан, і Карл, і до швидкого звʼязку. Бувайте. Карл: Бувайте.

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

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