Заради бога, синку, нічого не чіпай! Victor ronin - s it blog

Заради бога, синку, нічого не чіпай!

Я думаю всі пам'ятають цей анекдот з довгою бородою:

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

Так ось. Я не раз бував на місці цього програміста, коли-то что-то блін змінив і все впало і три години вовтузишся, щоб воно запрацювало. В цей час QA і менеджери вдаються і рвуть на собі лисину та кричачи, то, що ти зараза весь проект своїми фіксами завалив.

Насправді, ця одна з моїх улюблених фраз (від програмістів) що-небудь типу «Не чіпай це, воно дуже ненадійне / складне».

Власне кажучи, як тільки є така фраза, то це означає, що в engineering є серйозні проблеми. І найімовірніше на проекті немає достатньо хорошого програміста.

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

Отже, чому мені це не подобається?

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

- По-друге, чомусь цими самим ненадійними місцями виявляються критичні частини функціональності. І це не найкраща ідея мати ненадійну критичну функціональність.

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

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

Зате, після закінчення цього часу, найчастіше вже стає зрозуміло як воно працює, злегка перепланування архітектура, счищается товстий шар латочок і т.п.

А для тих, кому таки не по собі ці зміни, не забувайте що є система контролю версій і ідеально якщо ще є і unitTest'и (їх до речі, можна і написати якщо їх немає). Після чого зміни навіть в самій запустанной системі не так страшні, як їх малюють.