Учора в розсилці ADVENTURES IN NODELAND, яку веде Matteo Collina, вийшла чудова стаття — Noop Functions vs Optional Chaining: A Performance Deep Dive. У ній автор детально пояснює, чому Noop function працює швидше за Optional chaining.
// Підхід 1: Noop function
function noop() {}
function testNoop() {
noop();
}
// Підхід 2: Optional chaining
const a = {}
function testOptionalChaining() {
a.b?.fn?.();
}
Не буду вам переказувати цю статтю – просто скажу, що вона чудово ілюструє, на чому зосереджені платформенні інженери. Для платформенних інженерів подібні оптимізації важливі, адже вони безпосередньо впливають на швидкодію фреймворків і бібліотек.
Натомість продуктові інженери фокусуються на тому, що створює затримки в роботі продукту – зазвичай це мережеві виклики та база даних. Тому витрачати час, щоб виграти кілька наносекунд у коді, немає сенсу, якщо можна зменшити затримку на сотні мілісекунд, оптимізувавши business flow або покращивши індексацію бази даних.
Платформенні інженери створюють технічні інструменти, а продуктові інженери використовують ці інструменти, щоб створювати цінність для кінцевого користувача. Обидві ролі важливі – просто вони розв’язують різні завдання, і підходи, які працюють у одній ролі, часто не підходять для іншої.