Дизайн

10 питань програмісту fillpackart — «Я даремний дурень і хочу звільнитися»

Пам’ятаєте історію про Стіва Джобса і Денніса Рітчі? Не хочемо знову влаштовувати суперечки і читати моралі, але правда залишається правдою — тисячі крутих технарів сидять в тіні, а їх історії заховані.

Ми в редакції Хабра мають намір це виправляти. Відтепер будемо регулярно брати інтерв’ю у людей, про які не пишуть у ЗМІ за якими не ганяються в соцмережах. Так що якщо вам є що про себе розповісти — готуйтеся.
Для пілотноъ версії на них відповів fillpackart. (В цьому місяці я брав разом з ним дещо, здається, непоганих інтерв’ю: раз, два, три). Почитайте, і якщо хочете розповісти про себе таким же чином, пишіть повідомлення мені або baragol.

Філіп Ранжин, син інженера з Іванова. Почав писати на С++ в 16 років в університеті, потім вивчив .net. Зараз Senior software development engineer в непоганий зарубіжної конторі. Крім поширених мов пише на F# і OCaml.

1. Розкажи про фічу, яку ти реалізував і якою пишаєшся.

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

Думаю, я міг би пишатися реалізувати хороший ШІ.

2. А тепер — про найлютіший факап.

— Одного разу я весь день безуспішно намагався завести OCaml під віндою (не намагайтеся повторити). З роботою це ніяк не було пов’язано, і на наступний ранок на зборах потрібно було щось збрехати. Дивлюся — на мені баг, який я навіть не заглядав. Ну думаю, «не може ж бути бага, який я не виправлю за два дні!». На зборах сказав, що працював над ним, і через два дні буде PR.

У підсумку я працював над ним три місяці.

Баг був пов’язаний з взаємодією двох величезних систем. Він відтворювався постійно. Я реально три місяці будував різні гіпотези і перевіряв їх, знову і знову помиляючись — навіть закинув будівництво будинку в скайримі. Це були найгірші три місяці в моєму житті.

У підсумку я закрив його як «No repro». Прийшов до директора, сказав: «я — даремний дурень, і хочу звільнитися, щоб не мучити вас». Але у відповідь мені сильно підняли з/п.

3. Опиши свій робочий простір: від крісла і монітора до середовищ програмування і улюблених утиліт.

— Я працюю з використанням операційних систем сімейства Windows, тому що у мене .net стек і тому що в Windows кращий UI. Сиджу за столом, який сам собі зробив. Він величезний, влізе чоловік п’ять.

У мене не найгірший девбокс, але з одним значущим мінусом — я спробував заощадити і купив проц від амд. Це був страшний провал. Не дивлячись на високу заявлену потужність, цей шматок гівна проганяє мої тести в 5!!! разів повільніше, ніж його інтеловський аналог.

Зараз у мене тільки один монітор. Планую прикупити ще парочку, щоб не ганьбитися. Моя улюблена IDE — Visual Studio 2017 в зв’язці з Resharper. Улюблений текстовий редактор — Visual Studio Code в зв’язці з мільярдом розширень. Завантажувати їх і спостерігати, як VSCode еволюціонує — одне з моїх хобі.

Я люблю git, але Visual Studio Team Services, мабуть, подобається мені більше, ніж GitHub.

4. За яким принципом ти вибираєш роботу? Стек, продукт, побутові умови, гроші?

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

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

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

Іноді здається, раз я зміг переграти бізнес на соцзабезпеченні, то я в якійсь мірі гідний того, що маю. З-за цього я втрачаю зв’язок з реальністю, і мені починає здаватися, що так все і повинно бути.

Не знаю, як це можна поєднувати, але я обожнюю розробляти і ненавиджу працювати розробником. Я намагаюся заспокоїти себе тим, що просто мені ще не потрапив цікавий проект, але в той же час сам в це не вірю. З цим дійсно важко жити.

5. Що в технологіях і мовами, які ти використовуєш, ти б хотів виправити?

