Як визначити кількість програмістів, необхідних для проекту


18

Звідки ви знаєте, скільки програмістів потребує конкретний проект, щоб досягти успіху?

Компанія, в якій я працюю, виконує замовлення для клієнтів. Ми написали внутрішньобудинкову систему управління складами, яка обробляє управління запасами на основі місця розташування, обробку замовлень, генерацію накладних, виставлення рахунків, аудит вантажу та звітність (можливо, 50 звітів). Він також має функції сканування штрих-коду та портал клієнта, а також десятки інших менших функцій. Сюди також входить повний годинний годинник працівника. Він інтегрується з Quickbooks, UPS та FedEx. Він обробляє роботу щонайменше для 50 клієнтів, які дещо відрізняються своєю функціональністю. Наприклад, ми імпортуємо замовлення з файлів, які клієнти надсилають, але кожен клієнт надсилає інший формат файлів (csv, excel, плоскі файли та веб-сервіси), тому у нас налаштовано понад десяток методів конверсії замовлень. Експорт - це та сама історія.

Проект є складним і щодня стає складнішим з понад чвертю мільйонів рядків коду. Це приблизно 250 000 рядків коду VB.NET, 6200 рядків коду Ruby і, можливо, 5000 рядків PHP. Він також має базу даних MySQL з приблизно 200 таблицями.

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

Наразі в цьому проекті є лише один програміст - я. Наразі я підтримую всю продукцію для нашої компанії із 75 чоловік. Це включає в себе усунення несправностей та налаштування нових клієнтів та будь-які нові функції, які потрібні. Крім того, ми намагаємось переписати все, щоб бути 100% Ruby на Rails. І ми хотіли б продати всю систему протягом наступного року або близько того, щоб її використовувати інші компанії.

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


