Пет Аллан: «Ви повинні писати мовою, яка робить вас щасливішими»

Сьогодні ми представляємо вашій увазі переклад інтерв'ю Пета Аллана (Pat Allan), відомого розробника, прихильника Ruby, одного з переможців Ruby Hero Award. Що це за нагорода? Вона присуджується переможцями минулого року тим учасникам спільноти, які найбільшою мірою проявили себе: створили значимий навчальний контент, розробили плагіни і геми, брали участь у проектах з відкритим кодом.

Пет Аллан - австралієць родом з Мельбурна, але, як він сам пише у своєму блозі, останнім часом практикує location independent lifestyle, а якийсь час назад навіть зробив з цього приводу цікаву доповідь How to be a Ruby Journeyman , в якому розповів, як фріланс-проекти та зв'язку в Ruby-спільнотах різних країн дозволяють розробнику відчути себе з одного боку вільним від географії, з другий - «своїм» на різних материках.

Пет приїжджає до Києва на конференцію RubyC 5-6 листопада цього року, там можна буде послухати його доповідь та поспілкуватися особисто .

- Пет, судячи з назви твого блога, Freelancing Gods , фріланс - це частина твоєї життєвої філософії. Чи так це? Будучи фрілансером, минаючи грошове питання, як тобі вдається знаходити цікаві проекти?

- Перш за все, назва мого блогу ніколи не було про мене. Мені просто подобається ідея богів, які фріланс один для одного. Я безумовно не бачу себе в якості такого бога.

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

Насправді, я не дуже-то займаюся пошуком проектів - люди самі знаходять мене через друзів і знайомих. Це досить завидне положення, і тут, безумовно, не останню роль відіграє те, що програмісти на Ruby дуже затребувані в Австралії, та й взагалі в усьому світі.

- Як довго ти працюєш з одним замовником? Чи є у тебе довгострокові проекти?

- Значна частина моєї роботи робиться якраз для клієнтів, з якими складається довгострокове співробітництво - від декількох місяців до року, а іноді й більше. Переважна більшість роботи протікає разом з командами розробників - з такими талановитими людьми, як, наприклад, Upstream , Envato та HyperTiny , - так що я не приймаю участь в активній підтримці проектів.

Виходить завжди по-різному: з іншими клієнтами я можу працювати від декількох годин до декількох днів. Тим не менш, в більшості випадків я працюю над проектами від місяця і більше.

- Один з твоїх останніх постів був присвячений інструменту під назвою Combustion. Як давно ідея його створення прийшла тобі в голову? Коли ти плануєш закінчити реалізацію?

- Якийсь період часу я працював над створенням Rails engine для клієнта, а мені вже дуже подобається писати тести до початку безпосередньої роботи над кодом. До цього мені не доводилося писати Rails engine, тому я витратив деякий час на вивчення, як можна створювати для нього тести до коду - і тут з'ясувалося, що більшість розробників використовували ціле додаток на рейках, поміщене в директорію test.

Мені не сподобався такий підхід - зокрема, він не відповідав принципом DRY, - тому я поекспериментував на предмет того, який мінімум коду необхідний для проведення всебічного, повного інтеграційного тестування. Експеримент вилився в combustion .

Як на мене, цей інструмент вже цілком готовий до використання - він справляється зі своїм завданням, я, як і деякі інші, успішно ним користуюся. Звичайно, є куди розвиватися (наприклад, підтримка Test:: Unit), і я впевнений, що з часом він еволюціонує.

- В одному з інтерв'ю ти сказав, що твоє головне резюме - це акаунт на Github. Як замовники знаходять тебе через нього?

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

Для деяких моїх клієнтів, які далекі від розробки, я періодично поновлюю своє «звичайне» резюме або просто розповідаю їм про проекти, до яких мені довелося докласти руку, і ми обговорюємо те, як я можу допомогти їм у роботі над їх проектами .

- Ти розробив кілька дуже цікавих проектів на Ruby. Мабуть, найбільш відомим є thinking-sphinx. Не міг би ти розповісти про нього більше? Звідки виникла сама ідея? Які плани щодо його розвитку в майбутньому?

- Близько чотирьох років тому в проекті на рейках, над яким я працював, мені знадобився інструмент для пошуку. Я вирішив використати Sphinx, так що мені довелося погратися з декількома існуючими бібліотеками, які з ним працювали.

Проте, жодна з них не робила того, що мені було потрібно, тому я вирішив витратити вихідні і написати дещо своє - так і з'явився на світ thinking-sphinx . На початку він був не дуже хорошим, але в міру того як я вивчав Sphinx, мені вдалося значно його удосконалити. З тих пір і інші почали його використовувати, разом з чим з'явилося безліч фіч-реквестов і баг-репортів.

У майбутньому я сподіваюся зробити його більш легким і прозорим, а також використовувати деякі нові функції Sphinx'а, включаючи індекси в реальному часі. За останні кілька місяців я витратив деякий кількість часу, переписуючи його, - але, швидше за все, в цьому році реліз не побачить світло. Проте я сподіваюся, що, стаючи ще більш розумним, гем буде все так само простий у використанні.

- Яка твоя роль у початковому проекті Sphinx? Чи існує якась загальна стратегія розвитку Sphinx'а?

