Про программистские конторы

Jan 27, 2012 18:10

В предыдущей статье писал про свою работку, вот решил немного пофилософствовать на тему, близкую мне по работе - о житии программистких контор/фирм/организаций. Здесь будут не самые глубокие мысли, просто для себя пишу, но, может, кому-нибудь тоже пригодится.

Вопреки широко распространённому заблуждению, в компьютерных фирмах работают не только программисты. И сами по себе программисты не похожи на тех "джентльменов и программистов" из прессы; ну да про это как раз и поговорим. Равно как слово "компьютерщик" не равно "программист", а "компьютерная фирма" не равно "программистская".

"Компьютерщик" из СМИ - это, как правило, чудак-любитель, одной ногой чатящийся с подругой, а другой будто нехотя взламывающий сайты Пентагона. В жизни "компьютерщик" - просто человек, значительное время проводящий за компьютером; при этом он может, например, читать книги, звонить по Скайпу и делать прочие вещи, фактически являющиеся полными аналогами обычной не-компьютерной деятельности. Работа за компьютером уже где-то с конца 80-х годов не требует навыков программирования (и тем паче - хакерства), и подавляющее число "компьютерщиков" никак с программированием не связано.

Ровно так же дела обстоят с компьютерными фирмами. В большинстве случаев это сочетание означает "фирма по продаже компьютеров", ибо компьютеров в мире дофига, а программистов - гораздо меньше (см. выше). У программистских фирм также есть куча разнообразных вариантов - есть фирмы - создатели новых продуктов, есть те, кто занимаются внедрением и сопровождением готовых продуктов (например, 1С-ники), есть "железячники", которые пишут программы для всякого рода устройств, связанных с компьютерами. Это всё очень грубая и не системная градация - просто что на ум пришло, можно придумать много больше.

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

Несмотря на весь написанный мною негатив, именно программисты - рабочие лошади фактически любой программистской фирмы. Именно они производят "товар" - программы, которые потом фирма продаёт, и которыми потом мы с вами пользуемся. В частности, данная страничка произведена при помощи сервиса ЖЖ, который был написан программистами. А многие даже не задумваются, откуда берутся дети появляются те или иные вещи. Программисты сайтов (другими словами - веб-программисты) - те же программисты, только в профиль.

По сути, программисты - это такие рабочие на "заводе" по производству программ. Именно они своими корявенькими ручонками выпиливают нужные в хозяйстве втулки программы. И аналогия здесь самая что ни на есть прямая. Программист - он не творец, он не художник - он именно рабочий. Его работа немного более комфортна, чуть более творческая - но в целом очень и очень похожа на работу на заводе, с точки зрения классовой теории - в том числе. :) Разве что отличие может заключаться в собственности на средства производства - здравая часть программистов работает на личных компьютерах, но тут в общем-то всё сводится к тому, что стоимость компьютера как средства производства давно и успешно стремится к нулю.

2) Вторая важная должность в программистской конторе - менеджер проекта, руководитель направления - в общем, по-русски говоря, начальник. Хотя термин "манагер" в программистской среде используется чаще, он в общем и целом существенно разнится от того "манагера", которым заполонен интернет - здесь обычно всё-таки имеется в виду оргинал значения слова "менеджер" - управленец, управляющий. Зачастую управленцы параллельно занимаются и финансовыми вопросами, то есть фактически занимаются эксплуатацией рабочих программеров, но не всегда; иногда финансы остаются в ведении владельцев фирмы и менеджеры занимаются руководством на тех же правах, что и простые программисты.

Так как компьютерные фирмы, как правило, невелики, то управленцы совмещают собственно управление с другими задачами. Так как обычно они выходят из среды программистов, то и занимаются тем же самым - программированием; то есть во многих случаях манагеры-управленцы фактически являются программистами с функцией управления подчинёнными - то есть в основном кодят, а управлением занимаются по мере необходимости. Это, конечно, не правило, но тем не менее. Бывают управленцы из других направлений, тогда они занимаются другими делами - но в общем и целом не припомню на своей практике кого-то из командиров, кто бы занимался исключительно командованием войсками (не считая, возможно, директора или владельца фирмы, и то обычно они чем-то программистским заняты).

Так что, на мой взгляд, следует отделять менеджеров в компьютерных фирмах от типично интернетовских "манагеров". Аналог "менеджеру" в заводской иерархии - что-то типа Мастера, Начальника Цеха.

3) Аналитики. Это кто-то типа меня. :) Есть не во всех фирмах в явном виде - в некоторых их совмещают те же управленцы или простые программисты, но тем не менее их функции всё равно кому-то выполнять приходится.

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

