Как стать автором
Обновить

Agile в небольших командах — как красиво сломать себе шею

Время на прочтение 6 мин
Количество просмотров 30K
Всего голосов 43: ↑26 и ↓17 +9
Комментарии 120

Комментарии 120

НЛО прилетело и опубликовало эту надпись здесь

И чем именно верны эти сумбурные выводы? Лично я наблюдал массу эпичных факапов у любителей квадратно-гнездовых водопадов и "человеческих жертвоприношений".

НЛО прилетело и опубликовало эту надпись здесь

Да эти выводы действительно верны. Простите, был слегка сбит с толку остальной статьей.

Мне кажется у автора мысль движется в ту сторону, что и у всяких беков и фаулеров, когда говорят про agile maturity или engineering fluency, только он говорит в самобытно-эмоциональном стиле, что забавно в сочетании с понятиями "эмоциональный бред" и "эмоциональные листочки на стенках", которые он сам и применяет :)

Тут только один есть вопрос — каждый себя считает правильным. А уже программисты и подавно.
И все вроде правильные — а проект (проекты) падают, как в водопад…
НЛО прилетело и опубликовало эту надпись здесь
… и самое печальное, что такой «золотой мальчик», продолжит свой путь в качестве «опытного руководителя», так как уже имеет руководящий опыт.
НЛО прилетело и опубликовало эту надпись здесь

Эта особенность системы может быть уничтожена только сверху, но там часто слишком много поднявшихся таким образом, и они не дают, возможно не от злого умысла.
Всегда в таких случаях вспоминаю фразу сказанную мне много лет назад: "Так было и в Союзе, директора разорившегося завод ставили управлять другим, не в рабочие же ему идти"

Да. Это частая история — мы такие классные, но пришел кто-то и все развалил…
Это фейл руководителя — значит создавали не те системы или не так доносили ценность до ТОПа.
«Умеющий создавать и руководить» определяется по результатам.
НЛО прилетело и опубликовало эту надпись здесь
Ну что-ж — хороший предмет для гордости.
Непонятно только Ваши обиды (уж простите — а «человек сам ничего не может, но лезет руководить, будут фейлы, какую бы методику не выбрали.» ничего как на обиду не похоже) на тех, кто дал шанс Вам и вашей команде создать продукт в компании и развиваться дальше вне её.
Тем более если такой результат отличный.
Ну а про картину мира — хороший аккорд знатока и психолога :)
НЛО прилетело и опубликовало эту надпись здесь
Про «сказки для бедных» понравилось. Лучше всего на это ответил Джек Ма:
«Самое трудное, это помочь бедным людям.
— Дайте им что-то бесплатно, они подумают, что это ловушка.
— Предложи им идею с минимальным вложением, они скажут что прибыль — маленькая.
— Скажи им инвестировать в большой бизнес, они ответят, что нет денег.
— Скажи им попробовать новые идеи, они скажут, что нет опыта.
— Скажи им заняться традиционным бизнесом, они ответят, что это сложно.
— Расскажи им про новую бизнес-модель, они скажут, что это MLM.
— Посоветуй им открыть магазин, они скажут, что нет никакой свободы.
— Скажи им заняться бизнесом, они ответят, что нет знаний.
Но у них есть что-то общее:
Они любят спрашивать у гугл, слушать друзей, которые являются такими же безнадежными.»
Дискуссию заканчиваю за исчерпанием темы, спасибо за общение.
Хорошо как сказано и глубоко, скопировал себе, буду перечитывать :-)
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Мне кажется это не просто ирония, а самоирония. А последний пункт в выводах как раз про компанию «1С-Битрикс».
Рассчитайте высоту, найдите парашют и готовьтесь покинуть это бесовское место раньше начала фейерверка

Опять битрикс толкает речь про красоту программного кода. Сколько ещё это терпеть?

А что делать? Нравится красивый код, снится и сводит с ума.

Поэтому на старый некрасивый код можно и забить.

Да его рефакторят на D7 с OOP, просто его много очень.
Этому отрефакторенному D7 коду уже тоже рефакторинг давно нужен )

Я видел D7.


