Програмування проти планування [закрито]


15

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

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

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


Якщо ваша посада розробника, чому ви плануєте планувати? Можливо, підрахунок, але не план
superM

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

1
Це справді цікаве питання. Я не думаю, що вам потрібно робити багато технічних характеристик, щоб бути хорошим старшим розробником - в Agile розробці багато особливостей нової системи чи проекту з'являються. Дивіться мою відповідь для отримання додаткової інформації.
Робін Уінслоу

1
Як йде ця одна цитата? "Дні кодування можуть заощадити години на планування" або щось подібне.
Дрейк Кларріс

Відповіді:


17

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

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

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

Прочитайте Agile Manifesto і загляньте в Scrum . Використовуйте метод ітеративної розробки та динамічних систем для керівництва проектом.

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

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


4
"Детальні довгострокові плани проекту є горезвісними, оскільки зазвичай бувають дико неточними". Ding Ding DING +1
Райан Kinal

11

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


1
Я не проти планувати роботу, якою займаюсь зараз / в найближчі 2 тижні. Тобто, якщо те, що я збираюсь писати, передбачає кілька творів, я не проти планувати це на високому рівні, а потім робити це (адже - саме це я і зробив). Мені не вдається намагатися придумати місячні з побаченнями в майбутньому - тоді намагаюся розібратися, чому ми не збираємось його вдарити. Саме там мої особисті розчарування починають досягати свого максимуму.
MattW

Я намагаюся не допустити, щоб це мене засмутило особисто. Я намагаюся зафіксувати такі речі на менеджерах проектів;).
Blaise Swanwick

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

9

Чи можна бути хорошим програмістом і не планувачем високого рівня?

На деякий час, так. Чи можна це робити довго? Ні.

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


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

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

Отримав! Дякую за уточнення, що, безумовно, має сенс.
Етел Еванс

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

6

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

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

Якщо ти задоволений таким станом речей, тобі більше влади. Більшість людей стають менш задоволеними тим, чим більше досвіду вони отримують.

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


"Брудна маленька таємниця - ніхто не дуже хороший у довгостроковому плануванні та оцінці". Хіба це не правда! +1 просто для цього. Навіть з хорошою історією є чимало номерів, які потрібно вирвати з ясного синього неба, оскільки наступний проект ніколи не є точною копією будь-якого попереднього проекту. Якби це було, ми змогли б повторно використовувати весь код як є, і зробити це з ним якнайшвидше. Завжди є щось нове, і минуле виконання не завжди є хорошим показником того, наскільки зусилля необхідні для цього нового.
Девід Хаммен

Гаразд - тому, можливо, розчарування (і навіть его ) - це більше того, що мені потрібно управляти. Якщо я не можу надто сильно побити себе і просто з часом поправитись (замість того, щоб сказати «мені не подобається робити це») - я з часом стану кращим. Мені може бути важко, коли я роблю це погано - але, мабуть, (виходячи з відповідей тут), я краще навчився робити це добре, якщо хочу залишитися працевлаштованим інженером програмного забезпечення. Я дуже ціную всі думки. Я дійсно не маю нікого в моїй компанії, щоб дізнатись цього - тому чути це від усіх тут - це величезна допомога!
MattW

3

Чи можна бути хорошим програмістом і не планувачем високого рівня?

Короткий відповідь: Так, це можливо.

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

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


1

Так і Ні - це ваші відповіді.

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

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

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


1

Планування та Bungie-Boss

У Ділберта багато смужок про бонді-боса. Наші виклики та очікування щодо планування можуть бути як причиною, так і наслідком лідерства. Мій досвід компанії «Фортун-100» полягав у тому, що за один рік усі, хто розпочав рік як керівник проекту, вийшли. Можливо, це було пов’язано з проблемою планування. Не впевнений, чи залишився ваш колишній керівник з цієї причини, але коли ваша роль вимагає, щоб ви склали план із зобов’язанням, якщо це не збувається, часто, результат, пов'язаний із терміном, є результатом.

Організаційний контекст планування

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

Планування - важливий інструмент. Не нехтуйте цим. Не розумійте цього неправильно.

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

Простий приклад планування - не повинно йти про програмне забезпечення ...

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

Стати кращим планувальником

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

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

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

SLIM - метод, винайдений Путнамом після роботи в GE та інших компаніях над проектами DoD в 1970-х. SLIM є впливовим, і його компанія QSM пропонує сертифікацію, яка, здається, витікає з інструменту, який вони роблять. Залежно від того, прийняла ваша компанія їх інструмент, він може мати ні значення, ні високу цінність.

Стів МакКоннелл (автор Code Complete) також написав книгу про оцінку програмного забезпечення, а його компанія Construx викладає два класи для кредитів PDU , які акредитовані через Інститут управління проектами. У мене є його книга, і якби я хотів дізнатися про цю тему через заняття в класі, я, мабуть, обрав би Construx. Вони також проводять навчання Scrum та проводять різні оцінки Scrum, акредитовані через Scrum.org.

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

Я також знайшов розділ з підручника, опублікованого O'Reilly, який коротко обговорює основні методи оцінки програмного забезпечення, включаючи Watts Humphreys PROBE та гру планування Кента Бека. PROBE включає поняття, що інженери відстежують показники на власній продуктивності, а потім застосовують їх до своєї присвоєної частини нових проектів. Планування гри дуже сильно співпрацює між розробниками та іншими зацікавленими сторонами.

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