Dec 27, 2011 18:39
Тут дехто вважає що я зануда, придовбуюсь до дрібниць і все таке.
Да, зануда. Да, придовбуюсь. Бо мені дуже неприємно отримувати багрепорти про Segmentation fault. Ні по пошті, ні в реальності, ні по телефону. І мені надзвичайно неприємно "червоніти" перед людьми яких я дуже поважаю!
Ладно, слухайте байку.
Пару років тому (ого, вже майже 2 роки пройшло) я домовився з одним студентом що він буде допомагати мені по проектам за певні гроші. "О!", думав я тоді, "Клас! Тепер справа піде!". Бо свого часу вже не вистачало тягнути усе.
Звісно, спочатку я дуже пильнував, детально переглядав кожний коміт, слідкував щоб було витримано стиль коду і не допускав тупих багів. Потім, через деякий час, я побачив що студент став писати більш-менш пристойний код і пильнував уже не так сильно (бо який же тоді сенс наймати когось писати код щоб потім самому "просіювати" кожний його рядок). Перевіряв виконання тікетів ну і іноді рекомендував як зробити краще. По термінам виконання задач не сильно "звєрствував" - давав 1-2 тижні. І наче все йшло непогано, проект просувався, я встигав займатись іншими справами. Єдине що мені з часом перестало подобатись - з’явилось відчуття що студент все більше став затягувати виконання задач щоб наприкінці місяця швиденько їх позакривати.
Прийшов час показувати нові фічі замовнику. Тим паче я розрекламував що тепер софтину можна буде запустити на маках від чого радість замовника не мала меж. Як я вже писав раніше, на маках все завелось буквально з першої компіляції. Ну так, з косметичними правками. Я перевірив основний функціонал, зібрав dmg, інсталлятор для вінди і віддав замовнику на тестування.
А сьогодні отримав по телефону SIGSEGV. Надзвичайно приємно. При тому що мак уже пора віддавати.
Ну по симптомам я уже зрозумів де там бага і пообіцяв швиденько виправити. Правда, на всякий випадок, попередив що можу за сьогодні не встигнути, але постараюсь. Мій оптимізм швидко вщух коли я заліз у код. Ох... Дані що мають бути в одному місці розкидані по купі модулів, зв’язано все через подвійні вказівники, MVC перетворене на гру "вгадай де мої дані", вказівники на NULL ніхто не перевіряє (як і return code), а сигнали оброблюються де завгодно крім очікуваних місць. І тепер що виправити тривіальну помилку треба перелопатити весь цей код, порозкладати дані по місцям, викинути половину сигнально-слотової каші... Одна із останніх задач була розібрати на "запчастини" великий MainWindow, виділити окремі віджети-view і прив’язати до моделі з даними. Задача була виконана, великий клас був розібраний на купку маленьких, але... Мабуть, MVC не на стільки очевидний і зрозумілий паттерн як мені здавалось.
Я не знаю, більшість речей мені здаються очевидними. І не такий вже у мене й великий досвід у розробці і супроводі ПЗ щоб мати якісь переваги перед початківцями, тим паче працюючими під контролем. Чому, чому, чому не можна віднестись до справи відповідально?!
Я втратив віру у людей. Краще буду писати все сам щоб не розгрібати подібні "приколи" в останній день. Скажіть мені (хоч я і не повірю) що все буде добре!
cpp,
робота,
qt,
програмування