11
Мене чекав жарт з лампочкою :(
Oded

lol ... google назва, і ви, ймовірно, знайдете їх. Коли я гугла, я фактично знайшла купу тих випадково хаха.
kstevens715

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

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

Це питання, схоже, дуже схоже на це питання . Можливо, ви також знайдете корисні деякі відповіді.
Робінз

Відповіді:


3

Я б сказав, щонайменше, 5 осіб. Один для тесту, один для специфікації, підтримки та документації та 3devs. У вашому випадку потрібно перевірити багато речей, тому 50-відсотковий тестер не повинен бути необґрунтованим. Людина, яка записує вимоги та має службу підтримки клієнтів, яка встановлює вашу інфраструктуру для тестування тощо. Три розробники, які я вважаю, досить низькі для такого проекту. Великий зворотний бік, інтегрований до багатьох систем сторонніх розробників, і повний фронт з надзвичайно великою кількістю індивідуальних звітів. Я хотів би мати.

  1. Хороший розробник заднього кінця (наполегливість / рівень бізнесу)
  2. Хороший розробник середнього та переднього кінців, що робить класи дій та JavaScript CSS Design.
  3. Хороший розробник архітектора, який працює, але також робить код у всіх шарах за допомогою експертів двох інших. Цей розробник також може робити такі речі, як налаштування JUnit Framework Maven Jenkins Git розгалуження тощо.

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


1
Я взяв відпустку на два дні минулого літа, і хтось повинен був увірватися в мій будинок, щоб придбати свій ноутбук ... так. Я завжди говорю про роботу у вакуумі, тому що у мене немає багатьох інших розробників, з якими можна взаємодіяти. А якщо жити в маленькому містечку, немає навіть жодної групи користувачів чи нічого такого, щоб приєднатися. Ми (я?) Недавно почали писати тестовий код, насправді, коли ми почали переходити на Rails. Я вже не уявляю собі розвиток без тестів. Мені подобається мати 50-відсотковий тестер.
kstevens715

1
Принаймні один розробник повинен бути сепціалістом бази даних.
HLGEM

8

Ласкаво просимо у непростий світ ресурсів ресурсів !

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

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

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

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


Мабуть, здавалося б, це повне перезапис системи 250K SLOC у щось таке, що має кращу якість (або, принаймні, консалтингової якості). Перевага полягає в тому, що збір вимог та загальний дизайн, ймовірно, вже зроблені. Це не мало, і це не щось для одного розробника, який має інші обов'язки.
Девід Торнлі

@DavidThornley Це дуже залежить від обсягу обов'язків розробників, його термінів, навантаження та того, як його компанія вже продає продукт. Я бачив багато складних проектів, над якими працювала команда на 1-2 людини, які були дуже успішними, тому що ними добре керували ... та багато інших, які не змогли. Однак я погоджуюся, що завдання це велике, і саме по собі це вже трохи червоний прапор з точки зору ресурсів. Річ у тому, що не варто просто наймати безліч людей, не виконавши спочатку невелике домашнє завдання, що справді суть моєї відповіді. :-)
Робінз

Обсяг - це те, що я доволі трохи піднімаю останні пару місяців. 20% проекту має 80% впливу на компанію. Саме на цьому я намагаюся зосередити увагу. На жаль, 80%, які мають 20% впливу, - це те, що підштовхується до передньої лінії, коли ми намагаємося боротися з "надзвичайними ситуаціями", кидаючи на нього більше коду та можливостей. Одного разу я попросив заморозити функцію, щоб я міг виправити деякі основні проблеми. Вони дали мені 5 днів. Потрібно говорити, що це через 5 років, і багато основних питань залишаються. Дякую за ваш пост, але дуже корисно.
kstevens715

6

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

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

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

Ви зараз працюєте мізком? Якщо так, будьте готові до роботи вдвічі важче, якщо від вас очікується керувати цим процесом і продовжувати розвиватись (підвищувати?) ..

і ось відповідь з мого попереднього досвіду, що опинився в подібній ситуації в ціні району Південної Каліфорнії:

5-6 людей && ~ 500k

  • 1 Ведучий розробник / менеджер, який носить усі шапки (~ 100k - 120k)

  • 2 старших (дуже здібних, самостійно керованих) програмістів з хорошим розумінням БД та вміннями (2x ~ 80 - 100k)

  • 1 Менеджер проектів для взаємодії з Управлінням ($$?) Ця людина також повинна мати можливість розуміти потреби програми та повідомляти ці потреби безпосередньо програмістам

  • 1? (HTML / UI) розробник? з навичками javascript (я ненавиджу інтерфейс користувача / код розмітки)

  • 1? База даних особи? Однак у більшості хороших програмістів немає проблем зі створенням масштабованих структур даних, однак, якщо ви збираєтеся вступити в проблеми оптимізації, ви хоч хочете мати консультанта


1
+1 Мені подобається, що ваша поломка дуже гарна! Повна ОТ, зарплата, яку ви цитуєте, для мене відчуває гнітюче, як я думав працювати в SoCal, але вони не набагато вищі, ніж у Західній Європі, якщо люди з Sr працюють як MSc + 5 років.
Фармор

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

Нічого собі, ви можете отримати старших дияволів у So Cal за 80-100K? Це здається досить низьким, враховуючи вартість життя. Можливо, у нас є різні ідеї «старших»; старші деви, яких я знаю в Далласі, отримують значно більше, ніж це.
кевін клайн

У нас, мабуть, є різні уявлення про те, який смак теж хороший .. Я найняв 2-х старших старших, які були молодими та талановитими з великим досвідом протягом останніх 10 років, які були готові працювати в межах цього діапазону. Ми використовували останню версію Microsoft Stack (TFS, .NET 4, C #, EF 4.1, MSSQL 2008 R2, бла-бла ...), і не мали проблем із виведенням хорошого чистого коду. Ми були невеликою командою, і проблема, яку ми виявили, намагаючись найняти деяких старших, полягала в тому, що вони були стійкі до навчання і мали занадто багато думок і несли занадто багато багажу (у нас не було багато вікна найму)
hanzolo

2

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

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

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

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


95% мого часу витрачаю на виконання одного з цих завдань. Мені подобається ідея підтримки ротацій. Це може щось розглянути, якщо ми наймемо когось, якого я можу обертати з lol. Сьогодні, наприклад, я фактично почав працювати над ядерним кодом, і його перервали через те, що комусь потрібен акумулятор.
kstevens715

@ kstevens715 - Це здається, що вам потрібна допомога, навіть якщо це чийсь дитина, який є технічним. Я припускаю, що вам платять щонайменше 5-ти цифрний дохід, якби мені сказали отримати акумулятор, це моєму працівникові коштуватиме близько 10 доларів (35% моєї погодинної заробітної плати).
Рамхаунд
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.