Який найпродуктивніший спосіб вирішити проблеми, пов'язані з розвитком? [зачинено]


49

Ми всі були там:

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

Моє запитання: який найпродуктивніший спосіб програмісту впоратися з помилками, пов'язаними з розвитком, такими як ці?


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

Відповіді:


79

Ваш проект не вдався.

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

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

Ваша команда відхилила те, на що ви витратили дні кодування.

Збережіть свою роботу (на потім). Є дві можливості: (а) це відстійно, і факт того, що кілька людей реагували однаково, є свідченням цього (б) Це справді геніальна робота, але далеко попереду того, що люди звикли чи можуть зрозуміти. Люди взагалі не люблять те, чого вони не розуміють. Можливо, краще показати це, коли настане час АБО в іншому місці з іншою "Культурою"

Ніхто не слухає ваших ідей у ​​вашій компанії.

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

Шаблон дизайну, який ви запровадили із силою у вашій команді, створив безлад.

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


29

Вони не невдачі - це досвід

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

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

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


1
Всього два слова: підсилення навчання .
Вок

-1: Це і досвід, і невдача.
Томас Едінг

14
  • Будьте спокійні - не панікуйте, нічого кращого не зробить
  • Контроль пошкоджень - збережіть те, що ще можна зберегти
  • Навчіться на своїх помилках - повторення неправильної речі, ймовірно, не змусить її працювати
  • Подумайте про новий початок - почніть свою наступну спробу без рюкзака розчарувань і почуття вини
  • Подивіться на більші збої - у порівнянні з першим рейсом Ariane 5 , ваш збій незначний
  • Зверніться до психотерапевта, якщо ви не можете самостійно впоратися

11

Ви щось будуєте.

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

Це для мене все одно працює.


6

Ну, ви запитали :) Один за одним:

* Your project failed.

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

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

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

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

* What you have spent days coding was rejected by your team.

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

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

* Nobody listens to your ideas in your company.

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

Крім того, наскільки добре ви артикулюєте себе? Чи можете ви дружити і впливати на людей?

* The design pattern you introduced with force in your team created a mess.

Отже, чому слід уникати сили. Вміти говорити - не обов’язкова умова слухати. Інших коментарів немає.


5

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

ПОПЕРЕДЖЕННЯ . У багатьох пунктах нижче ви можете відчути, що я критикую вас, і що я хочу зробити вас відповідальними за помилки, а не враховувати зовнішні фактори. Я не. Просто ви не вказуєте багато деталей, і я просто надаю контрольні списки дій, які слід здійснити для того, щоб все не пішло. Я знаю, що я робив багато помилок (всі це роблять), і нам стає краще, лише якщо ми вчимося на них. І щоб вчитися у них, нам потрібно почати сприймати їх як помилки в першу чергу і приймати відповідальність за те, що пішло не так з нашого боку. Чорт, прийміть відповідальність за те, що пішло не так у чужих частинах, ви також можете навчитися цьому.

Ваш проект не вдався

Зараз ви не можете багато зробити, щоб пом'якшити це.

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

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

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

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

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

Що ви витратили на кодування днів, ваша команда відхилила

Я був у цій ситуації. Знову ж таки, не так багато ви можете зробити, щоб пом'якшити це, крім:

  • Зберігайте його в СКМ на потім.
  • Можливо, спробуйте поступово просунути невеликі шматочки в основні кодові бази замість величезного рефакторингу.

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

  • Чому це сталося? У чому причина відмови?
  • Більшість випадків, коли я бачу, що це відбувається (і це теж було для мене), це означає, що розробник пішов сольно або в режимі кодування корів-хлопчик і створив речі, про які ніколи не вимагали. Код, який не випливає з вимог бізнесу, може бути химерним та «кращим», але часто марно витрачати час та гроші. Плюс це буде коштувати ще дорожче, якщо ви інтегруєте його, оскільки він знову потребуватиме тестування. Подумайте, як люди, які займаються вашими грошима: ви повинні бути ефективними і на цьому рівні.
  • Чи задовольняла якість виготовленого програмного забезпечення? Чи відповідав він стандартам та умовам діяльності у вашій компанії?
  • Ви періодично (і часто!) Звітували перед цим прямим керівникам? Ви час від часу обмінювалися з іншими розробниками команди? Якщо ні, вони нічого про це не знають, зараз це буде величезна витрата на оцінку та перегляд. Зрештою, НЕ враховує той самий час. Це як завжди намагатися відкласти чищення своєї орендної квартири, а потім намагатися прибирати її лише тоді, коли ви переїжджаєте: це безладна робота, вона виснажлива, це складніше, ніж це було б, якщо це робиться регулярно, і це часто не буде зроблено правильно.
  • Ви виробляли тести? Одиниці тестів? Інтеграційні тести?
  • Ваш код регулярно перевірявся в СКМ? Це було в іншій галузі? Чи потрібна була інша гілка чи це можна було зробити в стовбурі? Відкладення коду вчинення, як правило, є поганим знаком. Очевидно, що іноді тебе спокушає це зробити, але ти просто стріляєш собі в ногу.

Ніхто не слухає ваших ідей у ​​вашій компанії

Ну, тут є два варіанти, і ми розглянемо обидва:

  • У тебе ідеї були погані.
  • Ви ідеї були гарні.

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

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

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

Припустимо, що ваші ідеї були хорошими:

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

Шаблон дизайну, який ви запровадили із силою у вашій команді, створив безлад

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

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

Чому вам довелося натискати? Чому був спротив? Можливо, це було виправдано.

Чи змогли ви надати приклади того, що саме ця модель допоможе суттєво покращити базу коду (наприклад, зіставивши її із прикладом Refactoring to Patterns ).


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


@Rachel: дякую за правки, що відповідають вашим зусиллям META-SO. Я відтоді не помітив, що питання було переформульоване з тих пір.
haylem

3

Крок 1: Добре сердитися!

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

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

Крок 2: Знайдіть трохи часу, щоб заспокоїтися.

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

Крок 3: Перегляньте те, що сталося на кроці 1

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

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

Справа в тому, щоб об’єктивно спробувати визначити, які були ваші бали. Вони мали сенс? Можливо, їм потрібне уточнення або подальша деталізація. Вони є безпідставними? Якби ви об'єктивно ставили себе в чужі черевики, ви зрозуміли б моменти, які ви зробили? Чи погоджуєтесь ви з цими пунктами? Ви можете використовувати цю можливість, щоб оцінити себе. Що ти зробив добре? Які речі можна було зробити краще?

Крок 4: Визначте курс дій

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

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

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

Якщо все інше не вдалося, спробуйте перезавантажити:

        try
        {
            // ...
        }
        catch (OhNoes111Exception)
        {
            // reboot fixes everything!
            System.Diagnostics.Process.Start("ShutDown", "/r");
        }
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.