Если взять статические методы классов и запихнуть их в статические методы классов, но с неймспейсами — это не совсем рефакторинг )

Не, ну там не все уныло так :-) Появились объекты, настоящие, с конструкторами! Используются исключения, константы, все по взрослому. Постепенно стандартные компоненты переведут на объектную модель тоже.
Постепенно стандартные компоненты переведут

Вот про это я слышу с 7 версии что-ли.
Пока что вижу, что пилятся новые фичи, а старые не трогают, их же не продашь новым клиентам.


Появились объекты, настоящие, с конструкторами!

А иногда 2 или 3 объекта! И документации нет, какой использоваться непонятно по причине отсутствия документации и меток deprecated. А иногда ещё бывает так, что половина модуля переписана, а вторую половину методов нужно использовать из старых.

по поводу @deprecated пометил, спасибо, согласен, это важно
Но вообще если метод публичный, общее правило — можно использовать. Если он исчезнет внезапно — пишите либо в саппорт либо мне в личку, будем разбираться

Да мне особо не надо, я не ваш клиент, просто недавно понадобилось написать модуль интеграционный для битрикса, так выяснилось, что по D7 документации кот наплакал, что часть логики в шаблонах до сих пор и что максимум что можно сделать обработчиком СД — это вернуть свою цену.


В итоге я сидел и читал сорцы один за другим, чтобы отловить ваши "события", которые не настоящие события при этом.

Коллекции в магазине тоже — пример здоровой инкапсуляции имхо.
Перестал читать на «Но чтобы писать на «настоящих» промышленных ЯП, таких как C++, Java или C#»
Зря, дальше интереснее :-)

Но с простотой Вы перегнули, имхо.
В Erlang и ассемблере классов нет, и они что простыми сразу стали?
Оттого что в языке нет встроенной статической типизации — он не становится сильно проще.

Да, вы правы, конечно. Перегнул немного для атмосферности.

Самокритично =)

Пришел умный дядя, и рассказал как правильно код писать, и что мне Agile не нужен.
Спасибо.
Я выбираю Agile.
Извини, но ты не понял смысл статьи :-)
Да, кадры решают. :)
«До сих пор не знаете самый любимый фильм у программистов? „Вот же он“ (ссылка на фильм) — обязательно устраивайте еженедельный просмотр, кино отлично мотивирует, особенно перед встречами с клиентом!» — С коллегами посмеялись!))
Ну классный же фильм, у парня собачку прибили, а у разработчика клиент неадекватный и баги в коде и — и вперед :-)
НЛО прилетело и опубликовало эту надпись здесь

Да, "сумбурная" пунктуация местами весьма напрягает.

Кто эта девушка — первый product owner — которую довели до нервного тика? Где можно про это прочитать? Просветите, пожалуйста.

Marie Dearment
https://en.wikipedia.org/wiki/Chrysler_Comprehensive_Compensation_System#endnote_customerRepBurnout
http://www.coldewey.com/publikationen/conferences/oopsla2001/agileWorkshop/hendrickson.html

Спасибо!

Тяжело читать текст, где после каждого нового предложения заново приходится решать, автор это серьезно или он так "пошутил". Потому, что некоторые тезисы выглядят, вроде как, серьезно, а остальные вызывают фейспалм. Что это было вообще и зачем?

все серьезно :-)
Закон дырявой абстракции — http://russian.joelonsoftware.com/Articles/LeakyAbstractions.html
https://ru.m.wikipedia.org/wiki/Уровень_абстракции_(программирование)
Ну смотри, ООП пытается защитить нас, снижая сложность — это инструмент снижения сложности ПО. Но если его применить неправильно, станет сложнее :-)

Как всегда о засилье дураков. Старо как мир. Но справедливости ради, разве не недоучки — люди с незаконченным высшим, придумали т.н. паттерны ооп? От которых число дураков выросло даже експоненциально в нашей отрасли. И еще, как можно ставить в пример java, когда, пожалуй, ни одно упрощение яп до уровня недоучек не привело столь много дилетантов в ит? :)

Ну в java попытались как-то стабилизировать адскую свободу в C++ — не согласен, что не получилось. А вот в всяких python что понатворили…

