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