С другой стороны, аналитики могут существенно облегчить жизнь тем же самым программистам, найдя оригинальное решение задачи. Программистам свойственно специфическое "мелкое" мышление на уровне кода программы; при получении задачи они сразу переводят её на свой "язык" и начинают выполнять её в лоб. Но иногда решения аналитиков позволяют применить какой-нибудь нестандартный ход и сократить разработку на порядок, а то и на два. Конечно, программисты тоже могут что-нибудь такое придумать, но лучше на них такие задачи не свешивать.

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

Аналога аналитику в "заводской" иерархии придумать не могу. Разве что конструктор в бюро разработок.

4) Дизайнеры. Встречаются не во всех вариациях компьютерных фирм - например, в моей текущей фирме таковых не осталось - но тем не менее в некоторых случаях - важная часть процесса производства программ.

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

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

Аналог дизайнерам в заводской иерархии - что-то вроде художника-оформителя.

5) Тестеры, тестировщики. Заслуженно считаются низшей кастой в программистских конторах, и отвечают взаимностью - очень часто именно из-за низкой квалификации тестеров практически готовая программа отправляется в архив. Основная функция тестеров - гос. приёмка; они проверяют программу на наличие ошибок. Ошибки всегда есть в любой программе, так что тут приходится правильно расставлять приоритеты, и распознавать потенциально опасные ошибки в программе.

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

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

Одна из самых неблагодарных профессий - если всё работает, то это молодцы программисты. Но если где-то ошибка - то виноваты тестеры: почему пропустили? Так как ошибки есть в любой программе, то тестеров пинать можно всегда.

В общем тестеры - самый недооценённый класс среди "программистов". Хотя аналог у них на заводе - итоговая приёмка продукции.

6) Продажники. В общем-то эта категория полностью соответствует продажникам любой другой продукции - хоть Гербалайфа, хоть самолётов. Занимаются поиском и общением с потенциальными клиентами. Основные добытчики денег в буквальном смысле. Что интересно - иногда понятия не имеют, что они продают. Но продают.
Есть не во всех программерских конторах - скажем, если фирма работает на какого-то толстого клиента, то искать никого не надо.

7) Техническая поддержка. Люди, занимающиеся сопровождением программы, консультанты пользователей-клиентов.
Собственно тут тоже аналогично тех. поддержке любой другой конторы - поддержка вынуждена выслушивать претензии типа "не было ни единого разрыва", "а почему я нажал Alt-F4 и всё закрылось?" и так далее. Бывают, конечно, и вменяемые клиенты, которых можно даже скрытно поэксплуатировать в качестве бесплатных тестеров, но бывает это редко.
Имхо самая нервная профессия среди "программистских".

8) Админы, системные администраторы. "Ой, у меня компьютер сломался - весь экран в звёздочках!" - в чём-то админы похожи на тех. поддержку, только они работают внутри предприятия, для сотрудников, а не для клиентов. Настроить компьютер, переставить винду, вычистить вирусы - вот самые простые задачи админов; но также им приходится настраивать сеть, следить за серверами фирмы, не допуская угроз для них ни изнутри конторы, ни снаружи - а таких угроз может быть вагон и тележка. И чем более высокотехнологическими системами контора пользуется, тем выше шанс и скорость того, что что-нибудь завалится или станет колом (что для админов одно и то же, вот такой вот парадокс).

Очень неблагодарная профессия, как и в случае тестеров - пока всё работает, про них никто не вспоминает (как можно благодарить за то, что всё работает как должно?), но если что-то не так, то виноват, конечно, админ.

Аналог админам в заводской иерархии можно придумать в виде наладчиков оборудования.

9) Обслуживающий персонал - уборщики, электрики, водопроводчики. Тут даже комментировать нечего, как мне кааца.

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

Ореол крутости вокруг профессии "программист" появился в 90-е годы, когда отечественный рынок был в упадке, и народившиеся компьютерные фирмы ринулись на западный рынок, что позволило их сотрудникам получать приближенные к западным зарплаты - всё равно в разы меньшие, чем на Западе, и тем не менее, при отечественных $100-200 в месяц стартовые $500-700 казались манной небесной. Вообще жить по русским ценам при западной зарплате - мечта диссидента. В кризис 1998-го года "программисты" и вовсе взлетели на невиданную высоту - у всех жрать нечего, а у них-то баксы, которые по новым ценам стоят втрое больше обычного. Наша контора скупила половину квартир в районе :), правда, я тогда в армии ещё служил и месяцами зарплату вообще не получал никакую.

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

Надеюсь, хоть кое-кому это приподоткроет глаза на суровую российскую реальность.

терминология, размышления, работа

Previous post Next post
Up