solovyov.net

Чи можна полюбити код іншої людини

Накаталися з малим з гори (тааак, цей момент прийшов, я катаюся на лижах разом з сином!), замучився і відкрив ютубчик повтикати. А там новий подкаст ДОУ, і прям у нарізці на початку Діма Малєєв каже "я ніколи не бачив програміста, який відкриває чужий проєкт і каже: боже, яка красота".

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

Але ж причини того прості й зрозумілі: дедлайни, кваліфікація й обмеження.

1️⃣ У комерційних проєктах одна з найважливіших речей — це швидкість реалізації. Хочеться, щоб щось запрацювало одразу, як вирішили, що ж потрібно робити. Тож навіть без дедлайну, зробили так, щоб воно більш-менш підтримуване було, протестували — і у реліз, а розробник займається наступною задачею. У всіх ця межа достатності різна, але загалом нема сенсу полірувати до нескінченості, то грошей не приносить.

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

3️⃣ Коли код пишуть, обмежень купа — окрім часу, є усні домовленості, якісь прийняті у проєкті підходи, якісь технічні проблеми (може навіть тимчасові), щось у голові в розробника, щось у голові в його рев'ювера, вигадайте корочє самі. А коли ти відкриваєш і дивишся код, то ти всіх обмежень, в яких знаходився розробник, не знаєш, зате бачиш замість простого і симпатичного коду для базового юзкейсу купу якихось нагромаджень.

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

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

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

На мене, наприклад, дуже вплинув код Mercurial. Метью, автор Меркуріалу, дуже багато уваги приділяв простоті архітектури та коду, зворотній сумісності, когерентності функціоналу й обмеженості фіч, які попадають у ядро. Тож у 2008-му я був тим програмістом, який відкрив чужий код і сказав — боже, яка краса! 😁

Це був не перший і не останній раз, але найяскравіший для мене.

(@ tg)