Що ви додали до цього контрольного списку проектів розробки програмного забезпечення? [зачинено]


14

Я великий шанувальник контрольних списків. Є Контрольний список подорожей , Переміщення контрольного списку і навіть Контрольний список Scrum .

Контекст : вас прийняла на роботу велика корпорація та поклала на себе завдання встановити все середовище розробки програмного забезпечення, процеси, команду тощо. У вас "карт-бланш". Ви несете відповідальність за створення робочих приростів програмного забезпечення. Розмір проекту: 2000 чоловік / дні.

Які елементи ви додали б до наступного (навмисно невеликого та неповного) контрольного списку:

  • Встановіть сервер безперервної інтеграції
  • Напишіть DoD
  • Написати вказівки щодо кодування на одній сторінці
  • Створіть відставання продукту
  • Встановіть систему відстеження помилок
  • Розклад регулярного часу обличчя

Відповіді:


10

* 1.) Порадьтеся з розробниками, щоб побачити, що їм насправді потрібно! *

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

3.) Контроль джерел / версій

4.) Система перегляду коду (Crucbile / Fisheye як приклад)

5.) стіна Канбана (або щось подібне)

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

7.) Електронні дошки

8.) Комфортне середовище для розробників (кушетки, столики, зони чілоут, хороший Wi-Fi тощо)

9.) Чудова кава !!!


cofee має різницю
:)

які електронні дошки ви використовуєте?

@Pierre 303 - Друк результатів сесії білої дошки a (якісна фотографія виконає той самий трюк, як і я).
Мартійн Вербург

8
  • Налаштування інструментальної ланцюга - IDE, сервер CI, сервер якості коду, контроль джерела, веб-сервер, бази даних, трекер видачі тощо
  • Резервні копії - Яку роль відіграє кожна людина в команді? Якими процесами / модулями він володіє і хто є його резервним копієм?
  • (Прийняття користувача) Налаштування тестового середовища - Не тільки безперервна інтеграція w. модульні тести, але інтеграційні тести для покриття дійсно поганих речей, декількох платформ, серверів додатків, віртуальних машин тощо.
  • Налаштування тестів ефективності - чим раніше, тим краще, оскільки вам знадобляться історичні дані, щоб відповісти "З якою особливістю / віхою продуктивність знизилася так погано?"
  • (Кінцевий користувач) Контур документації - Що буде в документації? Який тип документації потрібен?
  • Маркетингові канали - Як оголошуються внутрішні віхи та зовнішні випуски? У вас крута назва програмного забезпечення, логотипу, кольорів, формулювань тощо?
  • Внутрішнє спілкування - Як однолітки з інших команд будуть інформувати про зміни? Як здійснюється співпраця? Вікі? Права доступу?
  • Люди та процес забезпечення якості - Хто буде тестувати, що, як часто та за якими критеріями?
  • Процес випуску - коли, як часто, як, хто це робить, хто отримує випуск тощо.
  • Управління ризиками - найгірший сценарій (з проекту mgmt pov і pov часу виконання, наприклад, "клієнт втрачає гроші через те, що програмне забезпечення вийшло з ладу на модулі X, який план резервного копіювання?"
  • Забезпечення основного середовища розробки, наприклад віртуалізація його для Escrow
  • Місце проведення офіційних та неформальних зустрічей
  • Тренінг або вступ для всіх людей, тому вони знають, що це за налаштування, для чого кожна частина і як вони її використовують.
  • Визначення доглядача та надання йому всіх речей (наприклад, дозволів), які він повинен насправді піклуватися про те, коли справи йдуть погано

+1 для резервного копіювання та тренувань
Liviu T.

резервні копії, хоча я думаю, що щось із цього є непомірним.
BlackICE

5

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


4

Почнемо з того, щоб найняти для вашого проекту хорошу команду потрібних професіоналів. У типовому бізнес-додатку вам потрібно буде найняти розробника баз даних і ДБА, особу, що відповідає за якість, системного адміністратора, бізнес-аналітиків, розробників додатків, спеціаліста з користувальницького інтерфейсу і лідерів команди як мінімум. DBA, System Admin, бізнес-аналітики та QA повинні бути в окремому ланцюжку звітності від команди розробників. Спеціаліст БД розробки повинен звітувати з тим же технічним лідером, що і розробники додатків та спеціаліст із користувальницького інтерфейсу.

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

Налаштування сервера dev / qa / staging та prod як для програми, так і для баз даних. Бази даних ніколи не повинні знаходитися на тому ж сервері, що і програми. Залежно від розміру та обсягу проекту, вам може знадобитися кілька серверів або SAN, тощо для кожного середовища.

Як тільки сервери налаштовані, заплануйте резервне копіювання файлових систем, бази даних та журналів транзакцій бази даних. Зробіть це вже в перший день. Наймайте таку фірму, як Iron Mountain, щоб знімати резервні копії поза сайтом щотижня.

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

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

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

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

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

Створіть плани та вимоги тестів.

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

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

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

Створіть тестові дані приблизно за розміром, на який, на вашу думку, буде база даних. Змусити всіх розробників перевірити свій код на базі даних такого розміру. Не дозволяйте розробникам розвиватися лише на основі невеликої бази даних на своїх персональних машинах. Це часта причина коду, який працює добре, поки не потрапить у виробництво.

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

Можливо, вам знадобиться система управління проектами або принаймні налаштувати електронні таблиці для відстеження того, що потрібно відстежувати. Виконуючи планування проекту, візьміть на себе не більше шести годин на день. Це допомагає врахувати час, який буде витрачено не на проект, наприклад, канікули, час хвороби, канікули, зустрічі з персоналом, огляди ефективності тощо. Якщо ви знаєте, що проект знаходиться в періоді великої недоступності (скажімо, проект, який працює з 1 листопада по 1 січня в США), можливо, вам доведеться внести додаткові надбавки на більше відпусток та відпустки. Не чесно розраховувати, що розробники відмовляться від відпустки та відпусток, і ніхто не може передбачити, коли трапляться такі речі, як час хвороби, обов'язок присяжних, час позбавлення волі тощо. Припустимо, вони відбудуться з вашою командою в цьому проекті.


Я думаю, що машина для тестових користувачів повинна бути "стогін повільно", а не "кричати повільно";) дуже приємний список.
BlackICE

