среда, 15 декабря 2010 г.

Пути программиста. 4. Компания – разработчик ПО

Компании – разработчики ПО бывают разные, большие и маленькие, работающие на заказ и создающие свой продукт. Все эти компании имеют свои особенности.
Компании создающие свой продукт обычно достаточно стабильны (если конечно это не стартап  ). У них есть наработанная база клиентов, которые сидят на техподдержке и продажи приносящие деньги. Однако у таких компаний есть один недостаток.
Обычно система, которая существует достаточно давно обрастает костылями. Далеко не всегда ее архитектура близка к идеалу. Могут использоваться технологии, которые умерли еще в прошлом веке. В связи с этим, у программистов, которые только пришли в компанию может возникнуть желание “ВСЕ ПЕРЕПИСАТЬ!” :).
Только вот сделать это, с высокой вероятностью, никто не даст...
Каждое изменение требует времени, при чем не только программиста, который его сделал. К вам присоединится тестировщик, может потребоваться вмешательство аналитика и технического писателя. А это все деньги...
Кроме того могут возникнуть ошибки, которые выявит только клиент, на какой-нибудь уникальной конфигурации, а это уже удар по репутации. Поэтому скорее всего вам придется поддерживать большой массив уже имеющегося кода и не факт, что этот код будет хорош. Хотя вам может и повезти и попадется проект, который изначально качественно проектировался и будет вызывать радость.
Но в любом случае в такой компании поработать стоит. Обычно в них отлажены процессы разработки. В них работает много профессионалов, у которых можно многому научиться. Да и просто это здорово почувствовать себя причастным к разработке большого массового продукта.
Компании занимающиеся разработкой на заказ это несколько другой вид компаний. У таких компаний есть 2 основные модели бизнеса – проектные сервисы, предоставляемые неограниченному кругу клиентов и выделенные центры разработки под крупных заказчиков.
Компании предоставляющие проектные сервисы имеют один существенный недостаток. Они не всегда стабильны. Сегодня к ним придет клиент с проектом на миллионы, завтра они будут делать веб сайт, а через неделю проектов не будет и вся команда будет заниматься внутренней автоматизацией либо просто сидеть и ждать новых задач (а то и искать новую работу).
Это издержки подобного бизнеса. Однако есть и положительные стороны. Если вы работаете в такой компании, вы постоянно будете получать от работы новые впечатления. Конечно есть компании, которые берутся только за определенный тип проектов, и тут может возникнуть некоторая скука, но обычно проекты разнотипные. Часто с использованием последних технологических новинок, так что если вы любите все новое, вам сюда.
Так же в таких компаниях встречаются выделенные центры разработки ориентированные на одного клиента
Работа в выделенном центре в чем то близка к работе в конторе занимающейся разработкой продуктов. Обычно это жесткий набор технологий, наличие больших массивов старого кода. Задачи поддержки. Но есть и отличия. Проекты в выделенном центре все же разнообразнее и дают простор для творчества. Хотя встречаются выделенные центры, работающие на западную компанию выпускающую продукт. Этот вариант практически ничем не отличается от описанного выше (смотри продуктовые компании).
Поговорим о размере. Размер важен! :) Между маленькими и большими компаниями есть очень большая разница. Маленькие компании за частую привязаны к одному-двум заказчикам и проблемы у такого заказчика могут привести к тому, что часть сотрудников останется без работы. В крупных компаниях наличие сотрудников не задействованных на внешних проектах это норма. Часть команды может быть зарезервирована под будущих клиентов и заниматься внутренней автоматизацией или обучением. Кроме того, большая компания дает больше возможностей для роста.