SLogin

slogin.info

Login Form

Технический долг в форме аллегории

Не так давно, на ресурсе Tproger появилось повествование в форме аллегории о недостатках управления разработкой ПО в организациях: ссылка. Несмотря на комедийное содержание, все равно из данного опуса веело отчаянием, которое, видимо, испытывал (и не раз) разработчик на собственно опыте, как-будто крик души))). 

 

Часть 0

В пустой комнате стоят Разработчик (Р) и Менеджер (М).

М: Я собрал нас тут, чтобы рассказать пренеприятнейшее известие: система КРОТОПОН, которая работает на продакшене, заглючила, и мы потеряли кучу денег. Кроме того, нет никого, кто знает, как она работает. Поэтому (с придыханием) наш СЕО дал мне священную миссию — написать новую систему. Как ты думаешь, за два месяца справишься?

Р: А что делать-то нужно?

М: Да там немного, всего лишь пару десятков систем связать и рюшечки навесить.

Р: Эй, да это же на год работы! И вообще требования будут?

М: (В телефон) Да, конечно, за полгода справимся. (Разработчику) Ну ты тут пока начинай, а я тебе требования потом донесу.

Менеджер уходит.

Р: Но тут же…

Разработчик тяжело вздыхает, затаскивает в комнату инструменты и начинает что-то сооружать.

Часть 1

Через 2 месяца. В комнате сидит Разработчик и что-то строгает. Забегает радостный Менеджер и протягивает Разработчику большую папку.

М: Знаешь, что я принес? Это требования к системе, составленные нашим главным писателем. А еще нашим проектом заинтересовался СЕО, так что мы релизимся на месяц раньше!

Р: (ошарашенно) Но ведь у нас всё рассчитано на полгода!

М: Не волнуйся, вот посмотри, я подробные требования принёс, всё получится!

Разработчик смотрит требования.

Р: Но ведь это отстой, мы вообще об этих требованиях не слышали!

М: А, это? Это попросил сам СЕО, так что нужно обязательно сделать.

Р: Но я же не успею!

М: Не волнуйся, я что-нибудь придумаю.

Менеджер убегает. Разработчик начинает разбирать собранное в центре комнаты.

Часть 2

Через месяц, Разработчик собирает что-то совершенно не похожее на сооружение из предыдущей сцены. Входит Менеджер.

М: Радуйся, я привёл нам помощь!

Р: О, кто-то ещё будет разрабатывать этот продукт? Тогда мы справимся!

М: Не совсем. Знакомься, это наш Скрам-мастер!

Входит Скрам-мастер (С).

С: Здравствуйте, дети! В смысле, приятно познакомится!

М: Он поможет тебе лучше распределять время между задачами, повысит производительность нашей команды.

Р: Но я же один в команде…

С: Не волнуйся, я только что прочитал об особом виде СКРАМ, который как раз подходит для команд из 3-х человек.

Менеджер уходит, Скрам-мастер сдвигает сооружение, сделанное разработчиком, в угол комнаты и начинает рисовать графики.

Часть 3

Месяц до релиза. Скрам-мастер сидит в центре комнаты в позе йога, Разработчик пытается соединить всё в углу комнаты. Входит Менеджер.

М: О, я вижу, у вас всё готово? Хорошо!

Р: Оно не идеально, но к началу тестирования я успею закончить.

М: А, ты про это… У нас не будет тестирования.

Р: Что?

М: Я поговорил с ВИПами, и они хотят видеть всё за 2 недели, как мы покажем всё СЕО. Так что тестирование отменяется.

Р: Но ведь у меня нет времени укрепить всё к этому показу!

М: Не проблема, подопри костылями и прибей гвоздями.

Р: Оно не будет работать, и мне стыдно будет показывать такой код!

М: Не волнуйся, мы всё исправим после релиза.

Менеджер уходит. Разработчик начинает прибивать костыли к сооружению, в результате чего оно становится похожим на ежа.

[продолжение см. по приведенной выше ссылке]

 

После прочтения немного посмеялся, но затем задумался: оказалось, хватает общих моментов с моим местом работы. Решил тоже черкнуть пару своих мыслей (изначально, как комментарий к пьесе на Tproger), которые уже не в форе аллегории излагают недостатки управления разработчиками, а представляют собой попытку найти решение проблемы: 

===

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

 

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

 

Вот несколько соображений:

