Ларс Хвам живе в Копенгагені, Данія, і любить мову програмування ABAP. Створивши трек ABAP на Exercism, ми зустрілися з Ларсом і неспішно поговорили про те, як він потрапив в IT-індустрію.
Джонатан: Привіт і вітаю всіх. Мене звати Джонатан. Я ведучий подкасту Exercism, і сьогодні зі мною Ларс. Де ви зараз живете, Ларсе?
Ларс: Я в Копенгагені, Данія.
Джонатан: Клас. Супер. Тож трохи на північ від екватора. Я ж зараз дуже далеко на південь від екватора. Дуже радію, що ви сьогодні в ефірі. Дуже приємно, що ми змогли поговорити. І я одразу перейду до справи. До цього тижневого випуску. Тож, Ларсе, розкажіть трохи про себе. Як ви потрапили в IT? Як ви опинилися там, де зараз?
Ларс: Так, подивімося, де я зараз. Як ми вже обговорили, у Копенгагені. Але здебільшого працюю в консалтингу у сфері кастомного коду SAP ABAP. А як я туди потрапив? Як завжди, це довга історія. Але це IT. Тож поговорімо про те, як потрапляють у технології. Коли я був малим, а це було дуже давно. Я і мій однояйцевий близнюк. У мене є мій
Джонатан: У вас є однояйцевий близнюк, тож як я можу знати, що сьогодні говорить не ваш інший близнюк?
Ларс: займається Microsoft-речами.
Джонатан: Гаразд. Моторошно.
Ларс: речами. Тож просто запитайте в нього будь-що про SAP. А він не може запитати в мене будь-що про Microsoft. Бо я не зможу відповісти.
Джонатан: Так.
Ларс: Але коли ми були малими, ми почали. Гратися на Commodore 64, і я памʼятаю, як писав дуже прості програми мовою BASIC на Commodore, на чорно-білому, дуже маленькому телевізорі. Годинами цим займався, отримав новий компʼютер, писав QBasic на 386 і 486. Апгрейд до восьми мегабайтів памʼяті, ось які тоді були часи. Так, це був QBasic, програмування на Pascal. Зрештою перейшов на Windows. І багато працював із Visual Basic. Так, мені подобається Visual Basic. Це було десь у девʼяностих, а зрештою я почав запускати Linux. . І так. Для тих, хто памʼятає добрі старі часи Linux, була вебсторінка themes.org, де можна було завантажити теми для різних віконних менеджерів. Дуже Linux-ова річ. І думаю, це був перший раз, коли я по-справжньому занурився у спільноту, витрачаючи час на створення того сайту на PHP. Так,
Джонатан: Гаразд. Ого.
Ларс: Трохи штампів у мене назбиралося. Visual Basic, програмування під час докторської. Так.
Джонатан: Гаразд. Клас. Клас. Так, це гарно.
Ларс: А зрештою вступив до університету, здобув магістра з інформатики, програмував що завгодно і випадково отримав невелику роботу, бо мені... Так. Потрібні були гроші, щоб платити за оренду. І займався іншим програмуванням. Ось це й тримається зі мною останні десь 15 років, а саме розробка кастомного коду SAP ABAP. І так. Тож наступне, наступне питання. Чому? Чому воно затрималося? Бо ABAP зараз не дуже сучасна мова. Він багато в чому схожий на COBOL, але це також дуже цікава мова програмування, бо вона дуже широка, має багато різних інструкцій, і багато різних речей можуть піти не так.
Джонатан: Гаразд. Тож тут багато розвʼязування проблем і багато різного налагодження. Це така його природа?
Ларс: Так. Зазвичай я кажу, що займаюся такою роботою, бо мені справді подобається налагодження, а старого коду для налагодження тут предостатньо, правда ж? Ось минулого тижня я виправляв стару програму, якій було 20 років. Я такий: гаразд, клас, клас. І завжди, коли ми зазираємо в стару програму, навіть якщо я займаюся цим багато років, знаходиться. щось старе-нове для вивчення, якісь старі можливості, які використовувалися і досі працюють щодня, правда ж?
Джонатан: Гаразд, тож ви почали 15 років тому. У тій самій компанії, чи просто почали вивчати ABAP із SAP і переходили в різні компанії?
Ларс: Зараз у мене власна компанія, роблю цікаві речі й сам вирішую, що. Я також багато консультував різні консалтингові компанії і працював як інтерн. Тож тепер я на фрилансі й отримую фриланс-замовлення, щоб знову мати чим платити за оренду. Це важливо.
Джонатан: Так. . Схоже, це наскрізна тема вашого життя, а саме платити. Платити за оренду,
Ларс: так.
Джонатан: шукати способи заплатити.
Ларс: І при цьому витрачати занадто багато часу на проєкти з відкритим кодом, збиватися з курсу на щось складне.
Джонатан: Так. Тож чи маєте ви команду людей, з якими працюєте в межах свого бізнесу, чи ви радше самі в цьому сенсі? Як це має вигляд день у день або протягом тижня у вашій роботі?
Ларс: Тож я сам і маю власну компанію. Щодо співпраці, то я співпрацюю із замовником, правда ж? А ще у просторі відкритого коду в мене є багато добрих друзів у спільноті відкритого коду, які час від часу допомагають із деякими речами. І я допомагаю їм час від часу з деякими речами, тож це ситуація, де виграють обидві сторони.
Джонатан: Так. Тож ви насправді повністю відповідальні, думаю, за створення треку ABAP на Exercism, якщо я не помиляюся, або ж ви дуже залучені. До його створення. Розкажіть трохи про це.
Ларс: Так. Трек ABAP створили різні члени спільноти. І це переважно члени спільноти з відкритих проєктів abapGit. І звісно, ми трохи особливі, тож мусимо створити власний Git-клієнт з нуля, але це вже інша історія на інший день.
Джонатан: Так. Так. Так.
Ларс: Ось так. Різні люди долучаються до Exercism. . Однак трек ABAP трохи особливий, правда ж? Бо це мова програмування, у якій насправді досить складно почати, бо не можна просто завантажити середовище виконання JavaScript, як-от Node, чи середовище виконання Python. Зробити це в ABAP насправді не так уже й просто. Останній спосіб зробити це - контейнер, який, наскільки я памʼятаю, важив 16 гігабайтів.
Джонатан: 16
Ларс: Щоб це запустити, потрібно щонайменше 32 гігабайти памʼяті. І не так багато людей мають таку інфраструктуру під рукою. До того ж запускати на такій інфраструктурі було б неможливо з... не знаю. Інфраструктура під екосистемою, а треки - це все купа маленьких Docker-контейнерів, які запускаються, виконують код, перевіряють вправу й потім знову вимикаються.
Джонатан: Так.
Ларс: А запуск Docker-контейнера такого розміру може легко зайняти 10 хвилин.
Джонатан: Ні. Ні. Авжеж.
Ларс: Тож нам був потрібен інший підхід, і, на щастя, я вже працював над своїм статичним аналізом. Почав кілька років тому, і в ньому є абстрактні синтаксичні дерева. Тож ми насправді беремо цей код, перетворюємо його на JavaScript-код, запускаємо в Node і даємо зворотний звʼязок на цій основі. Тож ми кажемо, що підтримуємо не офіційну мову. І ABAP трохи особливий, як я вже не раз згадував: немає жодного справді доброго офіційного опису мови ABAP як такої. Не так, як в інших мов, які були спроєктовані. Думаю, ABAP переважно еволюціонував у те, чим він є, із сімдесятих чи коли там він починався. Тож ми вигадуємо це на ходу.
Джонатан: Тож які труднощі це створює у щоденній роботі? Мабуть, доводиться щодня дивитися на проблему свіжим поглядом і намагатися зрозуміти хід думок людини, яка це розробила, бо маєте дуже мало... Чи правильно буде сказати, що маєте дуже мало документації, на яку можна спертися, тож ви
Ларс: Документації багато, але вона не... вона лише текстова і не завжди. На 100% правильна.
Джонатан: Гаразд.
Ларс: Правильний спосіб - спробувати код і подивитися, що він насправді робить, правда ж? Звісно, багато речей у мові описані правильно. Але також, коли ми працюємо й будуємо щось у системі SAP, то зазвичай у одній системі працюють кілька розробників, і ця одна система. Понад 200 мільйонів рядків коду і понад 80 000 таблиць бази даних,
Джонатан: Оце так.
Ларс: І це добре. Мені це подобається. І особливо якщо все побудовано дуже тісно одне до одного, отримуєш багато класного статичного аналізу, який може повʼязати речі докупи, тоді як у мікросервісній архітектурі все слабко звʼязане. В обох підходах є плюси й мінуси.
Джонатан: Тож ви віддаєте перевагу монолітній структурі, чи це слушне зауваження, чи це трохи... що вам більше до вподоби,
Ларс: Так. Я віддаю перевагу моноліту, але так. Гаразд. Тож із базовим підходом краще керувати всім разом. Так. Клас. Це
Джонатан: Застарілий код. Так. Усе те, що існує давно, усе таке.
Ларс: Так. Мені подобаються старі речі. Це досить цікаво, правда ж? Я зазвичай кажу, що коли. Коли я зістарюся, то хочу зайнятися програмуванням на PL/I або APL, на одній із тих мов. Не знаю, мабуть, можу зробити це й на M, правда ж? Десь
Джонатан: Мабуть. У нас на цей момент усе під капотом. Подивімося, що маємо. ABL? Ви сказали APL чи ABL?
Ларс: APL. О, треку APL немає.
Джонатан: О, можливо, це можливість.
Ларс: PL/I. Треку PL/I немає. Гаразд. Гаразд. Це два треки, які хтось у спільноті
Джонатан: О, ви записуєтеся зараз. Це
Ларс: ні. Тож як це має вигляд щодня, наприклад, у треку ABAP? Трек ABAP - це наближення до того, що правильно, і ми завжди намагаємося зробити його на крок ближчим до 100%. Тож у нас є люди з правильними рішеннями, які просто не працюють на Exercism
Джонатан: Гаразд.
Ларс: через цей дивний пайплайн, який я налаштував. Але крок за кроком, день за днем це починає працювати. І ми просто додаємо все більше й більше модульних тестів до бекенду, до раннера Exercism і до всього іншого. І сподіваюся, колись це буде на 100% досконало, але
Джонатан: Хто знає. Хто знає, що з цього вийде. Тож скільки клієнтів у вас зазвичай протягом тижня? Один, два, три чи може бути аж до 10?
Ларс: Лише один або два.
Джонатан: Гаразд. І це триває вже якийсь час.
Ларс: Так. Так. Я займаюся консалтингом уже багато років.
Джонатан: І це здебільшого зосереджено в Копенгагені, чи під час пандемії зʼявилася можливість працювати віддалено з далекими місцями? Як у вас, чи багато подорожуєте, чи
Ларс: Багато подорожував у молодші роки, а тепер зазвичай сиджу вдома й працюю віддалено.
Джонатан: Гаразд.
Ларс: Це
Джонатан: Так. Тримаєте кавомашину теплою.
Ларс: Так.
Джонатан: Усе йде своїм ходом. Тож наостанок: ви казали, що програмуєте з досить юного віку і що цікавилися цим із доволі раннього віку. Чи був такий момент, коли програмування стало для вас зрозумілим? Чи був момент, коли воно клацнуло, чи це було щось, що ви природно розуміли змалку? Як би ви це описали?
Ларс: О, не знаю. Думаю, я завжди розумів, як програмувати, правда ж?
Джонатан: Так.
Ларс: Але зазвичай, у молодші роки це завжди було процедурне програмування. Памʼятаю, якось в університеті був вступ до функціонального програмування та логічного програмування. І це два, два абсолютно різні парадигми програмування. І, наскільки я знаю, є Prolog. Так, є трек Prolog. Тож тим, хто не пробував логічного програмування, раджу спробувати програмування на Prolog, а Standard ML, мабуть, також там, щоб розібратися, що ж... нове процедурне програмування, але є й багато іншого, чим можна зайнятися. Тож так, я вчуся нового щодня, тож нічого не клацнуло.
Джонатан: Усе ще боретеся з усім? Ні, це просто цікаво, бо мій досвід багато в чому такий. Треба зануритися в щось, наприклад у мову. І тоді раптом концепції, які були чужими, і за ніч щось зсувається. І це майже як «Ого, тепер усе цілком логічно». І деякі з тих, з ким я говорив у подкасті, казали, що мали схожий досвід. І я питав, як їм це вдалося. І вони: о, одна дівчина сказала, що просто уявляє програму як розповідь, а функції - це персонажі, і все таке. Це було справді цікаво. Але як ви вирішили, що саме ABAP - те, на чому зосередитеся? Це було просто «о, це оплачує оренду» чи «мені це справді подобається, я віддаю перевагу йому над JavaScript» чи щось таке, і
Ларс: Потрапляння в програмування завжди починається випадково, правда ж? Базові речі, потім ABAP, і все починалося випадково, і воно просто вирізнилося як досить складна мова програмування, бо вона така велика за кількістю різних інструкцій, тоді як у Java і JavaScript насправді не так уже й багато інструкцій. У них велика бібліотека.
Джонатан: Гаразд.
Ларс: Так.
Джонатан: Гаразд. Тож ви майже випадково відкрили для себе ABAP, і тепер, заглядаючи вперед на наступні 10 років, не знаю, чи хочете взагалі думати так далеко, який вигляд мають для вас наступні пʼять-десять років у плані програмування й бізнесу? Чи є у вас відчуття: ось де я хотів би бути, ось чим я хотів би займатися,
Ларс: О, ніколи не знаєш насправді, правда ж? Я продовжую займатися чимось, поки вважаю це цікавим, правда ж? Якщо це вже не цікаво, то я це покидаю й беруся за щось інше.
Джонатан: Гаразд, тож це
Ларс: план, правда ж? Він каже: це має бути цікаво, щоб займатися цим щодня, на мою думку. ABAP, імовірно, і через 10 років залишиться в меню, я так думаю. І все зводиться приблизно до цього. Я досить вибагливий, коли йдеться про мови програмування й технології. Тож я займаюся ABAP і JavaScript/TypeScript, а в інші мови намагаюся не залазити.
Джонатан: Так. Гаразд. Але якби я сказав: «Гаразд, Ларсе, тобі треба зараз покинути ABAP і JavaScript і взятися за іншу мову програмування». Чи є у вас уявлення, яку б ви хотіли? Так, я зробив би це.
Ларс: Так, ми вже говорили про APL,
Джонатан: Гаразд. Так.
Ларс: Дуже класна, дуже... мабуть, старша за мене мова, не знаю, близько до того. APL і PL/I, думаю, обидві старші за ABAP.
Джонатан: Гаразд. Ого. А чому саме вони, якщо цікаво? Що вас у них інтригує?
Ларс: APL я насправді не пробував, але в інтернеті є кілька симуляторів, які можна спробувати. Там багато грецьких літер, де все - це матриця, множення... Я не... Це просто має дуже дивний вигляд, і так, безглуздо. Але саме це й робить його цікавим, правда ж? Має бути якийсь виклик. А PL/I - це просто... щось інше. Не впевнений.
Джонатан: Щось загадкове й трохи
Ларс: Так. Не зовсім. Мені подобається братися за старе класичне, а не за всі ці новомодні штуки. Тож я, мабуть, міг би сказати Rust, але ні. Можливо, колись і візьмуся за Rust, але не тому, що мені це потрібно. Це не тому, що я хочу.
Джонатан: Так. І чи помічаєте ви, що кількість людей, які використовують ABAP, зменшується чи зростає, чи останнім часом був сплеск інтересу до цієї мови? Який ваш погляд на це?
Ларс: Так, це досить складно, бо ABAP - це великі системи, які працюють усередині великих міжнародних корпорацій, тож досить складно отримати реальні публічні цифри, які правильно показують, якими ці цифри насправді є. Але ходять чутки, що вік розробників, які знають це напамʼять, зростає і дедалі наближається до того, коли вони підуть з ринку.
Джонатан: Гаразд.
Ларс: Тож як і COBOL, правда ж? Це стара мова, і молодим людям вона не здається надто цікавою, правда ж? Тож це старі люди, як я. Але саме тому ми й зробили трек ABAP, правда ж? Ми хочемо залучити більше молодих людей до цієї мови, а Exercism - це хороша платформа, щоб спробувати багато різних речей. І почати дуже легко. Зареєструватися, клікнути, увійти. Почати писати код. Готово.
Джонатан: Так. І чи помітили ви, що багато людей проходять трек? Трек ABAP?
Ларс: Так. Зараз у нас близько 5 000 учнів.
Джонатан: Ого, це неймовірно. Так.
Ларс: Так, у вересні був вересневий виклик зі спільнотного коду, організований SAP developer advocates. Щоб залучити людей на платформу, спробувати деякі вправи з тим, що ми називаємо внутрішніми таблицями. В інших мовах це зазвичай масиви, а ми називаємо їх внутрішніми таблицями, а вкладені внутрішні таблиці - це те, що в інших мовах зазвичай називають масивом масивів.
Джонатан: Так.
Ларс: Тож ми отримали багато нових учнів завдяки цьому. А також багато відгуків, багів і проблем на GitHub. І це теж річ, до якої ми не дуже звикли у світі ABAP. Співпраця між кількома організаціями. Те, що код справді ділиться на GitHub, не є чимось дуже типовим для спільноти.
Джонатан: Це просто тому, що люди... усе було дуже розділено: одна компанія робить своє, інша компанія робить своє. І тому розробники не дуже спілкуються. Вони у своєму конкретному контексті, і обмін та співпраця трохи менші, чи чому так?
Ларс: Це також зумовлено природою системи SAP, бо це стандартна система. Вона може зробити будь-що, тож зазвичай, коли я допомагаю замовникам, це тому, що замовнику потрібно щось особливе.
Джонатан: Так.
Ларс: І це щось особливе з огляду на те, що робить їхній бізнес унікальним. Тож це, ймовірно, щось таке, що інші замовники не можуть використати і не будуть, бо цей замовник унікальний інакше, ніж інший замовник. Але є спільнота відкритого коду, яка розвивається й ділиться кодом, щоправда, зазвичай на рівні утиліт. Утиліт, як-от логування, обробка помилок чи щось таке. Але до цього дійде. У світі SAP на будь-що потрібно понад пʼять років.
Джонатан: Так. Просто щоб усе почало набирати обертів. Тож це одна з речей, які ми запитуємо в кожного, хто приходить на шоу. Можливо, ви бачили документ, який я вам надіслав, але ми зазвичай питаємо людей: яка та одна думка чи позиція, якої ви дотримуєтеся і на якій не підете на компроміс у світі технологій? Або, інакше кажучи, на якому одному «пагорбі» ви готові померти в IT, щоб ця річ стояла вічно? І це може бути настільки безглуздим, як «я завжди пишу логіку після CSS», якщо ви у фронтенді. Або це може бути справді дрібниця, або щось таке, як «я ніколи не користуватимуся GitHub», наприклад. Може бути, але треба вміти це аргументувати, викласти свою думку обґрунтовано. То яка ж та одна річ, та одна думка, яку
Ларс: Одна... одна. Одна думка.
Джонатан: Гаразд. Можу дати й дві. Можу дати й дві. Так. Три. Гаразд. Три. Можете мати три думки, бо я знаю, що технічні люди зазвичай зовсім не схильні мати власну думку.
Ларс: Так. Думаю, якби люди мене описували, то іноді в мене бувають дуже сильні думки щодо цього, і так. Тож одна з моїх головних думок: сказати «ні», це буде неможливо. Зробити щось інше, що краще пасує до рішення й технології. Тож сказати «ні» використанню таких інструментів, як Jenkins. Сказати «ні» Jenkins - це один із інструментів, які я люблю згадувати як такі, що нікому не варто використовувати, правда ж?
Джонатан: Чому? Чому? Чому так? Яка причина?
Ларс: Набагато легше тримати пайплайни близько до коду. Тож... я просто вважаю його застарілим.
Джонатан: Гаразд. Тож це як рівень абстракції, який не потрібно додавати, коли людина знає, що робить.
Ларс: Так. І є інші інструменти, які роблять речі краще. Ще один інструмент, який я люблю оминати, - це Eclipse. У світі Java, якщо озирнутися на пʼять-десять років назад, Eclipse зазвичай використовували для збірки Java-коду. З мого погляду, зараз ситуація така, що Eclipse навіть не використовують для збірки Java-коду. Зазвичай це якісь великі корпоративні застосунки та речі, які використовують в Eclipse і збирають через Eclipse, для чого він насправді не призначався спочатку. Є небагато інших способів це зробити і багато інших інструментів на вибір. Тож Eclipse затьмарено.
Джонатан: Гаразд. Так, мені подобається. І я дам вам ще одну думку. Яка інша, третя думка,
Ларс: Пробіли, чи то пробіли. Один із моїх побічних проєктів - статичний аналіз для ABAP. І насправді в ABAP багато різних інструкцій, багато різних способів робити відступи, регістр ABAP, нижній регістр і угорську нотацію, усе. Так. Наявність подвійних пробілів десь у тексті - це те, що мене справді виводить із себе.
Джонатан: Це тому, що воно все збиває, і це просто жах?
Ларс: Це просто збиває з ритму під час читання, як-от читання тексту чи фрагмента коду. О, тут два пробіли між... це застає мене зненацька.
Джонатан: Гаразд, гаразд, тож... Jenkins: тримайте пайплайни ближче до коду. Eclipse - не потрібен. І подвійні пробіли. Ось я дав вам три думки, які, здається, різняться за серйозністю. Ні, це справді класно. Ні, це чудово. І так, думаю, ви непогано зуміли відстояти свої позиції.
Ларс: А ще, коли йдеться про безперервну інтеграцію, не варто перетворювати безперервну інтеграцію на безперервне очікування.
Джонатан: Гаразд, тож код заливається, а потім він сидить і чекає, поки з нього зроблять PR. Це те, що ви
Ларс: щоб розробник отримував зворотний звʼязок швидко, а не чекав годину чи дві на будь-який фідбек.
Джонатан: Гаразд. Тож це тому, що системно це якийсь запобіжник? Тому воно там? Чи це просто пауза, щоб усе можна було перевірити, чи чому б
Ларс: Просто погана архітектура.
Джонатан: Так. Гаразд. Гаразд. Цікаво. Гаразд, тож останнє питання на сьогодні. Сподіваюся, вам було цікаво досі, але я хотів запитати ось що. Які рекомендації маєте для спільноти Exercism на цей тиждень? Якби могли порекомендувати спільноті одну річ, що б це було? Це може бути будь-що. Можна зʼїсти суші. Стрибнути в річку, що завгодно.
Ларс: Звісно, спробуйте трек. Це, мабуть,
Джонатан: Це я вам віддам безкоштовно. Це безкоштовна відповідь. Це безкоштовна відповідь, гаразд.
Ларс: Але звісно, як уже кілька разів зазначалося, памʼятайте про задоволення. Це має бути цікаво. Тож іноді, навіть якщо є якісь дивні ідеї, просто якщо це цікаво, спробуйте. Побачите, що вийде. Зазвичай саме це я кажу й про створення проєктів з відкритим кодом. Просто пірнайте в це, дивіться, цікаво чи ні. Спробуйте. Якщо не працює, нічого страшного. Тоді переходьте до наступного - чи то проєкт із відкритим кодом, чи мова.
Джонатан: Так.
Ларс: Бо у світі технологій і поза ним так багато всього, що воно того не варте, якщо весь час нудно.
Джонатан: Так. Ні, авжеж. Ні, це хороша рекомендація. Тож хай там у когось буде трохи задоволення у світі технологій. І наостанок, дуже дякую за ваш час сьогодні. Справді вдячний. Залишайтеся ще трохи, поки я... коли зупиню запис, ми ще поговоримо наприкінці. Але я просто хотів сказати велике спасибі. І всім, кому цікаво, зазирніть до треку ABAP. Пройдіть кілька вправ. Подивіться, як вам зайде. І якщо хочете вивчити щось, що існує вже давно і знову набирає ваги, важливості та впливу, можна так сказати, бо воно лежить в основі багатьох ключових міжнародних платформ. Люди, яких ви впізнаєте, компанії, які ви впізнаєте. Якщо хочете знати внутрішню кухню, то ABAP точно вартий уваги. Ларсе, ми додамо всі посилання на шоу, які у вас є, в опис нижче, коли дійдемо до цього. А поки що дуже дякую, і я звʼяжуся з вами за секунду. Так, ще раз дякую. Вдячний.
Слухаймо, навчаймося й надихаймося від учасників нашої спільноти.