Думаю у Питона достаточно строгий дизайн или что вы имеете ввиду вообще?

Думаю он излишне аскетичен на гране примитивизма. Где нормальная инкапсуляция с человеческими protected/private? Нет ее и наверно не будет

Так это не "понятнворили" а "недонатворили". Это раз. Во-вторых, там есть инкапусуляция, в-третьих, это динамический язык со своими динамическими традициями (сравнивать с JS, ruby, lisp)

Соглашусь
Вот яркий пример использования языка не по назначению: http://www.opennet.ru/opennews/art.shtml?num=45984

Понятно, тут можно спорить. Но по моему мнению — Scala должна занять эту нишу.

Ее принципиально нельзя использовать не по назначению :)?

:-)
Но справедливости ради, разве не недоучки — люди с незаконченным высшим, придумали т.н. паттерны ооп?

Patterns originated as an architectural concept by Christopher Alexander (1977/79). In 1987, Kent Beck and Ward Cunningham began experimenting with the idea of applying patterns to programming – specifically pattern languages – and presented their results at the OOPSLA conference that year.[6][7] In the following years, Beck, Cunningham and others followed up on this work.


Beck attended the University of Oregon between 1979 and 1987, receiving B.S. and M.S. degrees in computer and information science.[3]


Cunningham was born in Michigan City, Indiana.[6] He received his Bachelor's degree in interdisciplinary engineering (electrical engineering and computer science) and his master's degree in computer science from Purdue University, graduating in 1978.[7]


От которых число дураков выросло даже експоненциально в нашей отрасли.

Мне кажется, не дураки от паттернов, а просто дураки применяют паттерны по-дурацки :)

НЛО прилетело и опубликовало эту надпись здесь
Первые начитываются книжек по паттернам и начинают пихать их куда ни попадя

Я думаю, люди, не испытывающие потребности называть других именно дураками, сказали бы, что это нормальный этап обучение чему бы то ни было — попробовать его в разных условиях.

НЛО прилетело и опубликовало эту надпись здесь
Туда же дрочерство на ООП и фреймворки.
Только я сомневаюсь, что болезнь лечится :) Больные считают себя здоровыми.
Ну если не увлекаться, ООП же помогает. Не?
НЛО прилетело и опубликовало эту надпись здесь
Запомните, что самое важное в программном проекте, который пишут настоящие программисты — это красота и стройность программного кода! Именно он привлекает к себе людей, мотивирует их вкладывать на свое развитие время и энергию.

Самое главное в программном проекте это его функциональность, удобство использования для конечного потребителя. Но никак не стройность программного кода. Больше скажу всем, кроме программистов, наплевать как он там построен внутри, на чем написал, протестирован ли. Если же он непонятный, или неудобный в использовании, или просто несет никому ненужный функционал, как бы красиво он написан не был, он отправится в мусорную корзину, и никто ничего в него вкладывать не будет.
:-) шутите. Ориентироваться на потребительского дебила — не интересно, поверьте. Если бы так писали серьезные продукты, типа mysql или linux — до чего бы докатились, страшно подумать
НЛО прилетело и опубликовало эту надпись здесь
Почему, facebook интересный продукт, дал много опенсорсу, там нормальный код внутри, уверен! Винда — тоже классный продукт, разве нет?
НЛО прилетело и опубликовало эту надпись здесь
Суть в том, что говнокод ооочень сложно и дорого развивать. И если продукт развивается и довольно долго — там сильная техническая команда и разумный код.
НЛО прилетело и опубликовало эту надпись здесь
Не, ну совершенный код — это крайность. Код должен быть разумным.
Именно он привлекает к себе людей, мотивирует их вкладывать на свое развитие время и энергию.