@david, мені подобається ваша пропозиція і я змінив її в тексті.
HLGEM

Чудова відповідь - пункти кульок або назви секцій можуть трохи допомогти.
JBRWilkinson

3

Деякі речі, які я не бачу у запитанні та наступних відповідях:

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

  • План навчання. Скільки тижнів року тренувань ваші дияволи повинні тримати гострі? Хтось відстежує це? (Електронна таблиця може бути достатньою для більшості команд.) Майте механізм, щоб вони могли звітувати (надсилаючи комусь повідомлення електронною поштою, щоб вони переглядали 2 години веб-трансляцій на "що завгодно", ймовірно, достатньо), а керівництво планувало - наприклад, кого нам надіслати на що конференції цього року.

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

  • стільки інтегрованого ALM, скільки ви можете стояти чи дозволити собі. Зазвичай причиною «невідповідності імпедансу», подвійного введення, перекриття інструменту та інтеграції поворотного крісла є те, що система зростала шматочками та шматочками. Починаючи з нуля, ви хочете показати, що ваші люди можуть залишатися в одному інструменті протягом усього циклу. Не набираючи код у X, компілюючи Y, тестуючи Z, змінюючи статус робочого предмета / завдання з A, повідомляючи про свій час, проведений з B, повідомляючи людині, яка чекала, що тепер може продовжувати роботу з C, намагаючись зрозуміти з'ясувати, що робити далі з D, визначаючи загальний прогрес з E тощо.


2

Неогітуйте більше людино-днів.

Це рідкісна подія, коли люди виділяють достатньо спочатку.

[Пізніше ... ще більше відмінися ...]


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

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

@Orbling вони існують там, де я працюю. Національний роздрібний продавець у Великобританії, що перебуває у списку ftse 250. Деякі проекти спізнюються, але не такі пізні, і вони є винятком.
NimChimpsky

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

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

2

Бачачи, як у мене виникли найбільші проблеми з сторонніми бібліотеками та їх використанням:

  1. Визначте бібліотеки та версії, які ви будете використовувати.
  2. Створіть процес інтеграції оновлень бібліотеки у свій проект.
  3. Переконайтеся, що розробники все в виборі бібліотеки.
  4. Створіть корисний канал для відкритого обговорення технологій, що використовуються.

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


1

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

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

Інакше ви закінчите працювати над безпекою після впровадження - там, де це може коштувати в 8 - 10 разів дорожче (цифри Gartner, IBM та інших), буде засмучувати людей, оскільки функціональність, ймовірно, буде порушена, і, можливо, буде занадто пізно для запобігання експлуатації і пошкодження.


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

Девід - можливо, ти маєш рацію, що такого рівня деталізації не повинно бути там, але я думаю, що для безпеки має бути принаймні позиція. Краще?
Rory Alsop

1

1. Візьміть його до команди

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

2. Оглянути та адаптувати

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.