solovyov.net

Читав, як чуваки 10 років сапортять одну й ту саму апку (з бекендом) — і які висновки вони з того можуть зробити. Ну і частково ті висновки очевидні, про те що PostgreSQL дуже кльовий, або що інтеграційні тести дуже допомагають бути впевненим у великих змінах.

Але звернуло мою увагу трохи інше: згадка про інтеграції та 3rd-party SDK. Очевидно, що інтеграції — це біль, бо розбіжність моделей даних часто ламає мізки, бо чуваки з тієї сторони забивають на зворотню сумісність і все ламають.

А от про SDK хотілося б зупитися окремо. Він там наводить приклади, як Google SDK стало Google+, а потім Google Sign-In, як Crashlytics туди-сюди стрибав (і перейменовував все), і "I had to rewrite the entire login flow due to all the new third party SDKs". Типу фреймворки епла дозволяють старий код не викидати (молодці), але от всі ці сервіси із SDK — козли.

Років 5 тому мені написав Owox із пропозицією заюзати їх солюшен перекладання даних гугл аналітики в BigQuery. Коли я зрозумів, в чому пропозиція, я зреагував як справжній програміст — я ж зроблю це за два дні! Жаба задавила платити гроші — і ще й додавати додаткову зовнішню залежність.

Кожен раз, як я розповідаю цю історію, люди сміються, бо зі вступу очевидно, що за два дні не вийшло. Але цікаво те, чому ж не вийшло! Я відкрив документацію, і там пропонують взяти com.google.cloud/google-cloud-bigquery як залежність і все з нею зробити. І я втратив понад тиждень на те, щоб авторизуватися та зробити хоч якийсь запис до того драного бігквері!

Зараз от згадую — здавалося б, ну що там таке може бути? Глянув на код, наче нічого такого, але незрозумілі помилки, поцоватий апі зі схованими класами, конфлікти різних гуав — ну все як треба.

А потім же ж ще треба звідти якісь дані дістати? Як зараз пам'ятаю, два тижні не міг змусити себе до того підійти — перевірив навіть по історії гіта. 😁 Сів і через HTTP API Гугла — ну теж не подарок, але зовсім інший рівень зла — написав за половину дня сто рядків коду, які ще й нормально працюють!

Як ви можете здогадатися, у реалізації запису ми навіть ні разу не оновлювали версію сдк Гугла з 0.18.0-beta, поки не видалили, бо воно з кожним оновленням палає наче дурне все (теперішня версія 26.1.5). А хттпшний апі, на щастя, гугл не поганить так швидко, як фейсбук (хоча й поганить все одно). Тому все досі працює, і юзається не стільки для BigQuery (яким Каста вже не користується), а для інших апі гугла (типу звітів о рекламі).

Мораль: SDK, особливо великі та заплутані — гнусність, і їх треба уникати. А особливо сдк великих компаній, бо там багато людей, яким нема чим займатися, окрім як створювати зайву роботу іншим людям. :)

P.S. Він там ще згадує Apple Sign-in, в якого типу мало доків — але це фактично звичайний OAuth із додатковим викликом в апках. Думаю, що вони всередині мають якийсь django-oauth, який теж дуже поганий і закриває від тебе розуміння, що відбувається. Коли Apple реджектнули нам реліз апки через його відсутність, воно все поїхало за якусь годинку-дві, бо в нас нормально зроблений оаус. :)

(@ tg)