Обратите внимание на этот кусок. И имеются в виду программисты. Плохо себе представляю программиста которого может мотивировать на развитие говнокод.
Согласен абсолютно! Тот, кто останется копаться в д… ме — скорее всего имеет проблемы с самооценкой и что они напишут дальше…
По мне так в битриксе лютый говнокод, но это не мешает быть ему успешным продуктом, и привлекать кучу программистов. И успешный проектов на нем реализована куча.
Не согласен. В Битриксе стройная довольно лаконичная архитектура и разумный, читаемый код. Есть малюсенькие фрейворки, в которых логика более отточена — но просто они… маленькие.
Обратил, работать над продуктом который пользуется популярностью намного приятнее чем над «мертвым» продуктом. Это мотивирует, когда ты реализовал какую то фичу и люди начинают этим пользоваться. А если ты написал мега красивый по коду модуль и никто этим не пользуется, нафиг оно надо?
Насчет говнокода, мне например нравиться рефакторить старые проекты, делать код читабельные, удобнее в использовании. Но это имеет смывсл только тогда когда продукт пользуется спросом.
А как можно рефакторить говнокод без 100 тестировников и юнит-тестов? Согласен, что если продукт популярный — с ним интереснее работать, конечно.
кто вам мешает писать тесты на свой код?
Тесты не дают писать менеджеры проектов, т.к. сроки постоянно горят :-)
Я просто оставлю это здесь
Developers do not need to ask for permission for doing tdd or programming in pairs. Professionalism never requires consent. @lemiorhan

Asking permission to do TDD is like asking permission to use a keyboard. @JamesSaliba

Ну вы меня поняли…
И много вы видели проектов с хорошим покрытием юнит-тестами? Не проще ли модульно программировать с качественной инкапсуляцией и писать интеграционные и смок-тесты? :-)
НЛО прилетело и опубликовало эту надпись здесь
Согласен, TDD слишком дорого и не дает гарантии. Гораздо спокойнее писать модульно, с инкапсуляцией, с головой, аккуратно и иметь набор функциональных тестов.
если код будет неясным и некрасивым, то рано или поздно он превратится в кучу мусора, поддерживать его станет невозможно, как и добавлять новые функции — в итоге этот «многофункциональный код» будет на свалке
Это технические детали на которые конечному потребителю плевать. Им плевать сложно вам добавлять функционал или нет, тратите вы на это 10 минут или 10 дней. Им важен результат. Вот вы пользуетесь Windows, Linux, mysql, mssql и т.д., и вы лазили у них в исходный код и это для вас стало решающим использовать их или нет? Сомневаюсь.
конечному потребителю может и наплевать, а вот конкурентам, которые могут быстрее и проще добавлять новый качественный функционал — нет;)
Сколько фейсбуков появилось одновременно с текущим и сколько появилось после? Самое важное тут не качество кода, а время. Кто первый, то и съест основную часть пирога. А когда ты на коне можно озадачиться рефакторингом с целью уменьшения времени на внедрении нового функционала.
Я понимаю вас. Мы говорим, думаю, об одном — писать разумно, без фанатизма и чтобы можно было взлететь и потом расширять. Так могут писать только профессионалы.
Я просто говорю что красивый код никак не влияет но то взлетит проект или нет.
Он повышает шансы устойчивости к нагрузке и быстрой адаптации к требованиям клиентов, которые нужно будет, часто, быстро удовлетворить как раз во время запуска за короткое время.
Ну уж на нагрузку он никак не влияет, даже наоборот. Даже наоборот в красивом коде больше абстракций, которые создают дополнительную нагрузки при исполнении кода. Ну а клиентов на начальном периоде у вас вряд ли будет много. Если только вы не уже не супер известная компания, но это совсем другой случай :)
Абстракции позволяют провести быстрый аудит производительности и пофиксить тормоза в нужных точках, а не бегать по копипасченному спагетти, вырывая с кровью куски и ломая все остальное :-)
я все понимаю, но опять же, если у вас эта нагрузка есть. Я работал в проекте в основе которого лежала оч неплохая идея, достаточно интересная, подобного в России не было. Но за время работы сменилось 3 тимлида, и каждый говорил что написано все очень плохо. В итоге мы переписывали 3 раза с нуля, ушло много времени и денег. За это время появилось оч много проектов с таким же функционалом, и наш затерялся в этой куче, 5-10к посетителей, половина с рекламы. Код в итоге получился более-менее, но кому он теперь нужен. Проект в который вбухали миллионы, теперь на свалке, не отбив даже половины.
Услышал, согласен
Ни один хороший тимлид не даст переписывать все с нуля — это никогда не работает. Так что скорее всего да, было написано все очень плохо.
Им плевать сложно вам добавлять функционал или нет, тратите вы на это 10 минут или 10 дней.

