Lex Kravetski (lex_kravetski) wrote,
Lex Kravetski
lex_kravetski

Category:

Архитектура и прочее управление

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

Ну, наиболее простой ответ: она не нравится мне тем, что не работает. То есть, в стихах всё прекрасно: талантливые архитекторы пишут, даже нет, — рисуют архитектуру всей системы и спускают свой чудесный проект кодерам, которые слишком тупы, чтобы рисовать архитектуру, но зато мастерски умеют строить любой запрос на sql и сортировать список при помощи встроенной библиотеки — архитекторам, само собой, про такие детали ни думать, ни знать не надо. От такого подхода особо умные будут заниматься самым общим, а особо усидчивые — шлифовкой деталей. Разделение труда, все дела и так далее.

В реальности же обычно получается, что особо умные — это те самые многофункциональные программисты и есть. От которых как раз и предлагается отказаться, передав всю разработку бригаде креативщиков и таджиков. Как вы понимаете, от последних хотя бы есть польза — они подметать умеют и гвозди забивать. Креативщики же обладают строго одним навыком: убеждать окружающих в своей зашкаливающей для всех необходимости.

 

Как-то раз племя людоедов устроилось в какую-то фирму работать. Их взяли, но с условием сотрудников не есть. Если кого на этом запалят, то увольняют сразу всех. В общем, прошло три года и один людоед не удержался — сожрал уборщицу. Директор фирмы вызывает к себе вождя:

— Какого хрена? Мы же договорились! Твой человек, вот, сожрал уборщицу, теперь всё кругом в грязи и мусоре, сотрудники жалуются, полный бардак. В общем, вы все уволены.

Племя, понурив головы, выходит на улицу и вождь подзывает к себе того, особо отличившегося:

— Ты чего, совсем сдурел? Хорошая работа, комфорт, уют, бабла немеряно…

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

— Дебил! Ну зачем было сжирать уборщицу? Мы три года регулярно жрали креативщиков и маркетологов — никто даже и не заметил.

 

Итак, проблема модной и современной схемы состоит в том, что в ней предлагается исключить из процесса всех тех, кто в состоянии хоть что-то умное сделать. И это, собственно, — частный случай общего подхода. Весьма и весьма распространённого в современности. Согласно ему любое производство будет отлично работать, если на нём оставить дешёвых и неквалифицированных быдлорабочих и касту привегелированных управленцев, которые понятия не имеют, что конкретно на этом производстве производится, но зато отлично владеют «абстрактным управлением».

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

Абстрактный управленец, таким образом, получает набор рычажков, подведённых к чёрному ящику производства, и набор индикаторов, показывающих какие-то про это производство циферки. Якобы, не зная устройства чёрного ящика и физического смысла циферок при помощи прогрессивной чудо-теории мастер абстрактного управления сразу же зарулит всех в минуса.

И оно верно: обычно заруливает. Именно в минуса. Если предприятию везёт, то оно не успевает развалиться под его чутким руководством и вовремя перестраивается на режим работы с внутренним управлением и иллюзией внешнего абстрактного. В этом случае все производственные процессы протекают независимо от асбтрактного управленца, включая и само управление, он же занят преимущественно получением огромной зарплаты и подписью бумаг, содержимого которых он не понимает, поэтому ориентируется на выражение лица их приносителя. Ещё время от времени он выходит «в народ», прохаживается с достоинством по коридорам и делает умное лицо. Или же ходит по кабинетам и раздаёт ценные руководящие указания «а ну всем работать!!!» и «почему ничего не сделано?!!».

Тут теория совершенно права: и правда, для раздачи подобных указаний совершенно необязательно знать, чем тут вообще занимаются.

В худшем же случае абстрактный управленец эффектно разваливает предприятие. Поскольку он в его работе мало чего понимает, но вмешиваться всё-таки хочет, его ценные указания даже маломальски знающим людям кажутся идиотизмом. Наиболее радеющие за дело и, — по совместительству, — талантливые, начинают на руководителя смотреть весьма косо и, чуть позднее, намекать ему, что он — идиот. Признать свой идиотизм — это ведь репутацию под удар поставить. Нельзя. В результате абстрактный управленец начинает настаивать на выполнении своих идиотских требований. Если ему в этом потакают, то производство встаёт. Если нет — увольняются наиболее борзые, которые, — по совместительству, — ещё и наиболее радеющие за дело / талантливые, и остаются одни только таджики на сухом пайке. То есть, схема трансформируются в модную современную.

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

Иными словами, единственный способ спастись — это перевести предприятие в режим независимости от абстрактного управленца. Но тогда возникает вопрос: к чему он? Ну умеет он орать «работайте, сцуки!!!» и что? Нет, оно понятно, можно начертить абстрактные графики работ и проверять на соответствие им. Типа, задание — выполнение задания. Справился — награждён, нет — оштрафован. (Это, к слову, и есть основа абстрактного управления). Только вот откуда эти графики возьмутся? Толковые сотрудники их разработают? Тогда зачем управленец? Сам управленец сделает? Так он не в курсе, что сколько «весит». Для конвейера в чистом виде сойдёт, но для более сложного процесса — уже нет. Конвейер хоть чисто статистически можно распланировать. А как быть с разработкой самолёта?

