Інтервʼю з Раяном Поттсом, у якому він і Джеремі Волкер обговорюють Delphi, те, чого він навчився як контрибʼютор Exercism, і його досвід програмування в галузях, які досі «офлайн».
Привіт, Раяне. Дякую, що знайшли час поспілкуватися зі мною. Ви - мейнтейнер треку Delphi на Exercism. Як ви прийшли до Delphi?
Я працюю в компанії, яку заснував мій батько. Вона розробляє програмне забезпечення ще з 80-х: почала з Microsoft Pascal, а згодом перейшла на Turbo Pascal від Borland. Я прийшов працювати в компанію у 96-му, приблизно в той час вона почала отримувати запити на створення програм, які працювали б у Windows, а не в DOS. Як на диво, Borland саме випустив Delphi 1. Це ідеально нам підходило, адже більшість модулів, розроблених за ці роки, можна було використовувати й далі. Більше не потрібно було починати все з нуля у VB чи VC, щоб підтримувати Windows.
А Delphi ви й досі використовуєте щодня?
Так, там, де я працюю, виробляють машини для дослідно-конструкторських випробувань і дрібносерійного тестування в автомобільній промисловості: шини, автомобільні сидіння, газогенератори подушок безпеки, а також краш-тести. Усі виготовлені системи використовують кілька автовиробників по всьому світу, а також їхні постачальники.
Програмне забезпечення, над яким я працюю, керує цими різними типами машин. Я розробляю інтерфейс користувача, визначаю послідовності тестів для автоматизованих частин випробувань, інтегрую різні точки вводу й виводу, як аналогові, так і цифрові. Він має бути максимально зручним, щоб людина з мінімальною підготовкою почувалася досить впевнено, працюючи з ним.
Моя робота зовсім не потребує вебпрограмування. Усе, що я роблю, відбувається в Delphi на Windows. Іноді доводиться нашвидкуруч написати невелику «користувацьку команду» на C++, яку я потім завантажую в плату процесора збору даних. Це паралельний компʼютер, що міститься в слоті PCI у компʼютері; у нього власний процесор, памʼять і операційна система.
Дуже цікаво поспілкуватися з людиною, яка зовсім не займається вебпрограмуванням. Сьогодні це здається досить незвичним, але, можливо, це лише співвідношення сигналу й шуму, про яке я чую щодня, а не відображення всієї індустрії.
Так, участь в Exercism дозволила мені трохи зазирнути в те, як живе «інша половина» компʼютерної індустрії. Я багато дізнався про розробку через тестування (TDD), про роботу з GitHub і про роботу над проєктом з відкритим кодом. Чимало з того, що я засвоїв, покращило якість моєї роботи.
Дуже приємно це чути. Одне з того, що я найбільше люблю в Exercism, - це ота атмосфера «як живе інша половина»: усвідомлення власних сліпих плям і знайомство з речами, про існування яких ми навіть не здогадувалися. Уявляю, що роль мейнтейнера треку посилила це навчання ще більше?
Так, посилила. Я пишу більше тестів, ніж раніше. Це не завжди власне TDD, іноді тести йдуть другими, а не першими. Однак це вплинуло на те, як я структурую код: прибираю зайві залежності, щоб тестувати було легше.
Я багато часу витрачаю на перегляд issues і PR у репозиторії problem-specifications, де ми описуємо вправи Exercism незалежно від мови. З цих обговорень я багато чого навчився. Іноді запропонована зміна на перший погляд здається простою, але подальша розмова виявляє проблеми. Я став терплячішим. Це навчило мене шукати інші можливі підходи до технічних проблем на роботі.
Я також більше дізнався про наставництво, зокрема про важливість розуміти глибинне «чому», а не лише «як». Я працюю з кількома іншими програмістами. Хоча я молодший за більшість із них, у компанії я працюю довше, ніж вони, і часто можу підказати ефективніший підхід до послідовності роботи машини або пояснити, чому щось потрібно виконувати саме так.
Окрім Exercism, ви також MVP з Delphi - це дуже круто! Як це сталося? Чи є потужна спільнота Delphi, до якої ви належите?
На початкових етапах створення треку Delphi я звернувся до пана Джима МакКіта з Embarcadero, щоб зʼясувати, чи можна отримати ліцензію з відкритим кодом на Delphi. Це дозволило б нам використовувати Delphi для розробки нових вправ і дало б людям змогу долучатися через pull request-и. Під час нашого листування Джим запросив мене долучитися до програми MVP від Embarcadero.
Delphi Praxis - це онлайн-спільнота, з якою я знайомий. На Google+ було багато руху, але він занепадає, тож доводиться йти в інші місця.
Чи створювали ви якісь застосунки з відкритим кодом на Delphi, на які інші могли б подивитися?
Так! Інсталятор Exercism CLI для Windows має відкритий код і повністю написаний на Delphi. Він автоматично визначає, яка версія (32 чи 64 біти) Exercism CLI потрібна учневі, потім завантажує CLI, розпаковує його й кладе в потрібне місце. Інсталятор завантажили 15 000 разів - цим я досить пишаюся!
Це фантастичне досягнення! Як людина, яка майже не займається (якщо взагалі займається) інтернет-програмуванням, з якими труднощами ви зіткнулися, створюючи інсталятор на Delphi?
Спочатку інсталятор був написаний на C#. Він застарів, і я вирішив подивитися, чи зможу його покращити. Я ніколи раніше не брався за щось подібне, але знав, що в Delphi є інструменти, щоб упоратися. Я почав з вивчення оригінального коду на C#, щоб зрозуміти, яка послідовність подій відбувається за лаштунками, а потім спробувати виконати ті самі завдання в Delphi. Я знайшов приклади коду на сайті документації Embarcadero, які допомогли пояснити, як правильно поєднати наявні компоненти для створення REST-клієнта. Я також виявив зручну утиліту, що постачається з Delphi, під назвою REST Debugger. Вона дозволяла вводити й тим самим перевіряти різні HTTP-запити, потрібні для успішної роботи інсталятора. Коли вони починають працювати, налагоджувач створює копії потрібних компонентів, щоб я міг вставити їх у код.
Для тих, хто хоче глибше зануритися в Exercism, можливо, хтось сподівається стати мейнтейнером, чи можете ви розповісти, якою була ваша подорож?
Я учасник місцевої групи MeetUp під назвою Akron Code Club. Приблизно раз на місяць ми збираємося, зазвичай розбиваємося на пари й розвʼязуємо код-кату, яку хтось запропонував групі. На зустрічі в серпні 2016 року ми почали працювати над вправами, наданими Exercism. Користуючись Exercism та деякими іншими навчальними сайтами, я подумав, що було б добре, якби більше цих онлайн-платформ для програмування пропонували Delphi чи Pascal як варіант. Оглянувши сайт Exercism і репозиторії Exercism на GitHub, я виявив, що Exercism завжди зацікавлений у додаванні нових мовних треків. Я не зовсім уявляв, як краще звʼязатися з Катріною. Здається, я скористався Gitter, щоб написати їй у серпні 2016-го із пропозицією додати Delphi. Приблизно через два місяці я отримав відповідь із вибаченнями, і тоді я й зрозумів, що вона не користується Gitter. Так чи інакше, вона поцікавилася, чи я досі хочу працювати над додаванням треку Delphi Pascal, і якщо так, то з цим можна починати.
Тепер є репозиторій, який можна використати, щоб запросити новий мовний трек, і завжди можна відкрити issues у репозиторії exercism/exercism, щоб звʼязатися з мейнтейнерами проєкту.
Чудово. Дякую, що поспілкувалися зі мною, і за всю вашу роботу над Exercism!
Із задоволенням! Було весело. Мені подобається брати участь і робити для Exercism усе, що можу. Навчання через практику!