Три головні питання, які ви маєте регулярно собі ставити
Під час навчання та роботи завжди ставте собі запитання. І намагайтеся давати на них максимально чесні й точні відповіді.
Ось три мої улюблені.
На шо?
Це перше і головне питання, яке я собі (та й не лише собі) ставлю регулярно. Я дозволяю собі запитати це прямо в очі клієнту. Це часто вводить людей у ступор, але коли з’являється відповідь, стає зрозуміло: ми або взагалі не будемо цього робити, або робитимемо зовсім інакше.
На шо це робити? Яка кінцева мета?
Від відповіді залежить не лише те, як ми будемо вирішувати задачу, а й те, чи потрібно взагалі братися за неї. У кожного рядка коду, який ви пишете, має бути чітке призначення. Якщо на питання «На шо?» немає виразної відповіді — найкраще рішення просто викинути цю ідею та заощадити час.
Чому?
У цього питання є моя улюблена точна форма: «Чому саме так?»
Одну й ту саму задачу майже завжди можна вирішити десятком різних способів. І дуже добре, коли ваш вибір — не випадковість. Ви маєте спокійно пояснити собі, колезі чи замовнику, чому з усіх можливих варіантів обрано саме цей алгоритм, цей фреймворк чи цю структуру даних.
Відповідь «бо я інших не знаю» — цілком чесна для новачка. Але вона повинна миттєво підсвічувати зону росту й викликати бажання дізнатися, які є альтернативи та чим вони кращі або гірші.
А під час обговорення рішень із колегами чи на код-рев’ю це питання чудово розвертається в інший бік: «Чому не [альтернативний варіант]?»
Таке уточнення корисне в обидва боки:
- Якщо колега не знав про цей підхід, ви підсвітите йому можливу сліпу зону без токсичності та повчань.
- Якщо ж колега його вже розглядав і відкинув, він одразу пояснить не очевидні для вас підводні камені, про які ви могли не здогадуватися.
Що якщо?
Це питання тестує вашу задачу на міцність і розширює горизонт уваги настільки далеко, наскільки вистачає уяви.
Завжди запитуйте себе: що може піти не так? Можете доводити ці сценарії до абсурду — практика показує, що в реальному житті не все є абсурдом, що здається таким на перший погляд:
- Що якщо користувач натисне кнопку «Купити» десять разів за секунду?
- Що якщо замість номера телефону вам передадуть порожній рядок або пачку емодзі?
- Що якщо сервер бази даних зависне рівно посеред запису транзакції?
Новачки часто ігнорують крайові випадки з думкою: «Та хто так взагалі робитиме?» Робитимуть. Користувачі поводяться непередбачувано, інтернет обривається, а сервери збоять.
Ці три фільтри закривають ключові етапи будь-якої задачі:
- «На шо?» — з’ясовує, чи є в дії сенс і результат.
- «Чому саме так?» — гарантує, що рішення обрано свідомо, а не навмання.
- «Що якщо?» — перевіряє, щоб зроблене не розсипалося від першого ж реального навантаження.