Да никак. Управленец выставляет сроки из общих соображений. Настолько общих, что генератор случайных чисел без проблем будет с ним успешно конкурировать. Эти сроки либо нереально завышены, либо наоборот. При этом толковые сотрудники в любом случае сумеют напипать управленца — разъяснив ему непонятными словами, что тыр-быр-мыр без у-лю-лю раньше чем через месяц не получится. А тупые графику соответствовать всё равно не будут. То есть, обратно, единственный выход — планировать всё самим. И удивляться: а с хрена тот, кто ничего не делает, так много получает, да ещё и постоянно приходит поорать?

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

Считаю, в будущей конституции такое должно быть прописано прямым текстом.

В ином же случае, он не руководитель, а как максимум надсмотрщик. И это ещё в лучшем случае, в худшем — мошенник.

Теперь про архитекторов. Тут, надо отметить, всё ровно как с руководителями: смысл от их работы, от их архитектуры есть только тогда, когда они сами же и программисты тоже. Абстрактный архитектор — это как теоретик от математики, не способный производить вычисления. Как лингвист-англовед, не способный связать на английском двух слов и не понимающий его даже в печатном виде.

Как министр обороны, не служивший в армии.

Толку от деятельности такого архитектора — ноль. Только видимость. Ситуация такова, что архитектуру заранее можно набросать только в самом общем виде. Детальная проработка архитектуры невозможна без написания непосредственно кода — не всего сразу, а, скажем так, демо-версии технологий. Не обязательно воплощать каждый объект программы, но для залатывания дыр архитектуры проекта необходимо написать примеры каждой логической сущности. Вот при написании сразу станет понятно, где что-то недодумано, где можно было бы удобнее, а где вообще не пойми что. Иначе бывает только в книжках, написанных идиотами, прочащими себя в абстрактные архитекторы или просто надеющимися срубить на этом деле бабла.

Многие тут скажут: а что, архитектор, значит, не нужен? Ты уверен? А я отвечу: не нужен абстрактный архитектор. Нужны программисты-лидеры. Которые разрабатывают архитектуру и (в обязательном порядке) пишут наиболее общие библиотеки. И (в обязательном порядке) учат остальных ими пользоваться. И (в обязательном порядке) превосходящие остальных по своим именно (в обязательном порядке) программистским навыкам.

В голову никому не приходит сказать, что самолёт может быть собран коллективом из теоретика-авиатора, в жизни не видевшего даже чертежей самолётов, и бригады рабочих с напильниками, умеющих только наяривать напильником. Нет, все понимают, что самолёт так не сделать. Нужна цепочка, начинающаяся от физиков-теоретиков, проходящая через физиков-прикладников, конструкторов, инженеров, бригадиров и только в конце замыкающаяся на рабочих с напильником. Нельзя просто выкинуть все промежуточные звенья. И даже двух крайних мыслить узкими специалистами нельзя. Рабочий ещё может заниматься вытачиванием одних только гаек, но в физике-теоретике, не умеющем решать задачи и не бывавшем на испытаниях, уже толку мало. Держится же весь процесс как раз на средних звеньях — они-то без двух крайних худо-бедно справятся, а вот крайние без них — фигу.

Хотя рабочий, повторюсь, всё-таки руками работать умеет. Так что без остальных, ну не самолёт, хоть мебель в случае чего себе замострячит.

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

Я больше скажу: прошедший весь путь с низов до верху программист, буде ему стать абстрактным архитектором, через некоторое время теряет все свои полезные навыки. Хотя, зачастую, и сохраняет способность красиво объяснить свою запредельную полезность. В программировании, как мало где, новый век наступает раз в три года. И все навыки, — прямо как у спортсменов, — замыкаются на постоянную практику. Пару лет поархитектурил абстрактно — и вот, ты уже рассуждаешь о прошлом веке, причём, рассуждаешь, как склеротик, припоминающий, что в молодости его вроде собирались сделать членом суда… хотя, быть может, членом туда? Поди вспомни.

И управление и проектирование — это очень полезные вещи. Которые надо изучать и которые надо развивать в плане научных их теорий. Однако ни то, ни другое не должно становиться абстрактным. И управленец, и, особенно, архитектор должны держать руку на пульсе не отрываясь. Их ценность не в громком голосе, не в способности нарисовать прямугольнички и чёрточки, озаглавив всё это каким-нибудь красивым термином. Их ценность в том, что они такие же как все, только умеют лучше, поэтому могут организовать остальных (или структурировать программу) более эффективно. Они могут помочь остальным, показать, как надо, научить. Сделать то, что другие не могут сделать, поскольку не умеют. Вот за это их освобождают от рутинной работы — для эффективности.

Реальность же всё чаще показывает нам, что они сами себя освобождают от работы вообще, поскольку банально не в состоянии её делать. Куда круче просто приходить и говорить «Так, ну-ка сделайте всё быстро! Как? А вот сами разберитесь, как!».

Архитектор рисует свой проект. Отдаёт его программистам. Если те — кодеры, они вообще не понимают, про что тут. Если те — специалисты, то им и без архитектора архитектура понятна. Они и так знают, что вот тут должна быть фабрика, а вот тут — подписка. Им архитектор ничего нового не сказал. Поэтому они смотрят его проект, берут оттуда пару красивых названий и сам проект выкидывают — а чего с ним ещё делать? Ну, если спроектировал всё какой-то долбаный инопланетянин.

 И зачем тогда нужен этот архитектор? Да ни зачем. Он не нужен ни тем, ни этим. И оно правильно: абстракции нужны для обобщения и упрощения рассуждений, а не для воплощения в чистом виде. Не надо создавать экземпляры абстракций.

Tags: контрманипуляция сознанием, программирование, философия
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 235 comments
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →