Віктор Турський про програмування / навігатор

Інженерна майстерність і карʼєра / крок 03

Навіщо глибоко розбиратися в речах й як менше забувати вивчене

початковий 07:28 дивитися на YouTube ↗

Розділи

Про що це відео

Концептуальне продовження відео 3 речі, які роблять програміста кращим, спровоковане двома коментарями глядачів: «вивчив мережеві протоколи в університеті й жодного разу вони мені не знадобилися» та «що б я не вивчив — за місяць забуваю; невже треба вчити заново?». Конкретні історії з практики автор відкладає на окреме відео, а тут дає свою ментальну модель того, навіщо потрібна глибина (глибоке вивчення фундаментальних речей), і свою аналогію дерева знань — чому саме фундамент допомагає новим знанням закріплюватися.

Головне

  • Раніше він вважав, що глибоке розуміння потрібне головно для дебагу (там воно справді економить купу часу), але найбільша віддача — у проєктуванні: не можна будувати архітектуру на маркетингових матеріалах. Розуміння того, як система працює всередині — хоча б концептуально — дає її властивості, а щоб уся система відповідала вимогам, потрібно знати властивості кожної підсистеми (проєктування ПЗ).
  • Його незмінні контрольні питання до будь-якої бази даних (MySQL, MongoDB, Postgres, будь-яка): що станеться з продуктивністю, якщо влити вдвічі більше даних? Як насправді поводяться її транзакції та ізоляція? Якщо не можете відповісти — ви не знаєте властивостей системи й не можете з нею проєктувати.
  • Дерево знань: стовбур — найфундаментальніші знання; гілки — галузі; гілочки — детальніші концепції; листя — найдрібніші деталі. Нове знання має зачепитися за наявну гілку — воно чіпляється й за практичний досвід. Якщо гілки немає, новий листок «падає на землю й губиться» — це і є той самий ефект «забув за місяць». Він навіть радить буквально намалювати таке дерево своїх технологій.
  • Листя опадає, гілки лишаються. Один глядач розповів, що прочитав цілу книжку про TLS і за два місяці забув деталі протоколу. І нехай — залишається гілка: ви все одно знаєте, що в TLS є ланцюжок сертифікатів, симетричний сесійний ключ, і що forward secrecy гарантується лише з обміном ключами Diffie-Hellman, а не коли сесійний ключ передається через приватний ключ. Маючи гілку, ви швидко «перевішаєте» листя, коли знадобиться, і зачепите за неї сусідні гілки.
  • Правило вибору, що вчити: віддавайте перевагу фундаментальним речам, які не втратять актуальності за місяць чи рік — тому, що тримається 2, 5, а іноді й 10 років. Тоді дерево накопичується рік за роком, і ви розумієте, як віддалені листки пов'язані (чи не пов'язані) між собою.
  • Рекомендація наприкінці: класичний ~5-хвилинний мультик "MongoDB is web scale" (посилання під відео) — «абсолютний топ» — бо він саме про розуміння властивостей і нутрощів системи замість купівлі хайпу (MongoDB).

Теми відео

Частина цих треків