- Я не брав участі у розробці самого Sphinx'а - я не пишу на С + +, тому не можу внести в нього які-небудь зміни. Одного разу я написав один патч, - стосовно аутентифікації, - але поняття не маю, чи приймуть його коли-небудь чи ні.

- Російським та українським розробникам було б цікаво дізнатися про те, що собою представляє інструмент babushka і звідки взялася така назва?

- Насправді, розробником babushka є один мій друг, Бен Хоскінз. Даний інструмент - відмінний спосіб автоматизації завдань в дусі TDD, де для кожної залежності є спосіб протестувати факт її виконання. Вона може бути використана де завгодно: починаючи від інсталяційних інструментів і закінчуючи Деплой-скриптами для серверів.

А назвав він її на честь матрьошок (babushka doll - (англ.) матрьошка), через те, що тут можна досить прозоро накладати залежності один на одного.

- Скажи, як створити успішний проект на гітхабе, які зробить тебе популярним серед клієнтів?

- Я вважаю, що невід'ємною частиною створення популярного проекту є створення чогось, що потрібно саме тобі.

Якщо насправді тобі це не потрібно, в тебе буде недостатньо мотивації працювати над ним, а підтримка інших людей при роботі з ним перетвориться на рутину.

Далі необхідно переконатися в тому, що працювати з твоїм проектом (бібліотекою) настільки просто, наскільки це можливо. Це одна з причин, чому багато з нас так люблять рейки - вони підпорядковуються угодами по конфігурації, у зв'язку з чим вкрай просто відразу все швидко запустити, а змінити щось можна і пізніше.

Обов'язково зберігайте великий набір тестів, напишіть корисні README і документацію, і будьте готові допомогти всім, хто користується вашим проектом - відповідайте на питання, виправляйте помилки, вітайте написання патчів і нових фіч, якщо вони підходять проекту.

- Який найбільш ефективний і швидкий спосіб стати відомим програмістом на Ruby - розвивати свій проект або писати патчі до інших відомим проектам?

- Швидше за все, написати свій власний, але і патчі в інші проекти безумовно не будуть зайвими. Взагалі кажучи, я не раджу вибирати в якості мети "популярність" - набагато краще робити щось добре, і допомагати іншим.

Найчастіше це означає, що ви станете відомим, - але це прийде лише в якості бонуса.

- У своєму блозі ти пишеш : «У минулих життях я працював з C #, ASP . NET, Visual Basic і Microsoft SQL Server. У вас не вистачить грошей змусити мене працювати з усім цим ще раз. Я серйозно ». Поясниш? Що тобі подобається в Ruby, що робить тебе прихильником цієї мови і що такого поганого в перерахованих технологіях, що ти не станеш працювати з ними ні за які гроші?

- Багато зводиться до того, як просто розробляти на Ruby. Матс створив мову, щоб зробити розробників щасливими - і Ruby визначено робить щасливим мене. Я знаю, що це далеко не найшвидший мову, але це з лишком компенсується його синтаксисом, простотою і спільнотою. Чого варті тільки бібліотеки для тестування.

Я зовсім не відчуваю неприязнь к. NET або іншим технологіям від Microsoft - всьому знайдеться своє застосування, і якби я розробляв під Windows, я б писав тільки на C #. Проте мені здавалося, що ASP.NET пручається того, як працює веб (принаймні в ті часи, коли я ще на нього писав), а Rails дозволили створювати речі простіше і швидше.

Зрештою, ви повинні писати мовою, яка робить вас щасливішими, будь то Ruby, C #, PHP, Python, Cobol ... та що завгодно.

- Пет, крім розробки ти займаєшся організацією цікавих подій - Trampoline та Rails Camp . Наскільки я зрозумів, обидва організовуються силами учасників. Скажи, виходячи з власного досвіду, в чому ключ до успіху заходів подібного роду, коли в тебе заздалегідь немає підготовленої програми?

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

У випадку з Rails Camp, всім людям потрібно повідомити, що кожен може організувати обговорення, покодіть на своїх проектах або попрацювати з іншими, або ж просто поспілкуватися. Ми допомагаємо людям організовувати збори, надаючи місце і час, але все інше відбувається дуже гнучко.

Trampoline трохи більше структурований - у нас дуже чіткі часові рамки для нарад, але, знову-таки, ми робимо наголос на тому, що кожен повинен взяти участь, а не просто посидіти - в цьому й суть. Крім того, у нас дуже чітка мета: поділитися тим, що сам вважаєш гідним уваги. Зберігати такий контекст вкрай важливо.

Отже: визначся зі структурою - як будуть проходити збори? Хто доглядає за їжею? Що повинні зробити люди, щоб отримати квиток? Відповіді можуть бути будь-якими, але будьте впевнені, що ви самі, як і потенційні відвідувачі, їх знаєте.

Інтерв'ю підготовлено та проведено оргкомітетом конференції .

Опубліковано: 28/09/11 @ 07:26
Розділ Блоги

Рекомендуємо:

Про партнерські програми та відрахування
Конференція Cybermarketing-2011
DOU Hackers & Founders # 1 - звіт
5 - 6 листопада, Дніпропетровськ - ДОУ Хакатон - Дніпропетровськ!
19 жовтня, Київ - День технологій Java