Всім, хто коли-небудь брав участь в реалізації програмного продукту або проекту, знайомі вічні війни та непорозуміння між командами розробників і менеджерами, провідними проект.
До цього дня можна зустріти здивування в середовищі російських розробників в стилі: «Та навіщо він потрібен, цей менеджер?»
Давайте розберемося: а дійсно, навіщо?
Тут доречно згадати класичну книгу Фредеріка Брукса «Міфічний людино-місяць, або Як створюються програмні системи». У цій книзі виводиться основний закон Брукса:
Якщо проект не вкладається в терміни, то додавання робочої сили затримає його ще більше
Все тому, що в програмуванні робота не може бути розділена довільно на кілька незалежних одна від одної частин: деякі завдання можна починати виконувати тільки після того, як закінчені інші.
Розробка програмного продукту - якраз та область, де неможливо самоврядування і братнє поділ роботи на рівні частини. Так і з'явилися люди, що розриваються між клієнтським «хочу» і командним «можу» - IT-менеджери.
Під IT-менеджментом, як правило, розуміються люди, відомі в англомовному середовищі як PM: продукт-менеджери та проект-менеджери.
А) люди, які мають досвід програмування / розробки / інжинірингу
Б) люди, які не мають досвід програмування / розробки / інжинірингу.
І в тому, і в іншому випадку є свої складності. Вважається, що ні IT-шник не дуже розуміє специфіку розробки. А IT-шник не дуже розуміє людей і тонкощі продажів.
Далеко не всі фахівці можуть похвалитися серйозним досвідом і в тій, і в іншій сфері. Однак, знаходяться люди, які мають справжній талант у керуванні розробкою продукту. Досить згадати Стіва Джобса, який не був кваліфікованим інженером, але, безумовно, багато знав про технології, за допомогою яких створюється продукт, а також розумів тонкощі використання передбачуваного продукту користувачами.
Рівень необхідного технічного розуміння во-многом залежить від компанії. Скажімо, в компаніях, що створюють технічно навантажені інфраструктурні продукти (наприклад, Heroku, Appcelerator, Akamai Technologies, Inc.), потрібні технічно підковані менеджери. А чи потрібні серйозні технічні навички менеджерам компаній, що фокусуються на зв'язках між користувачами (Twitter, Quora, Tumblr)?
Отже, перед нами постають два питання:
Чи повинен IT-менеджер мати досвід розробки?
Які навички потрібні IT-менеджеру?
Для початку слід визначитися з функціями IT-менеджера.
Чим займається IT-менеджер?
з'ясовує потреби кінцевих користувачів передбачуваного продукту;
визначає концепт продукту, його цілі, вимоги до нього;
розробляє план реалізації продукту спільно з командою розробників;
вибудовує політику поширення та ціноутворення продукту.
Основне завдання IT-менеджера зводиться до планування, прогнозування, маркетингу окремого продукту компанії на всіх стадіях його розробки.
Що з перерахованого вище вимагає досвіду в програмуванні?
Можна навіть піти далі і сказати, що для IT-менеджера краще не мати досвіду програмування зовсім, ніж «вміти щось і трохи». Чому? Якщо у людини немає досвіду розробки, на ті ідеї, які народжуються у нього в голові, не спрацьовуватиме тригер «це важко або неможливо зробити». Ці питання нехай вирішує не менеджер, а команда розробки. Завдання менеджера - визначити, що потрібно користувачам від продукту.
Якщо менеджер колись був розробником, він часто може сам фільтрувати свої ідеї, виходячи з власного минулого досвіду. Оскільки досвід уже в минулому, може виявитися так, що хороші ідеї пропадають просто тому, що не були висловлені. Більш того, власний досвід може бути спокусою при постановці термінів виконання завдання, а звідси вже недалеко до прямих конфліктів між оцінками команди і оцінкою менеджерів-технарів. Минулий досвід може породити бажання взяти участь в житті команди не в якості керівника, а в якості виконавця. Погано, коли менеджер починає використовувати свій досвід не для того, щоб швидко прийняти правильне рішення, а для того, щоб зробити щось самому.
Тому ще раз: всі питання щодо реалізації вирішує команда розробників!
Яких нетехнічних знань може не вистачати технократу, що обрав шлях IT-менеджменту?
Досвід поводження з продуктом в якості користувача. Як правило, у розробників «змальовується очей», і за рішенням комплексних завдань вони забувають про те, як буде виглядати кінцевий продукт. Це не означає, що програмісти позбавлені почуття прекрасного, але часом скульптор, захопившись тонкої обробкою складки на драпіровці, забуває глянути на своє творіння з відстані в кілька кроків.
Аналітика. Одна з основних завдань продукт-менеджера - оцінити функцію продукту, вичленувати її гідності і недоліки на основі зібраних даних. Для цього потрібен певний економічний досвід.
Вибудовування взаємин. Спілкування з інвесторами, акціонерами, клієнтами, узгодження змін та інші комунікативні завдання можуть виявитися дуже складними для найдосвідченіших розробників.
Погляд з іншої сфери. Так, для створення нового продукту корисно виповзти з власної мушлі. Складно це зробити, якщо ти впритул зайнятий в одній сфері.
З іншого боку, без необхідного набору технічних навичок IT-менеджеру теж не обійтися. Для цього є як мінімум одна важлива причина: з технарями необхідно говорити їхньою мовою. Далі, технічний досвід може допомогти скоротити час прийняття рішення та управляти ризиками. Менеджер не повинен писати код або займатися проектуванням системної архітектури. Але знати основи просто зобов'язаний.
Сферичний менеджер в вакуумі: який він?
Якщо зібрати загальну картину, ми отримаємо наступні навички, якими бажано мати ідеального IT-менеджеру:
1. Нетехнічні навички:
Вміти планувати, складати графіки і документацію.
Бути емоційно зрілим. Вміти мотивувати. Вибудовувати взаємини. Бути чесним. Контролювати свої емоції.
Знати методології Agile і Lean.
Мати досвід в маркетингу і продажах.
ня про бюджет і його плануванні.
2. Технічні навички:
Розуміти загальні принципи програмування (змінні, класи, підкласи, методи і т.д.), принципи побудови архітектури програмних рішень. HTML, CSS, PL-SQL не повинні бути далекими абревіатурами.
Мати уявлення про API, безперервної інтеграції, автоматичному тестуванні, A / B-тестування, модульному тестуванні.
Мати уявлення про декілька фреймворками для веб-розробки (Django, jQuery, Rails, Symphony) і платформах для мобільного розробки (PhoneGap, Titanium).
В цілому можна помітити, що недолік технічних знань з лишком компенсується терпінням і уважним ставленням до команди, а за технічну підкованість інженери готові пробачити своєму менеджеру багато помилок управління. Істина, як завжди, десь між.
Як підсумок
Величезну частину роботи IT-менеджера становить зовнішнє спілкування: зустрічі з клієнтами, відвідування конференцій; а також вирішення внутрішніх питань: визначення концепту, складання дорожньої карти, вимог, визначення стратегії, політики поширення і ціноутворення. IT-менеджер - це адвокат кінцевого користувача, який гарантує простоту і інтуїтивну зрозумілість продукту.
IT-менеджер - це Китайська стіна для своєї команди. Одне з його завдань - прибрати всі відволікаючі від основного напрямку роботи чинники, захищати своїх розробників від вступників ззовні зайвих завдань.
Хороший менеджер завжди знайде час, щоб прокачати свої технічні скіли. Хороший розробник завжди знайде час, щоб донести до менеджера свою думку.
IT-менеджери - це люди, які не допускають ось цього:
Звідси можна зробити лише один висновок. Давайте жити дружно! (С)