— Я б хотів:

  • Висновок типів і компайл-тайм іммутабельність для typescript і C#. Тоді я б міг створити метод, який приймає щось гарантовано іммутабельне, а не як зараз — ReadonlyDictionary, яка насправді не рідонлі (передав звичайну дикшнарі в її конструктор, залишив посилання на неї і спокійно мутуєш).
  • Щоб розробники C# послали, нарешті, до чортів собачим зворотну сумісність, дурні using-і, які працювали тільки в межах одного файлу і зробили ЯП більш сучасним. Серйозно, в мові, для якого досить нерідкий код в стилі IDictionnary<IMyStupidType, IMyStupidType2> Foo(Func<IMySupidType, int, bool, string> reallyStrangeCallback не зробити норм аліаси типів — це дуууже дивне рішення.
  • Автоматичні backing fields в C#, який-небудь цукор над Func<T1,T2>.
  • Контракти для C# з коробки (наприклад в Roslyn) замість сторонніх рішень, які перетворюють мою IDE в гальма.
  • Аналог jsx для мови F#. Якщо ніхто з вас не зробить його в найближчий тиждень, так і бути — займуся.
  • Щоб співтовариство прийшло до розуміння, що юніт-тести — даремний непотріб, а мови з динамічною типізацією (не плутати зі слабкою) — найбільший провал в історії індустрії.
  • Щоб архітектура процесорів була більше розрахована на функціональний підхід.
  • Оптимізація хвостової рекурсії в JS/TS, щоб я міг фігачити свої tail-рекурсії всюди, не впираючись спиною в розмір стека. У специфікації вона є, але хлопці, які пиляють v8, просто вирішили, що не так вже і важливо дотримуватися спек мови, коли розробляєш для нього рантайм.
  • Опціональна можливість статичної типізації в JS коробки, але не в противагу typescript. Я, на відміну від творців тайпскрипта, вважаю його самостійним ЯПом з дуже сучасним і потужним мультипарадигменним дизайном.
  • Щоб штуки на зразок Web-assembly міцно зайняли своє місце в практиках і стандартах фронтенд-розробки.
  • Значного удосконалення web-клієнтів «Гітхабу» і йому подібних. В ідеалі можливість комфортно працювати з кодом серйозного проекту в браузері.
  • Більше конвенцій по сумісності. Наскільки б все було б простіше, якби jvm вміла інтерпретувати і jit-ить дотнетный cil.

 

6. Де краще переймати чужий досвід — у вузі, на конфі? Ще десь?

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

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

7. Будь у тебе необмежені ресурси (час, гроші, потужності, люди), яким проектом ти б зайнявся?

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

8. Як ти відпочиваєш? Що робиш крім роботи?

— Я гуляю в лісі і думаю, іноді з пивом, граю на гітарі і часом у відеоігри. Я б сказав, що моє хобі — думати і мріяти.

У мене кілька своїх проектів з друзями. Люблю спеціально робити їм пасивно-агресивні код-рев’ю («ти міг би запропонувати мотивацію для використання такого непродуманого рішення?») і спостерігати, як це змінює наші взаємини.

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

9. Розкажи про 3 улюблені книги — навчальну, науково-популярну і художню.

Навчальна — «CLR via C#» Джеффрі Ріхтера. Стільки знань про те, як влаштований дотнетный рантайм в одній праці — справжня знахідка. Якщо завчити цю книгу, пройдеш будь соцзабез на дотнетера. Ще б відзначив «Функціональні структури даних» Кріса Окасаки. Не дуже корисна з практичної точки зору, але мені вона повернула віру в програмування — реалізація структур даних викликає у мене метафізичний трепіт.

Научпоп — не знаю, чи можна вважати такою «Code Complete», але мені дуже подобається перечитувати її. Автор пише неймовірно очевидні речі, і на всіх проектах, де я працював, цим простим принципам ніхто чомусь не міг слідувати в достатній мірі.

Художня — «Американська трагедія» Драйзера. Ніколи б не подумав, що таке прагматичне цифрове чудовисько, як я, здатна співпереживати покинутою, а потім ще і убитої дівчини. Але я співпереживав, і мене це дуже сильно зачепило.

10. Якщо прямо в тебе на очах у ШІ прокинеться свідомість, що ти йому скажеш?

— Я б запропонував йому створити штучний інтелект, а потім порівняв б, який з них краще. Якщо б краще був новий, я б попросив його спроектувати штучний інтелект, а потім…

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

Бонус: постав будь-яке запитання іншому розробнику.

— Вивчення якої технології викликало у тебе найбільше задоволення в процесі?

Related Articles

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Close