1) ТЗ.
Распространенная ситуация, когда программная система разрабатывается без задокументированных требований к ней, все обсуждается на словах или в комментариях какой-нибудь системы управления проектами. Но как бы много не обсуждали, какое бы хорошее взаимопонимание не было бы между [даже двумя] разработчиками, все равно кем-либо из руководителей рано или поздно будет заявлено: "зачем ты сделал это так? Я думал очевидно, что надо было по-другому делать! Как ты этого не смог понять?!".

Защититься от такого можно либо выдвинув условие, что без предоставленного ТЗ работать отказываешься вообще, либо чтобы выделили время на вдумчивое и подробное составление ТЗ. Если начинают пенять, что на такое нет времени, можно смело обвинять в непрофессионализме и начинать искать другую работу.

 

2) Издержки
Как и в любой другой деятельности, в разработке ПО хватает своих издержек. Например, документирование кода. На мой взгляд - это необходимо делать, т.к. в большинстве случаев, без данной меры невозможно продолжать работу другого сотрудника, который уволился. Мнение руководства, что один сотрудник с легкостью может продолжить работать с проектом другого сотрудника, с тем же темпом и с того же места, где последний закончил - грубейшая ошибка. Более того, совместная разработка превращается в ад если нужно постоянно ходить и спрашивать что это у тебя там, там и там...

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

 

3) Формализация требований
Требования, взгляды и факты, связанные с организацией разработки следует тщательно формулировать и выражать в письменной форме. Хотя бы, чтобы при разговоре, перешедшем на повышенные тона, всегда можно было быстро и четко выложить аргументы в пользу своей позиции. Особенно актуально с менеджерами, которые склонны к манипуляциям (у них это профессиональное качество). Когда внятно и емко можешь выразить свою позицию, то манипулировать тобой, также как и переносить на тебя вину, значительно сложнее.

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

 

4) Чтение литературы по теме и обсуждение
Поскольку ситуация много раз повторялась с разными разработчиками, то хотя бы некоторые способы решения наверняка уже описаны в книгах. Следует изучать этот вопрос и обмениваться опытом с другими людьми, выделив на это определенное время и не лениться писать свои рекомендации. Вот одна из многих книг, которую только начал читать: "Факты и заблуждения профессионального программирования, Роберт Гласс". 

 

5) ...и многое другое

Резюмируя: для разработчика определенно недостаточно глубоких знаний языков программирования, алгоритмов, различных API, фрэймворков и особенностей архитектур вычислительных систем. Нужно также уметь и не лениться отстаивать свои собственные взгляды на работу.

===

Тестовая запись 4 / Test record 4

тестовая запись (8)

тестовая запись (10)

тестовая запись (12)

тестовая запись (14)

тестовая запись (18)

test record (8)

test record (10)

test record (12)

test record (14)

test record (18)

walden pond

Getting Started

It's easy to get started creating your website. Knowing some of the basics will help.

What is a Content Management System?

A content management system is software that allows you to create and manage webpages easily by separating the creation of your content from the mechanics required to present it on the web.

In this site, the content is stored in a database. The look and feel are created by a template. Joomla! brings together the template and your content to create web pages.

Logging in

To login to your site use the user name and password that were created as part of the installation process. Once logged-in you will be able to create and edit articles and modify some settings.

Creating an article

Once you are logged-in, a new menu will be visible. To create a new article, click on the "Submit Article" link on that menu.

The new article interface gives you a lot of options, but all you need to do is add a title and put something in the content area. To make it easy to find, set the state to published.

You can edit an existing article by clicking on the edit icon (this only displays to users who have the right to edit).

Template, site settings, and modules

The look and feel of your site is controlled by a template. You can change the site name, background colour, highlights colour and more by editing the template settings. Click the "Template Settings" in the user menu.

The boxes around the main content of the site are called modules. You can modify modules on the current page by moving your cursor to the module and clicking the edit link. Always be sure to save and close any module you edit.

You can change some site settings such as the site name and description by clicking on the "Site Settings" link.

More advanced options for templates, site settings, modules, and more are available in the site administrator.

Site and Administrator

Your site actually has two separate sites. The site (also called the front end) is what visitors to your site will see. The administrator (also called the back end) is only used by people managing your site. You can access the administrator by clicking the "Site Administrator" link on the "User Menu" menu (visible once you login) or by adding /administrator to the end of your domain name. The same user name and password are used for both sites.

Learn more

There is much more to learn about how to use Joomla! to create the web site you envision. You can learn much more at the Joomla! documentation site and on the Joomla! forums.