Или разговор с самим собой.
Очень часто в последнее время при просмотре вакансий натыкаешься на требование знания методологии Agile.
А почему нет? Буржуи вон давно уже работают по этой методологии. А раз они так работают значит это круто и нам тоже стоит это попробовать!
Неопытный разработчик (читай "вчерашний студент") полезет в википедию смотреть, что же это такое этот самый Agile? И найдет там следующее:
Agile - серия подходов к разработке программного обеспечения, ориентированных на использование итеративной разработки, динамическое формирование требований и обеспечение их реализации в результате постоянного взаимодействия внутри самоорганизующихся рабочих групп, состоящих из специалистов различного профиля.
Ничего непонятно! Что там дальше пишут?
Agile-методы делают упор на непосредственное общение лицом к лицу... Основной метрикой agile-методов является рабочий продукт. Отдавая предпочтение непосредственному общению, agile-методы уменьшают объём письменной документации по сравнению с другими методами.
Вот это круто! Никакой бумажной волокиты! Только работа и общение! Это то, что надо!
И вот неопытный разработчик (читай "вчерашний студент") с горящими глазами приходит творить и созидать и что же он видит? В небольшой комнатке, где от силы можно было бы посадить три человка, работает десять. Однако не все десять человек одновременно находятся в этой комнате, бОльшая часть из них учавствует в бесконечных митингах по поводу изменения цвета и расположения какой-то, пока еще неведомой нашему неопытному разработчику (читай "вчерашнему студенту"), кнопки.
А где можно почитать, что эта кнопка делает и насколько она вообще важна?
Нигде! Документации нет.
Комментарии в коде?
Комментариев тоже нет.
Может спросить у кого?
Конечно! Можешь спросить вон у того бородатого чувака с лицом серийного убийцы в углу. Это наш самый главный разработчик. Он знает все по этому проекту.
Ну уж нет! Я тогда лучше посижу над кодом, посмотрю что там да как. Все-равно мне надо в нем разобраться.
И вот тут начинается самое интересное! Код написан так, что волосы начинают шевелиться в самых неожиданных местах. Костыли на костылях. Применение различных паттернов, технологий, фреймворков и прочего барахла где надо и не надо. Миллион вшитых жестко в код непонятных констант, строк с сообщениями и ошибками и даже SQL-запросами.
А это вообще работает?
Видимо как-то работает. Вон тот бородатый чувак с лицом серийного убийцы в углу как-то все это запускает и даже умудряется отлаживать.
Ну и я тогда смогу все это запустить! Я же не тупой!
Конечно сможешь! Пройдет какое-то время. Ты выяснишь путем проб и ошибок, выуживая ценную информацию по маленьким крупицам из корпоративной переписки, попытками поговорить вон с тем бородатым чуваком с лицом серийного убийцы в углу, а также по слухам какие зависимости необходимы для построения этого проекта. Конечно некоторые зависимости могут измениться в процессе твоего поиска, потому что ты не участвовал в том самом митинге, на котором решили, что необходимо избавиться от старого фреймворка и начать использовать новый. Но это все мелочи.
Со временем ты станешь разбираться во всем этом хитросплетении кода и интриг. Отрастишь бороду. Тебя назначат главным разработчиком взамен того бородатого чувака с лицом серийного убийцы, который куда-то делся. Говорят уволился со словами "Вертел я ваш этот Agile вместе с вашими митингами и очень важной кнопкой... (и дальше шел длинный набор слов, который в точности никто передать уже не может)".
И вот теперь ты главный разработчик, сидишь в углу, пытаешься сделать этот мир добрее и чище. Но клиент хочет, чтобы кнопка была зеленая и в центре экрана, хотя изначально планировалось создать консольное приложение, выводящее "Hello World!" на экран. Да еще и новый сотрудник появился. Говорят вчера закончил какой-то там университет. Опять будет тыкать свои паттерны, технологии и фреймворки куда надо и не надо. Да вертел я ваш этот Agile вместе с вашими митингами и очень важной кнопкой...