У вас уже есть хорошие идеи
Идеи, которые вы изложили в своем вопросе, звучат превосходно. Это большой сюрприз, что вы не добились успеха. Наступил 2012 год, и объектно-ориентированная революция уже давно перешла от современного к современному. Кажется, если бы у вас не было очень низкого оборота и очень небольшого найма, у вас бы не было возможности получить несколько десятков или даже сотню хороших программистов с объектно-ориентированным программированием.
Agile или объектно-ориентированный?
Вы упомянули некоторые Agile-технологии, такие как TDD, и некоторые более новые концепции, поэтому не будьте слишком резкими с людьми, чтобы не принять то, с чем все еще активно борются некоторые управленческие команды. Некоторые утверждают, что принимают Agile, но когда они говорят об этом, это означает, что они говорят, что означает. Организация характеризуется не командами, которые принимают решения и адаптируются, а жестким иерархическим контролем в стиле контракта.
Но вернемся к объектно-ориентированному. Вы не упоминаете объектно-ориентированный анализ или проектирование, и я не совсем уверен, какой язык программирования уступает какому объектно-ориентированному языку программирования. Я знаю, что у UML есть проблемы с популярностью среди многих объектно-ориентированных программистов. После того, как я тщательно изучил OOAD, я считаю, что это похоже на изучение культуры и истории страны, чей естественный язык вы хотите изучать. Например, если бы я хотел выучить греческий язык, я мог бы выучить алфавит, словарный запас и грамматику, но если бы я игнорировал богатую историю и культуру, я бы многое пропустил. В любом случае, если вы узнаете все об объектно-ориентированном языке программирования, но ничего о OOAD, я думаю, что важная возможность была упущена.
Проблемы преодолеть?
Мост слишком далеко? Если вы попросите людей учиться одной мелочи в неделю, среди людей, которые участвуют в этом, произойдет много изменений. Если вы попросите их изменить все, что они знают, это будет приветствоваться немногими, трудно для многих и невозможно для других. Некоторые изменения, такие как контроль версий, локализованы. Вы переходите от того, что раньше не делали, у вас были тренировки, в которых не было ограничений памяти, кто-то проводил вас через это в первый раз, а затем повседневная работа была довольно легкой.
Другие изменения распространены. Например, выгрузка C и переключение на Java требуют значительного обучения, настройки и значительных изменений в повседневной жизни для принятия новой IDE, нового компилятора, нового языка, нового API, новой модели развертывания и т. Д. что происходит чаще всего в сочетании с пилотной программой или корпоративной реструктуризацией.
Возглавить революцию? Если люди, которые в настоящее время выполняют работу, имеют историю вознаграждения, и компания не рискует потерпеть неудачу, какова их мотивация к изменениям? Если вы выглядите как посторонний человек, который хочет указать направление и предоставить им ответственность за результаты, которые он не может предсказать, это может показаться риском, а не вознаграждением.
Позиция власти или идея лидерства? Многие организации работают на основе позиции власти. Если вам не хватает видимой поддержки со стороны менеджеров, руководителей секций, директоров и вице-президентов, вы просто идейный лидер. Некоторые люди находятся в опасном положении, имея одну идею и не имея возможности развить вторую. Если вы сможете показать их вместо того, чтобы рассказывать, это будет иметь большое значение для успокоения скептиков и для привлечения талантливых союзников.
База поддержки слишком мала? Сделайте сортировку среди этих 250 человек и разделите их на три категории: готовые к объятиям, желающие учиться и не желающие учиться. У вас есть веские причины быть разочарованными людьми, которые не заинтересованы в переменах. С тем же успехом можно толкать веревку. Это напрасное усилие. Если вы чувствуете, кто поддерживает изменения, вы можете узнать, что их интересует.
В отличие от медицинской сортировки, где этический и практический выбор состоит в том, чтобы помочь средней группе, которая может сделать это с помощью, вы можете инвестировать свою энергию и время, основываясь на своих суждениях и предпочтениях. Для вашего успеха, почему бы не развивать группу, которая готова принять новые идеи? Сначала их может быть немного, но, как в виде снежного кома, ваша авторитет и репутация адвоката будут расти. Вскоре люди будут спрашивать вас, когда будет следующая тренировка.
В нем на длительный срок? До тех пор, пока вы не вырастите чемпиона, чтобы нести за собой вещи, вы должны ожидать, что вы потратите время на построение отношений. Возможно, вам придется остаться с командами, которых вы тренируете, на срок более одного месяца. Пока команда не владеет улучшенными методами для себя, вы просто полицейский технологии или методологии. Наставничество - это процесс, который может занять годы. Есть много вещей, которые ваши разработчики не хотят делать, которые вы считаете важными (я думаю, вы упомянули модульное тестирование). Это может занять некоторое время, чтобы построить общее видение ценности, которую это приносит. Я знаю это по своему опыту, потому что когда-то я выступал за инструмент покрытия кода в компании Fortune 500, которая имела отличную репутацию по качеству, но менеджеры и коллеги с осторожностью относились к этому.
Эксперт или Понравился? Гораздо быстрее, чем наставничество, будет способствовать массовой поддержке, которая приходит от каждого члена команды. Начав с команды из десяти специалистов по программному обеспечению, если бы у меня был выбор, чтобы один человек работал над процессом все время или десять человек работал над процессом десять процентов времени, я бы выбрал второго. Массовый процесс позволяет адвокатам почувствовать воздействие подхода и адаптировать подход, чтобы наилучшим образом решить проблемы команды, которой принадлежит работа.
Вы видите линию свободы? Часть внедрения «Best Practices» состоит в том, чтобы заставить людей отказаться от некоторой свободы делать вещи обычным способом. Отказ от усмотрения программиста будет более приемлемым, если вы будете искать возможности оставить много вариантов разработчикам. То, что они выбирают, определяется тем, что предписано разделением, которое мы можем назвать линией свободы. Может потребоваться аналогичное, хорошо обоснованное разделение по организационным, региональным / сайт-специфическим, групповым и личным практикам.