Передмова
Це справді непросте завдання, і є багато ґрунту. Тому я смиренно пропоную це як дещо вичерпне керівництво для вашої команди з покажчиками відповідних інструментів та навчального матеріалу.
Пам’ятайте: Це керівні принципи , і як такі вони мають бути прийняті, адаптовані або відхилені залежно від обставин.
Остерігайтеся: Скинути все це командою відразу, швидше за все, не вдасться. Спробуйте спробувати вишневі елементи, які б найкраще потіли, і вводити їх повільно, по одному.
Примітка: не все це стосується безпосередньо таких систем візуального програмування, як G2. Більш детальну інформацію про те, як вирішити, див. У Додатку в кінці.
Резюме для нетерплячих
- Визначте жорстку структуру проекту із:
- шаблони проектів ,
- умови кодування ,
- знайомі системи побудови ,
- і набори вказівок щодо використання вашої інфраструктури та інструментів.
- Встановіть хороший SCM і переконайтеся, що вони знають, як ним користуватися.
- Вкажіть їх на хороші ІДЕ за їх технологією та переконайтесь, що вони знають, як ними користуватися.
- Впровадити перевірку якості коду та автоматичну звітність у системі збірки.
- Приєднайте систему побудови до безперервної інтеграції та систем постійного огляду .
- За допомогою вищезазначеного визначте якість коду «гарячих точок» та рефактора .
Тепер для довгої версії ... Обережно, підтягніть себе!
Жорсткість (часто) хороша
Це суперечлива думка, оскільки жорсткість часто сприймається як сила, яка працює проти вас. Це правда для деяких етапів деяких проектів. Але як тільки ви бачите це як структурну підтримку, рамку, яка забирає здогадки, це значно скорочує витрачений витрачений час і зусилля. Зробіть так, щоб він працював на вас, а не на вас.
Жорсткість = процес / процедура .
Розробка програмного забезпечення потребує належних процедур та процедур з тих самих причин, що хімічні заводи чи фабрики мають інструкції, процедури, розробки та вказівки щодо надзвичайних ситуацій: запобігання поганих результатів, підвищення передбачуваності, максимізація продуктивності ...
Жорсткість приходить в помірності!
Жорсткість структури проекту
Якщо кожен проект має свою структуру, ви (і прибульці) втрачаєтесь і вам потрібно підбиратися з нуля кожного разу, коли ви їх відкриваєте. Ви не хочете цього в професійному магазині програмного забезпечення, і ви також не хочете цього в лабораторії.
Жорсткість систем побудови
Якщо кожен проект виглядає по- різному, є хороший шанс, що вони також
будуватимуться по-різному . Побудова не повинна вимагати занадто багато досліджень або занадто багато здогадок. Ви хочете бути в змозі зробити канонічну річ і не потрібно турбуватися про специфіку: configure; make install
, ant
,
mvn install
, і т.д. ...
Повторне використання тієї ж системи побудови та змушування її розвиватися з часом також забезпечує стабільний рівень якості.
Вам потрібно швидко README
вказати специфіку проекту та витончено керувати користувачем / розробником / дослідником, якщо він є.
Це також значно полегшує інші частини інфраструктури побудови, а саме:
Тож слідкуйте за своєю збіркою (як вашими проектами), але зробіть її суворішою та ефективнішою в повідомленні про порушення та погану практику.
Не вигадуйте колесо заново і не використовуйте повторно те, що вже зробили.
Рекомендоване читання:
Жорсткість у виборі мов програмування
Ви не можете розраховувати, особливо в дослідницькому середовищі, щоб усі команди (і тим більше всі розробники) використовували однаковий стек мови та технологій. Однак ви можете визначити набір «офіційно підтримуваних» інструментів та заохотити їх використання. Решта, без належного обґрунтування, не повинні бути дозволені (крім прототипування).
Зробіть свій стек простий, а технічне обслуговування та широта необхідних навичок до мінімуму: міцне серцевина.
Жорсткість конвенцій і вказівок кодування
Coding конвенції та керівні принципи , що дозволяє розвивати і ідентичність як команда, і загальний жаргон . Ви не хочете помилятися з terra incognita кожного разу, коли ви відкриваєте вихідний файл.
Безглузді правила, які ускладнюють життя або забороняють чіткість дій у тій мірі, в якій відмовляються від вчинення зобов'язань на основі простих простих порушень, є тягарем. Однак:
Особистий підхід: Я агресивний, коли справа доходить до умов кодування, деякі навіть кажуть нацистські , тому що я вірю в те, що мовна команда є
мовою мовної мови . Коли кодовий код стає зареєстрованим, він виділяється як застуда на обличчі голлівудської зірки: він запускає огляд і дію автоматично. Насправді я інколи пішов далеко за те, щоб виступати за використання гачків, які попередньо здійснюють, для відхилення невідповідних зобов’язань. Як уже згадувалося, воно не повинно бути надмірно божевільним і перешкоджати продуктивності: воно повинно керувати цим. Введіть їх повільно, особливо на початку. Але краще, ніж витрачати стільки часу на виправлення несправного коду, що ви не можете працювати над реальними проблемами.
Деякі мови навіть застосовують це за допомогою дизайну:
- Java мала на меті зменшити кількість тупих лайнів, з якими ви можете писати (хоча, без сумніву, багатьом це вдається зробити).
Блок-структура Python за допомогою відступу - це ще одна ідея в цьому сенсі.
Піди, з gofmt
інструментом, який повністю прибирає будь-які дискусії і зусилля ( і его !! ) властивий стиль: бігти , gofmt
перш ніж зробити.
Переконайтесь, що гниль коду не може проскочити. Конвенції коду , безперервна інтеграція та постійні перевірки , програмування пар та огляди коду - ваш арсенал проти цього демона.
Плюс, як ви побачите нижче, код - це документація , і це ще одна область, де конвенції заохочують читати і чіткіша.
Жорсткість Документації
Документація йде рука об руку з кодом. Сам код - це документація. Але повинні бути чіткі інструкції щодо побудови, використання та обслуговування речей.
Використання єдиного пункту контролю для документації (наприклад, WikiWiki або DMS) - це добре. Створіть простори для проектів, пробіли для більш випадкових стен та експериментів. Нехай усі простори повторно використовують загальні правила та умови. Спробуйте зробити це частиною командного духу.
Більшість порад, що стосуються коду та інструментарію, стосуються також документації.
Жорсткість у кодовому коментарі
Як зазначалося вище, коментарі до коду - це також документація. Розробники люблять висловлювати свої почуття щодо свого коду (в основному гордість і розчарування, якщо ви запитаєте мене). Тож незвично для них висловлювати це у невизначених термінах у коментарях (або навіть кодексах), коли більш формальний фрагмент тексту міг би передати той самий сенс з менш виразними або драматичними. Добре дозволити кілька проскочити через забави та історичні причини: це також є частиною розвитку культури команди . Але дуже важливо, щоб усі знали, що є прийнятним, а що ні, і цей шум коментарів - це саме це:
шум .
Жорсткість у журналах фіксації
Записи журналів - це не надокучливий і марний "крок" життєвого циклу вашої SCM: ви НЕ ПРИКЛАДАєте його, щоб вчасно дістатися додому або продовжити виконання наступного завдання, або наздогнати приятелів, які пішли на обід. Вони мають значення, і, як (більшість) хорошого вина, чим більше часу проходить, тим ціннішим вони стають. Тож робіть їх правильно. Мене спалахнуло, коли я бачу, як співробітники пишуть однокласинці для гігантських доручень або для неочевидних хакерів.
Коміти виконуються з причини, і ця причина НЕ завжди чітко виражається вашим кодом та одним рядком журналу комісій, який ви ввели. Тут є більше, ніж це.
У кожному рядку коду є історія та історія . Різниці можуть розповісти свою історію, але ви повинні написати її історію.
Чому я оновив цей рядок? -> Тому що змінився інтерфейс.
Чому інтерфейс змінився? -> Оскільки бібліотека L1, що визначає її, була оновлена.
Чому бібліотеку оновили? -> Оскільки бібліотека L2, яка нам потрібна для функції F, залежала від бібліотеки L1.
А яка особливість X? -> Див. Завдання 3456 у трекері випуску.
Це не мій вибір SCM, і може бути не найкращим для вашої лабораторії; але Git
отримує це право і намагається змусити вас писати гарні журнали більше, ніж більшість інших систем SCM, використовуючи short logs
і
long logs
. Зв’яжіть ідентифікатор завдання (так, він вам потрібен) та залиште загальний підсумок для shortlog
, а також розгорніть у довгому журналі: напишіть історію зміни .
Це журнал: тут можна відстежувати та записувати оновлення.
Правило великого пальця: Якщо ви шукали щось про цю зміну пізніше, чи ваш журнал може відповісти на ваше запитання?
Проекти, Документація та Кодекс ВЖЕ
Тримайте їх синхронізовано, інакше вони вже не утворюють цього симбіотичного утворення. Це творить чудеса, коли у вас є:
- очищає журнали у вашому SCM, w / посилання на ідентифікатори завдань у вашому трекері випусків,
- де самі квитки на цей трекер посилаються на набори змін у вашій SCM (і, можливо, на версії вашої системи CI),
- і система документації, яка посилається на все це.
Код і документація повинні бути узгодженими .
Жорсткість при тестуванні
Емпіричні правила:
- Будь-який новий код повинен мати (принаймні) одиничні тести.
- Будь-який реконструйований застарілий код має бути одиничним тестом.
Звичайно, для цього потрібно:
- насправді перевірити щось цінне (або вони є марною тратою часу та енергії),
- бути добре написаним та прокоментованим (як і будь-який інший код, який ви зареєстрували).
Вони також є документацією, і вони допомагають окреслити контракт вашого коду. Особливо, якщо ви використовуєте TDD . Навіть якщо ви цього не зробите, вони вам потрібні для душевного спокою. Вони є вашою мережею безпеки, коли ви включаєте новий код (технічне обслуговування або функціональність) і сторожова вежа для захисту від гниття коду та екологічних збоїв.
Звичайно, вам слід піти далі і пройти інтеграційні тести та
регресійні тести для кожної відтвореної помилки.
Жорсткість у використанні інструментів
Добре, що випадкові розробники / вчені хочуть спробувати якусь нову статичну перевірку на джерелі, створити графік або модель за допомогою іншого або реалізувати новий модуль за допомогою DSL. Але найкраще, якщо є канонічний набір інструментів, який, як очікується, знають і використовують усі члени команди.
Крім того, дозвольте членам використовувати те, що вони хочуть, якщо вони ВСІ:
- продуктивний ,
- НЕ регулярно вимагаючи допомоги
- НЕ регулярно підлаштовуючись під вашу загальну інфраструктуру ,
- НЕ порушуючи вашу інфраструктуру (шляхом зміни загальних областей, таких як код, система побудови, документація ...),
- НЕ впливаючи на роботу інших людей ,
- ВАЖЛИВО вчасно виконувати будь-яке запитуване завдання .
Якщо це не так, примушуйте їх повернутись до значень за замовчуванням.
Жорсткість проти універсальності, адаптивності, прототипування та надзвичайних ситуацій
Гнучкість може бути хорошою. Дозволити комусь час від часу використовувати хаку, швидкий п-брудний підхід або улюблений інструмент для домашніх тварин, щоб виконати роботу,
це добре. НІКОЛИ не дозволяйте це стати звичкою, і НІКОЛИ не дозволяйте цьому коду стати фактичною базою коду для підтримки.
Матеріальні стосунки команди
Розвивайте почуття гордості у своїй кодовій базі
- Розвивати почуття гордості в кодексі
- Використовуйте настінні дошки
- лідерна дошка для безперервної інтеграційної гри
- стінові дошки для управління випуском та підрахунку дефектів
- Скористайтеся трекером проблем / трекером помилок
Уникайте звинувачувальних ігор
- НЕ використовуйте ігри безперервної інтеграції / безперервної інспекції: це сприяє доброму та продуктивній конкуренції .
- НЕ слідкуйте за дефектами: це просто гарне господарство.
- НЕ визначте першопричини : це лише процеси, що підтверджують майбутнє.
- АЛЕ НЕ покладайте провини : це зустрічно продуктивно.
Йдеться про код, а не про розробників
Зробити розробників усвідомленими якістю свого коду, АЛЕ змусити їх бачити код як відокремлене ціле, а не розширення себе, яке не можна критикувати.
Парадокс: потрібно заохочувати програмування без его до здорового робочого місця, але покладатися на его в мотиваційних цілях.
Від вченого до програміста
Люди, які не цінують і пишаються кодом, не створюють хорошого коду. Щоб ця властивість з’явилася, їм потрібно виявити, наскільки цінним і веселим воно може бути. Простий професіоналізм і бажання робити добро недостатньо: йому потрібна пристрасть. Тож вам потрібно перетворити своїх учених на
програмістів (у великому сенсі).
Хтось стверджував у коментарях, що через 10-20 років щодо проекту та його коду хтось відчує прихильність. Можливо, я помиляюся, але я припускаю, що вони пишаються результатами кодексу та роботою та його спадщиною, а не самим кодом чи актом його написання.
З досвіду, більшість дослідників розцінюють кодування як необхідність, або в кращому випадку - як веселе відволікання. Вони просто хочуть, щоб це спрацювало. Тих, хто вже досить добре розбирається в цьому і хто має інтерес до програмування, набагато простіше переконати перейняти кращі практики та переключити технології. Потрібно дістати їх на півдорозі.
Технічне обслуговування коду є частиною науково-дослідної роботи
Ніхто не читає шалених наукових робіт. Ось чому вони перевіряються, перевіряються, уточнюються, переписуються та затверджуються знову і знову, поки не буде визнано, що вони готові до публікації. Те саме стосується дисертації та бази коду!
Дайте зрозуміти, що постійне рефакторинг та оновлення бази даних запобігає гниттю коду і зменшує технічну заборгованість, а також полегшує майбутнє повторне використання та адаптацію роботи для інших проектів.
Чому все це ??!
Чому ми турбуємося з усім вищезазначеним? Для якості коду . Або це
код якості ...?
Ці вказівки мають на меті привернути вашу команду до цієї мети. Деякі аспекти роблять це, просто показуючи їм шлях і дозволяючи їм це робити (що набагато краще), а інші беруть їх за руку (але саме так ви навчаєте людей і розвиваєте звички).
Звідки ви знаєте, коли мета досягається?
Якість вимірюється
Не завжди кількісно, але це вимірюється . Як уже згадувалося, потрібно розвивати почуття гордості за свою команду, а показ успіху та хороших результатів є ключовим. Регулярно вимірюйте якість коду та показуйте прогрес між інтервалами та як це важливо. Зробіть ретроспективи, щоб замислитись про те, що зроблено, і як це покращило або погіршило ситуацію.
Є чудові інструменти для постійного огляду . Sonar є популярним у світі Java, але він може адаптуватися до будь-яких технологій; і є багато інших. Тримайте свій код під мікроскопом і шукайте цих прикрих дратівливих помилок і мікробів.
Але що робити, якщо Мій код уже лайно?
Все вищесказане весело і мило, як поїздка у Never Land, але це не так просто, коли у вас вже є (купка парних і смердючих) лай-кодів, і команда неохоче змінюється.
Ось секрет: починати потрібно десь .
Особистий анекдот: В рамках проекту ми працювали з кодовою базою, яка спочатку важила 650 000+ Java LOC, 200 000+ ліній JSP, 40,000+ LOC JavaScript і 400+ МБ бінарних залежностей.
Приблизно через 18 місяців це 500 000 Java LOC (НАЙБІЛЬШЕ ОЧИЩЕННЯ) , 150 000 ліній JSP і 38 000 JavaScript LOC, залежності ледь не перевищують 100 МБ (і таких вже немає в нашій SCM!).
Як ми це зробили? Ми просто зробили все вищесказане. Або дуже старався.
Це зусилля в команді, але ми повільно вкладаємо в наші правила процесу та інструменти для моніторингу частоти серцевих скорочень нашого продукту, при цьому поспішно збиваючи "жир": лайно код, непотрібні залежності ... Ми не зупиняли всі розробки, щоб зробіть це: у нас є періодичні періоди відносного спокою та тиші, коли ми можемо зійти з розуму на кодову базу і розірвати її, але більшу частину часу ми робимо це все, дефолтуючи до режиму "перегляду та рефактора", кожен шанс, який ми отримаємо : під час складання, під час обіду, під час виправлення помилок у спринтах, у п’ятницю вдень ...
Було кілька великих "робіт" ... Перехід нашої системи побудови з гігантської збірки мурашок 8500+ XML LOC на багатомодульну збірку Maven було однією з них. Тоді у нас були:
- чіткі модулі (або, принаймні, це було вже набагато краще, і ми все ще маємо великі плани на майбутнє),
- автоматичне управління залежностями (для легкого обслуговування та оновлень, а також для видалення непотрібних деп),
- швидші, легші та відтворювані конструкції,
- щоденні звіти про якість.
Іншим було введення «ременів утиліти», навіть якщо ми намагалися зменшити залежності: Google Guava та Apache Commons зменшують ваш код і значно зменшують поверхню для помилок у вашому коді.
Ми також переконали наш ІТ-відділ, що, можливо, використання наших нових інструментів (JIRA, Fisheye, Crucible, Confluence, Jenkins) було краще, ніж ті, що існували. Нам все ще потрібно було розібратися з деякими, яких ми зневажали (QC, Sharepoint та SupportWorks ...), але це був загальний покращений досвід, залишилося ще трохи місця.
І кожен день зараз існує розрив між однією і десяткою публікацій, які стосуються лише виправлення та реконструкції речей. Ми періодично ламаємо речі (вам потрібні одиничні тести, і вам краще їх написати, перш ніж ви рефакторні речі), але загалом користь для нашої моралі І для продукту була величезна. Ми отримуємо туди один дріб відсотка якості коду за один раз. І це цікаво бачити, як воно збільшується !!!
Примітка. Знову ж таки, потрібно посилити жорсткість, щоб звільнити місце для нових і кращих речей. У моєму анекдоті наш ІТ-відділ частково має рацію, намагаючись нав’язати нам деякі речі, а іншим - неправильно. А може, вони мали рацію . Все змінюється. Доведіть, що вони є кращими способами підвищення вашої продуктивності. Для цього є пробні запуски та прототипи .
Супер-таємний поступовий цикл спагетті з кодексом, що рефакторингує для приголомшливої якості
+-----------------+ +-----------------+
| A N A L Y Z E +----->| I D E N T I F Y |
+-----------------+ +---------+-------+
^ |
| v
+--------+--------+ +-----------------+
| C L E A N +<-----| F I X |
+-----------------+ +-----------------+
Коли у вас на інструментальній стрічці є якісні інструменти:
Проаналізуйте свій код за допомогою перевірок якості коду.
Вкладиші, статичні аналізатори чи що у вас є.
Визначте свої критичні точки і низько висячі фрукти .
Порушення мають ступінь тяжкості, а великі класи з великою кількістю осіб з високою суворістю є великим червоним прапором: як такі, вони відображаються як "гарячі точки" на типах подань радіатора / теплової карти.
Фікс гарячих точок першої.
Це максимально збільшує ваш вплив за короткий проміжок часу, оскільки вони мають найвищу цінність для бізнесу. В ідеалі критичні порушення слід вирішувати, як тільки вони з’являються, оскільки вони є потенційними вразливими місцями безпеки або причинами збоїв, і становлять високий ризик викликати відповідальність (і, у вашому випадку, погані показники роботи лабораторії).
Очистіть порушення низького рівня за допомогою автоматизованих зачисток бази даних .
Це покращує співвідношення сигнал / шум, тому ви зможете побачити значні порушення на вашому радарі під час їх появи. Спочатку часто існує велика армія незначних порушень, якщо про них ніколи не підозрювали, а вашу кодову базу залишали в дикій природі. Вони не представляють реального "ризику", але погіршують читабельність та зручність ремонту коду. Виправте їх, коли ви зустрічаєтесь з ними під час роботи над завданням, або великими квестними очищеннями з автоматизованим розгортанням коду, якщо можливо. Будьте обережні з великими автоматичними розгортаннями, якщо у вас немає гарного тестового набору та інтеграційної системи. Переконайтеся, що домовитесь з колегами в потрібний час, щоб запустити їх, щоб мінімізувати роздратування.
Повторіть, поки ви не задоволені.
Яким, в ідеалі, ви ніколи не повинні бути, якщо це все-таки активний продукт: він буде постійно розвиватися.
Швидкі поради щодо гарного ведення будинку
Перебуваючи в режимі виправлень на основі запиту підтримки клієнта:
- Зазвичай найкращою практикою НЕ займатися вирішенням інших проблем, оскільки ви можете неохоче вводити нові.
- Перейдіть до нього в стилі SEAL: увійдіть , вбийте помилку, вийдіть і відправте патч. Це хірургічний тактичний удар.
Але для всіх інших випадків , якщо ви відкриєте файл, покладіть на нього обов'язок:
- безумовно: перегляньте його (робіть замітки, подайте звіти про випуск),
- можливо: очистіть його (очищення стилю та незначні порушення),
- в ідеалі: рефактор його (реорганізуйте великі секції та їхні сусіди).
Просто не заважайте витрачати тиждень від файлу до файлу і закінчуватись масовим набором тисяч виправлень, що охоплюють кілька функцій та модулів - це ускладнює майбутнє відстеження. Один випуск у коді = один квиток у вашому трекері. Іноді набір змін може впливати на кілька квитків; але якщо це трапляється занадто часто, то, напевно, ти робиш щось не так.
Додаток: Керування середовищами візуального програмування
Огороджені сади замовних систем програмування
Кілька систем програмування, як G2 ОП, є різними звірами ...
Немає джерела "Код"
Часто вони не дають вам доступу до текстового зображення вашого вихідного "коду": він може зберігатися у власному двійковому форматі, а може зберігати речі у текстовому форматі, але приховує їх від вас. Запропоновані системи графічного програмування насправді не рідкість у дослідницьких лабораторіях, оскільки вони спрощують автоматизацію робочих процесів обробки даних, що повторюються.
Немає інструментальних засобів
Окрім власних, тобто. Вас часто стримує їх середовище програмування, власний налагоджувач, власний перекладач, власні інструментальні засоби та формати документації. Вони огороджені садами , за винятком випадків, коли вони виявляють
зацікавленість у когось, достатньо мотивованого, щоб переробити інженерні формати та створити зовнішні інструменти - якщо ліцензія це дозволяє.
Відсутність документації
Досить часто це нішеві програми програмування, які використовуються в досить закритих середовищах. Люди, які ними користуються, часто підписують НДА і ніколи не говорять про те, що вони роблять. Програми спільнот для них рідкісні. Тож ресурсів мало. Ви застрягли зі своєю офіційною довідкою, і все.
Іронічний (і часто розчаровуючий) біт полягає в тому, що все, що ці системи роблять, очевидно, можна досягти, використовуючи основні та загальномовні мови програмування, і, мабуть, більш ефективно. Але це вимагає більш глибоких знань програмування, тоді як ви не можете сподіватися, що ваш біолог, хімік або фізик (щоб назвати декілька) знають достатньо про програмування, а ще менше мати час (і бажання) на реалізацію (і підтримку) складні системи, які можуть бути або не бути довговічними. З тієї ж причини, що ми використовуємо DSL, ми маємо ці замовлені системи програмування.
Особистий анекдот 2:Власне, я працював над одним із них сам. Я не зв’язував прохання ОП, але мій проект був набором взаємопов'язаних великих фрагментів програмного забезпечення для обробки та зберігання даних (в першу чергу для біоінформатичних досліджень, охорони здоров'я та косметики, а також для бізнесу розвідка або будь-яка область, що передбачає відстеження великих обсягів дослідницьких даних будь-якого типу та підготовку робочих процесів для обробки даних та ETL). Одне з цих додатків - це просто візуальний IDE, який використовував звичайні дзвінки: інтерфейси перетягування та перенесення, розроблені робочі простори проекту (використання текстових та XML-файлів для зберігання метаданих), безліч драйверів, що підключаються до неоднорідних джерел даних, та візуального полотно для проектування конвеєрів для обробки даних з N джерел даних і, врешті-решт, генерування M трансформованих виходів, і можливі блискучі візуалізації та складні (та інтерактивні) інтернет-звіти. Ваша типова система візуального програмування, яка страждає на частину синдрому NIH під витвором проектування системи, адаптованої до потреб користувачів.
І, як ви могли очікувати, це приємна система, досить гнучка для своїх потреб, хоча іноді трохи перевершена, так що вам цікаво "чому б не використовувати інструменти командного рядка замість цього?", І, на жаль, завжди провідні в середніх розмірах команди, які працюють над великими проектами для багатьох різних людей, використовуючи його з різними "найкращими" методами.
Чудово, ми приречені! - Що ми з цим робимо?
Ну і врешті-решт все вищезазначене все-таки має місце. Якщо ви не можете витягти більшість програм з цієї системи для використання більш основних інструментів та мов, вам "просто" потрібно адаптувати її до обмежень вашої системи.
Про версію та зберігання
Зрештою, ви можете майже завжди змінювати речі, навіть із самим обмеженим та огородженим середовищем. Найчастіше ці системи все ще оснащені власною версією (яка, на жаль, часто є досить базовою, і просто пропонує повернутися до попередніх версій без особливої видимості, просто зберігаючи попередні знімки). Це не точно використання диференціальних наборів змін, таких як ваш SCM вибору, можливо, і, ймовірно, не підходить для декількох користувачів, які одночасно подають зміни.
Але все-таки, якщо вони надають таку функціональність, можливо, ваше рішення полягає в тому, щоб дотримуватися наших улюблених стандартних галузевих рекомендацій і перенести їх у цю програмування !!
Якщо система зберігання даних є базою даних, вона, ймовірно, експортує функції експорту або може бути резервна копія на рівні файлової системи. Якщо використовується спеціальний двійковий формат, можливо, ви можете просто спробувати його версію за допомогою VCS, який має хорошу підтримку бінарних даних. Ви не будете мати дрібнозернистий контроль, але, принаймні, ви будете захищені від катастроф і матимуте певну ступінь дотримання аварійних ситуацій.
Про тестування
Реалізуйте свої тести на самій платформі та використовуйте зовнішні інструменти та фонові завдання для створення регулярних резервних копій. Цілком ймовірно, ви запускаєте ці тести так само, як ви б запускали програми, розроблені за допомогою цієї програми програмування.
Звичайно, це зламана робота і, безумовно, не відповідає стандарту, що є загальним для "звичайного" програмування, але ідея полягає в адаптації до системи, намагаючись зберегти вигляд професійного процесу розробки програмного забезпечення.
Дорога довга і крута ...
Як завжди з нішевими середовищами та замовниками систем програмування, і, як ми викривали вище, ви маєте справу з дивними форматами, лише обмеженим (або зовсім невимогливим) набором можливо незграбних інструментів і порожнече замість спільноти.
Рекомендація: Намагайтеся максимально реалізовувати вищезазначені вказівки поза вашою замовленою програмуванням. Це гарантує, що ви можете розраховувати на "загальні" інструменти, які мають належну підтримку та стимул громади.
Вирішення завдань: Коли це не варіант, спробуйте вдосконалити цю глобальну рамку у свій "ящик". Ідея полягає в накладенні цього креслення найкращих галузевих практик над вашою системою програмування, і зробити це найкращим. Порада все ще діє: визначайте структуру та кращі практики, заохочуйте їх дотримання.
На жаль, це означає, що вам може знадобитися зануритися і зробити величезну кількість роботи на ногах. Тому...
Знамениті останні слова та скромні запити:
- Документуйте все, що ви робите.
- Поділіться своїм досвідом.
- Відкрийте джерело будь-якого інструменту вашого запису.
Роблячи все це, ви:
- не тільки збільшити ваші шанси отримати підтримку людей у подібних ситуаціях,
- але також надайте допомогу іншим людям та сприяйте обговоренню навколо вашої технології.
Хто знає, може бути на самому початку нового енергійного спільноти Obscure мови X . Якщо таких немає, починайте одну!
Можливо, всередині це красиво , але поки ніхто не має жодної підказки , тому допоможіть зняти цю потворну стіну і нехай заглядають інші!