Деякі маловідомі факти програмування
Будучи програмістом я багато чого дізнався про те, як створюється програмне забезпечення. Ось кілька фактів, які можуть вас здивувати.
Програміст витрачає 10-20% свого часу на написання власне коду, і більшість програмістів пишуть всього 10-12 рядків коду на день, які потрапляють в кінцевий продукт, незалежно від їх рівня. Хороші програмісти витрачають більшу частину решти 90% часу на роздуми, дослідження та експерименти в пошуках найкращого рішення. Погані програмісти витрачають цей час на налагодження, випадкові зміни в коді і подальшу перевірку його на працездатність.
«Хороший токар працює в кілька разів краще середнього, але хороший програміст коштує в 10000 разів більше, ніж звичайний»
Білл Гейтс.
Хороший програміст в 10 разів більш продуктивний, ніж середній. Відмінний програміст в 20-100 разів більш продуктивний, ніж середній. І це не перебільшення - дослідження, що проводяться з 1960-х років, чітко це показують. Поганий програміст не просто непродуктивний: він не тільки не виконує свою роботу, але ще й створює проблеми, які доводиться вирішувати іншим.
Кращі програмісти витрачають дуже небагато часу на написання коду. Принаймні того, який потрапляє в кінцевий продукт. Програмісти, які витрачають багато часу на код або занадто ліниві, або занадто безграмотні, або занадто зарозумілі, щоб шукати існуючі рішення старих проблем. Відмінні програмісти - майстри визначення і використання стандартних підходів. Хороші не бояться постійного рефакторингу в пошуках ідеальної архітектури. Погані ж пишуть код, якому бракує концептуальної цілісності, лаконічності, ієрархічності, шаблонів проектування, і його неймовірно складно рефакторити. Простіше викинути поганий код на смітник і почати заново, ніж щось міняти в ньому.
Програми підкоряються закону ентропії, як і все інше у Всесвіті. Безперервні зміни викликають руйнування програм, яке порушує цілісність початкової архітектури. Це неминуче, але програмісти, які не взяли до уваги питання цілісності, пишуть програми, які руйнуються настільки швидко, що стають непотрібними ще до свого завершення. Ентропічна помилка цілісності, ймовірно, найпоширеніша помилка, що призводить до провалу проектів. А друга за поширеністю - це створення програми, що йде врозріз з бажаннями клієнта. Руйнування програм уповільнює прогрес розробки експоненціально, тому багато проектів приходять до лавиноподібно наростаючим зривів бюджету і термінів, і це триває до тих пір, поки їх остаточно не знищать.
У дослідженні 2004-го року було виявлено, що більша частина програмних проектів (51%) стикаються з критичними проблемами (зрив термінів, перевищення бюджету, невиконання зобов'язань, порушення функціоналу тощо - прим. пер.), а 15% повністю провалюються. Це краще, ніж у 1994-му, коли останніх було 31%.
Хоча велика частина програм створюється командами, це не є демократична діяльність. Зазвичай одна людина є відповідальною за архітектуру, решта - лише кодери.
Програмування - важка праця. Це дуже напружена розумова діяльність. Хороші програмісти думають про роботу 24 години 7 днів на тиждень. Вони пишуть найкращий код в душі і в своїх снах. Оскільки найважливіша робота робиться далеко від клавіатури, розробку програмних проектів не можна прискорити, змушуючи людей більше працювати в офісі, або додавши нових людей у проект.
Від перекладача. Ймовірно, ці факти не є такими вже маловідомими або унікальними. Але мені вони здалися десь кумедними, десь повчальними, і вже точно вартими уваги.
