Чому ми не можемо нічого зробити?


9

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

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

Що я можу визначити як проблеми, це:

  • Специфікація завдань, що є у вас, є рідкою. Частково це пояснюється тим, що управління - це вузьке місце, і у нас немає грошей чи людей, щоб взяти на себе зобов’язання розробити детальні вимоги настільки, наскільки ми хотіли б. Це також частково тому, що програмне забезпечення, яке ми розробляємо, є слідчим і точний метод не зрозумілий, поки його не продемонструють та не використають для визначення його ефективності.
  • Ведучий Dev дуже любить те, що він називає «прототипуванням» до того, що останнім часом він наполягає на тому, що все є «прототипом», що для решти з нас виглядає як написання поганого коду та надання його моделерам, щоб грати. Не ясно, що він очікує, що у багатьох випадках вийде з цієї вправи. Тоді реальна реалізація страждає через його наполягання на тому, що добра практика вимагає занадто багато часу від складання прототипів. Мені навіть не вдалося розплутати цю скручену логіку, і я не впевнений, що хочу спробувати.
  • Очікується, що модельєри розкажуть нам все про бажану методологію докладно, і вона бере на себе абсолютну довіру, що те, з чим вони виходять, теоретично бездоганне. Це навряд чи вірно, але не вживаються заходи для виправлення цієї ситуації. Ніхто з боку моделювання не викликає жодних занепокоєнь структурованим способом, який, ймовірно, буде діяти, і не шукає рекомендацій щодо застосування кращих практик. Нічого не робиться і щодо їх пасивності.
  • Я раніше намагався підштовхнути TDD до команди, але мені було важко, оскільки це для мене нове, і хоча ті, хто наглядає за моєю роботою, готові були це терпіти, ентузіазму ніхто не викликав. Я не можу виправдати кількість часу, який я витрачаю на валяння та не доопрацьовуючи функції, тому від цієї ідеї поки що відмовилися. Я стурбований, що його знову не візьмуть, бо ніхто не любить, щоб йому говорили, як робити свою роботу.
  • Зараз у нас є сервер безперервної інтеграції, але він використовується в основному лише для запуску багатогодинних тестів регресії. Залишилося відкритим, що він також повинен працювати з блоком повного покриття та інтеграційними тестами, але наразі їх ніхто не пише.
  • Кожен раз, коли я піднімаю питання про якість провідного розробника, я отримую відповідь про те, що "Тестова функція A є простою, функція B набагато важливіша для користувача, але занадто складна для тестування, тому ми не повинні тестувати функцію A '. Ще раз я не зробив жодного пробігу, намагаючись розплутати цю логіку.

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


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

@Robert Harvey - Мені важко судити. Продукти надзвичайно ніші, і ми (розробники) отримуємо неоднозначні повідомлення. З одного боку, нові клієнти на проривних ринках виштовхують товар більше, ніж ми спочатку передбачали, і виявляємо помилки як наслідок, чого вони, мабуть, не проти, оскільки ми пояснюємо, чому і швидко їх виправляємо. З іншого боку, деякі великі інституційні замовники з недовірою ставляться і ми починаємо брати участь у неодноразових змінах моделі. Команда програмного забезпечення є однією з небагатьох, хто працює навіть в компанії на даний момент, тому ми виглядаємо добре на даний момент .
Том Ш

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

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

Відповіді:


19

Дозвольте на хвилинку зіграти захисника диявола:

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

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

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

Це не буде працювати в ітеративному магазині. Сама природа ітеративного розвитку полягає в тому, що вимоги часто неповні. Ітерації - це те, що потрібно для конкретизації вимог.

Я раніше намагався просунути TDD в команді, але мені було важко, оскільки це для мене нове

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

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

Це може бути доречним у невеликому, ітеративному магазині.

Кожен раз, коли я піднімаю питання про якість провідного розробника, я отримую відповідь про те, що «Тестова функція A є простою, функція B набагато важливіша для користувача, але занадто складна для тестування, тому ми не повинні тестувати функцію A '

Це здається, що ваш магазин має певні обмежені часові обмеження; подобається це чи ні, вас обмежують ці обмеження.

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


Я думаю, вам потрібно буде підходити до цього з точки зору "технічного боргу". Кожна компанія робить часові оцінки; якщо припустити, що ваші вже досить хороші, починайте створювати надлишки від 10% до 20% у своїх оцінках часу на рефакторинг та тренування, і зробіть це дотримуватися.
Роберт Харві

Продовжувати; Ітеративний розвиток - це назва гри, ви маєте це право. Проблема полягає в тому, що ітерація розглядається ще до того, як вона фактично закінчиться, оскільки ми отримуємо розпливчасті позиції від модельєрів щодо того, чи є те, що ми зашифрували, дійсно правильно. Ніхто не може ідентифікувати жодних помилок, так що ми зробили. Через півроку виявляється, що це неправильно. Мені б хотілося зазначити, що моделерам потрібно встановити більш жорсткі критерії, щоб перевірити, але знову ж таки, чи не так це їхня робота?
Том Ш

2
@Tom: Поки ви не наполягаєте на тестувальних технічних характеристиках модельєрів, вони завжди можуть сказати вашій команді, що вони помилилися. Якщо вони будуть притягувати вас до відповідальності за отримання результатів за їх моделлю, ви повинні притягнути їх до відповідальності за надання вам перевіряються специфікацій, щоб ви могли оголосити про успіх. Кожна специфікація повинна вбудовувати в неї якийсь тест "іди, не йди", щоб ви та замовник (або модельєри) могли взаємно погодитися, що тест пройшов, не піддаючись тлумаченню.
Роберт Харві

Абсолютно вірно. На жаль, ви, можливо, зобов’язуєте мене визнати те, чого я не хотів - що ми маємо недостатню компетенцію. Це видно загалом, але особливо це стосується модельєрів. Щодо деяких аспектів ми наполягаємо на твердих специфікаціях, то це все-таки закінчується неправильним. Вони вчені, і, говорячи з досвіду, вчені трактують код як експеримент - виправляйте помилки, коли йдете разом. Для бізнесу це просто недостатньо добре, і слід очікувати, що це буде визнано професіоналізмом.
Том Ш

Немає нічого поганого в трактуванні коду як експерименту; це частина ітеративного процесу. Але врешті-решт вам доведеться обійтись, щоб "цей код приймає ці дані і, як очікується, дасть цей вихід". Ось для чого призначені одиничні тести; вони є частиною специфікації. Я бачу, чому ви хочете робити TDD; це примушує специфікації до коду ... Але вам потрібна підтримка корпоративної культури для того, щоб це працювало, і TDD має про це "релігію". Не все перевіряється таким чином, тож зрештою, можливо, доведеться жити з певним ступенем дискомфорту.
Роберт Харві

2

Я збираюся зосередитися на прототипуванні тут

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

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

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


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

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

2
Фред Брукс сказав: "Напишіть, щоб викинути, все одно", це так само правда сьогодні, як і 40 років тому.
mattnz

1

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


1

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

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


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