Чи слід ділитися внутрішнім кодом в організації, що не розробляється?


14

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

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

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

Деякі аргументи поки що:

  • Паролі в VCS піддаються (рішення: позбудьтеся паролів - вони не повинні бути там для початку)
  • Код відкритий для атак безпеки на безпеку (контр-аргумент: це запобігає лише чесним / ледачим нападникам)
  • Служби підтримки можуть запитати розробників "як" справи (лічильник: навчити людину ловити рибу тощо)

Хтось відкриває свій код персоналу в їх організації? Чи це викликало якісь проблеми?


4
Чому б ти хотів утримати це від них?
Мар'ян Венема

1
Чи можете ви навести закон, який підтверджує це?
Blrfl

3
@ S.Lott: Це "капітальний актив", і як така компанія має право контролювати, які працівники можуть, а можуть і не мати доступу до неї. Зазвичай компанія бажає обмежити кількість працівників, які мають доступ, щоб обмежити кількість людей, яких можна підкупити або змусити віддати актив або зловживати активом, коли вони погоджуються з компанією. Тому в більшості випадків вона не повинна розкриватися внутрішньо (всім; вона повинна бути розкрита керівництву).
Ян Худек

1
@JanHudec: "має бути розкрито керівництву"; "компанія має право контролювати, які працівники можуть, а можуть і не мати доступу до неї". Ідеально. Не варто розробникам приймати ці рішення. Звідси мій запит на роз'яснення. Як можна поставити це питання? Чому розробники приймають таке рішення?
S.Lott

1
@ S.Lott: Я не бачу, що питання означає, що таке рішення приймають розробники. Управління має останнє слово, але хтось повинен зібрати для них аргументи.
Ян Худек

Відповіді:


8

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

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

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

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

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

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


5

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

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

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


4

Я поділяю загальне / прагматичне бачення на це, а також може залежати і від характеру роботи / організації. Але я вважаю, що база коду повинна бути відкритою для всіх (також буде виявлена ​​відкритість та довіра всередині організації).

Я також працюю в подібній установці, як ви згадали, де у нас є команда служби підтримки / служби підтримки, яка займається запитами клієнтів. Однак у деяких складних областях системи вони потребують додаткової допомоги. У моєму випадку база коду відкрита для всіх, з якими ми не стикалися.

  • Думаю, відкривши базу коду, інші зацікавлені члени групи підтримки можуть також перевірити кодову базу та ознайомитись з діловими правилами / сферою, яка їх цікавить, або потрібно знайти відповіді (і, можливо, покращити своє технічне розуміння та переглянувши щось відрізняється від монотонного розпорядку, якщо дозволяє час;)). Це також може виявитися корисним, коли члени групи підтримки отримують проблеми із клієнтами та журнали, і вони зможуть вказати / допомогти на можливі області коду, де це відбувається, переглянувши стек трек, наприклад (очевидно, це залежатиме від проблеми тощо). Це також заощадить час з розробником, але залежно від проблеми, звичайно.

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


3

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

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

У нашій організації навіть тоді, коли люди не дуже роблять внесок у код - вони мають прямий доступ до коду, який допомагає, оскільки вони намагаються боротися / виправляти проблеми на місцях (з правом власності), а не скидають речі до розробника і лягають спати!


3
"У більшості організацій зазвичай є відкрите для всіх сховищ для підтримки код." - У мене є сумніви щодо цього. Чи можете ви навести будь-які дані для підтвердження цієї претензії? Крім того, як не в змозі отримати доступ до проекту reo Foo, який повинен мене демотивувати?
Петер Тьорьк

@ PéterTörök - Я підозрюю, що те, що означає Діпан, - це те, що більшість організацій, у яких він / вона має досвід, код відкритий для всіх. Це погодилося б із моїм власним досвідом роботи в різних розмірах організації. Навіть під час роботи в оборонній промисловості було напрочуд мало коду, який був лише в захищеній мережі.
Марк Бут

@ Марк, в цьому сенсі я згоден. На більшості моїх робочих місць поки що я не бачив великих зусиль для розробки політики доступу до репортажів SCM, тому досить часто вони є фактично доступними для всіх, хто випадково заходить. Але це результат знехтування, а не чиїсь свідомого рішення.
Péter Török
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.