Стендап Сьогодні

Що я зробив, що я хочу зробити, і що це все значить.
Повсякденні здобутки в форматі стендапу.
Детальніше в статті

Підписатись на RSS
📢 Канал в Telegram @stendap_sogodni
🦣 @stendap_sogodni@shevtsov.me в Федиверсі

10.08.2022

Особливості обробки помилок на мові Golang

🐞🔍😅 Сьогодні довелося багато попрацювати з помилками виконання на мові Go. Go - мова з яскраво вираженою авторською думкою. Отже і обробка помилок в Go зроблена цікавим і авторським чином. Ось декілька фактів про неї:

- Майже кожна нетривіальна функція повертає не тільки результат, а й помилку (мабуть, саме для цього в Go функції можуть повертати декілька значень)
- Очікується, що безпосередньо після виклику кожної такої функції буде перевірка та обробка помилки (хоча можна і проігнорувати - є лінтери, які це забороняють)
- При цьому помилки в Go мінімально типізовані. Зазвичай помилку не треба роздивлятись, а просто час перервати запланований алгоритм. (Звісно, є випадки, в яких можна перевірити, що це саме за помилка, і якось особливо відреагувати.)
- На практиці це призводить до того, що кожний написаний алгоритм враховує всі можливості помилки, а це вельми цінно.
- Є ще один різновид помилки - паніка. За механізмом, паніка є виключенням, як у інших мовах. Але за змістом вона значить, що це програміст накосячив, і вихід тепер один - виправити код. Наприклад, паніку викличе звертання до нульового покажчика. (Легкий спосіб її схопити - ігнорувати помилки.)
- Неперехоплена паніка в будь-якій з паралельних рутин призводить до повного краху програми. Настільки все серйозно.

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


09.08.2022

Програмування в парі

👱‍♂️💻👱‍♂️ Сьогодні я майже цілий день програмував у парі. Колись я вважав парне програмування безглуздим марнуванням часу (а може, ще й оплачуваного клієнтом). Але це буде правдою, тільки якщо припустити, що поодинці два інженери зроблять в два рази більше роботи, ніж удвох. Продуктивність програмістів - дуже абстрактна величина, тому таке твердження легко приймається на віру.

Але ж робота програміста складається не тільки з написання коду. І мета парного програмування - зовсім не написати його більше (це взагалі погана мета.)

В пару сідають, щоб:

- приймати удвох складні тактичні рішення - про архітектуру, про шлях відлагодження, про іменування...
- навчити чомусь одне одного - про проєкт, про код, про технології, про підходи...

Кращий код та сильніша команда - гідний привід деколи "помарнувати час".


08.08.2022

Люстра та важливість правильного вибору інструменту

👷🤙🪓 Сьогодні я повісив люстру-вентилятор. Особливого хисту до ремонтних робіт в мене немає, але ж шукати найманця теж не хотілось, а люстра мала бути повішена.

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

Слабким місцем виявилось свердління у стелі під анкерний болт. Ось тут я взагалі не майстр. Після десяти хвилин знущання над стелею шуруповертом зробив третину одного з двох отворів. Тобто чисто математично, за годину я б впорався - але година притискання свердла до стелі це неабиякий воркаут. І... хіба всі так довго дірки роблять?

Замість того, запитав у досвідченої людини, як правильно налаштувати шуруповерта. У розмові проміж діла виявилось, що свердла мають властивість “втомлюватись” - тупитися і міняти колір. Який збіг - в мене свердло взагалі коричневе! Сходив до крамниці за новим свердлом. Звичайним дешевим свердлом по бетону.

З новим свердлом робота зайняла менше хвилини! Воно вгризалося в стелю настільки швидко, що я не вірив своїм очам. Після цього залишок роботи пройшов впевнено та вчасно.

Занотую три висновки:

- Коли робота не ладиться, варто зупинитись і спитати себе - чи не можна щось зробити інакше? Особливо якщо це поширена та добре відома робота.
- Порада досвідченої людини деколи приносить неочікуваний і трансформуючий результат.
- Правильно обраний інструмент може зробити діло простіше в рази і навіть на порядки.