То есть им в любой точке времени T плевать, есть функционал или нет?

Возьмем для примера что то типа фейсбука, У него допустим нет возможности выкладывать видео, а на сайте бабушкины-тапочки.ком есть. Но никто не будет уходить с фейсбука и-за этого, все будут ждать функционал. Потому что на фейсбуке у тебя 500 друзей, а на тапочках ни одного, с кем тебе там делиться видео, если там никого нет?

Зачит ли это что им плевать, есть функционал или нет?

Потребителю плевать, а менеджеру проекта не должно быть побоку это.
Многие проекты начинаются командой из 1-4 человек, а менеджеры появляются когда проект уже чего то добился. Конечно крупные компании не будут писать говнокод, и будут у них менеджеры, аналитики и т.д. но это не спасает от того что проект полностью провалится, взять хотя бы гугл+, есть у меня подозрения что написан он добротно, но кому теперь это надо?
Согласен в принципе. Но мне попадались проекты в крупных компаниях, которые внутри выглядели ужасно просто — парадокс :-)
Архитектура вообще дело сложное. Особенно когда проект начинается без видения каким он в итоге должен стать, тут ничего не поможет. Перерабатывая потом его, намного легче создать более удобную архитектуру, потому что вы уже знаете каким он должен быть и какие задачи решать. Но опять же не факт что это у вас получится.
Согласитесь, опытный разработчик обладает предчувствием развития архитектуры и требований — он правильно пишет классы, называет методы, создает разумные таблицы. Неопытный такое закостенелое чудовище может создать, что его полгода распутывать придется.
На то он и опытный, потому что он уже писал такой закостенелый код и спотыкался на этом и теперь знает как сделать лучше сразу :)
НЛО прилетело и опубликовало эту надпись здесь
В статье натужно нашучено и плотно насыпано ссылками.
Можно было сказать проще.
Индустрия программирование еще не достигла уровня индустриальной промышленности.
А болтается где-то на уровне мануфактуры/кустарного производства.
:-)
Прекрасно :-)
НЛО прилетело и опубликовало эту надпись здесь
Меня всегда приятно удивляет, когда хороший профи -айтишник еще и отлично излагает. Отличный стиль! С выводами хотел бы поспорить… но не могу — оглядываюсь и да, все так.
Спасибо! Ну тут да, личные выводы. Я просто хочу проблему обострить и в комментах найти ответы на вопросы :-)
Спасибо! Ну тут да, личные выводы. Я просто хочу проблему обострить и в комментах найти ответы на вопросы :-)

Уж очень похоже на какое-то очень эмоциональное раздутое ИМХО, не имеющее никого подкрепления, кроме личного опыта, видимо, часто неудачного. Какие-то крайности: важен только совершенный код, важны только люди, а вот остальное нет. Все важно, и люди, и качество кода, и процессы и еще куча всего. К сожалению, не увидел у автора понимания, что такое тот же Agile

Agile — это вода и понты. Опыт и еще раз опыт :-)
и не увидите. воду в текст — на хабр лей. сожрут.
Битрикс в своё время выходил с проектом Битрикс24, на который ставились готовые таскмэнеджеры, аджайлборды, и выглядело это всё убого. Вместо структурирования процесса и задач, создавался стог хаоса с соломинками-задачами, чек-листами и т.д. Но, Битрикс продал этот продукт многим своим партнёрам (франчайзи). Я тогда работал в компании, которая переходила на Битрикс, и ребята из Битрикса настойчиво продвигали идеологию методологий.

Когда же фирмы купили эти решения и, как мы поняли, нифига не взлетело, Битрикс открестился от этой идеи, сказав, о чудо, правду: если ваши программеры и менеджеры — нубы, получающие от 15 до 40 т.р. в месяц, они засрут любую методологию. Наймите квалифицированный персонал. А если нет денег, смиритесь с постоянными поражениями команды.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий