технологии программирования   к оглавлению   к высокоуровн. языкам - 3GL   к визуальным средам - 4GL

Системный подход в технологии программирования

Карьера в области информационных систем

ЛИТЕРАТУРА

Этот раздел в одинаковой степени полезен и программистам, желающим устроиться на работу, и руководителям проектов, которые их на работу принимают. Хотя, конечно, написана она с точки зрения "принимающей" стороны. Мы рассмотрим уровни карьеры, вопросы планирования карьеры и примеры составления некоторых важных документов. Основные практические вопросы раздела таковы:

8.1. Введение

8.1.1. Основные понятия и определения

Человек вырастает по мере того, как растут его цели.
Ф. Шиллер

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

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

8.1.2. Планирование карьеры

Планирование карьеры включает следующие этапы:

8.1.3. Классификация уровней карьеры

Всякому теперь кажется, что он мог бы наделать добра на месте и в должности другого и только не может сделать этого в своей должности. Это причина всех зол.
И. В. Гоголь

Рассмотрим основные уровни (стадии) карьеры в области информационных систем (рис. 8.1). Карьера может развиваться как по профессиональной линии (как технический специалист в программировании), так и по управляющей (как менеджер программных проектов). В любом случае первая должность сотрудника является профессиональной. Технические специалисты высокого уровня ценятся не менее, чем средний менеджмент, получая сравнимые зарплату и уважение.

Каждый уровень карьеры определяют следующие характеристики:

С точки зрения этих характеристик четыре технических уровня согласно [Conger 1994] выглядят так.

8.1.4. Источники и составные части карьеры

Первую половину жизни мы работаем на имя, потом оно работает на нас.
Народная мудрость

Существует три источника карьеры [Дубейковская 2000].

Три составные части карьеры могут быть охарактеризованы так [Дубей-ковская 2000].

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

Существуют некоторые специфические особенности, влияющие на карьеру, присущие русскому народу. Во многом они обусловлены исторической спецификой [Психология 2000].

8.1.5. Рекомендации по литературе

Люди перестают мыслить, когда перестают читать.
Д. Дидро

Основные подходы к карьере и управлению кадрами излагаются в следующих книгах:

8.2. Набор новых сотрудников

8.2.1. Привлечение кандидатов

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

Набор кадров - это совокупность мер, предпринимаемых компанией для привлечения кандидатов на работу. Существует множество методов набора кадров [Цветаев 1999]:

Согласно статистике, наиболее эффективными методами поиска работы являются обращение непосредственно к предпринимателю и поиск через друзей и родственников.

Очень хорошо, если кандидат имеет положительную рекомендацию от одного (лучше - от нескольких) из сотрудников уже работающих в данной компании. Рекомендованный должен быть положительно охарактеризован как человек (в плане отношения к работе и коллегам) и как специалист в требуемой области. Желательно, чтобы рекомендующий имел личный опыт работы в одном коллективе с кандидатом. Заметим, что наличие положительной рекомендации само по себе ничего не гарантирует, а лишь позволяет отсеять случайных людей. Бывает полезно получить также отзывы о кандидате от незаинтересованной стороны (общие знакомые, бывшие коллеги рекомендуемого).

8.2.2. Анализ краткой биографии (резюме)

Серьезная организация возьмет на высокооплачиваемую должность опытного хакера.
Резюме просим размещать на главной странице сайта www.microsoft.com.
Анекдот о необходимости резюме при представлении себя компании

8.2.2.1. Основные советы по составлению резюме

Специалисту нужно представить себя компании, а компании - получить информацию о специалисте. Для этого традиционно используется основной документ - резюме.

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

Существует несколько основных советов по составлению резюме. Резюме должно быть (http://www.design-studios.ru/work/).

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

8.2.2.2. Структура резюме

Резюме для специалиста в области информационных технологий имеет некоторые отличия от классического варианта. Укажем сначала рекомендуемую структуру резюме.

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

8.2.2.3. Образец краткой биографии (резюме)

Приведем образец составленного резюме.

Ковалевская Софья Васильевна

Адрес: 196240, Россия, Санкт-Петербург,
проспект Чебышева, д. 111, кв. 111
Электронная почта: sofia_kovalevskava@spb.ru

Телефоны:
(812) 999-1111 (рабочий)
(812) 999-2222 (домашний)
(812) 999-3333 (мобильный)

Цель

Получение должности руководителя отдела разработки компиляторов в компании "Компилятор++".

Текущая должность и место работы

Руководитель проектов по разработке и сопровождению компиляторов в Санкт-Петербургском Центре компьютерных технологий.

Текущие обязанности включают:

Краткая профессиональная характеристика

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

Области научных исследований и профессионального интереса: методология сопровождения компиляторов, принципы инженерии программирования, параллельное программирование. Автор 12 научных публикаций.

Образование

1983 сентябрь - 1988 июнь

Санкт-Петербургский государственный университет, математико-механи-ческий факультет, кафедра информатики. Диплом специалиста с высшим профессиональным образованием. Специальность - математик, специализация - прикладная математика.

Профессиональные достижения

Профессиональный опыт

1998 апрель - по настоящее время.

1993 январь - 1998 март

1988 июль - 1992 декабрь

Знание платформ и инструментов

Аппаратные платформы: Intel, SPARC.

Операционные системы: Windows (9x, 2000), Unix (Sun Solaris 2.*). Языки программирования: С, C++, Java, Pascal, Prolog, Ada, Perl. Системы управления базами данных: Oracle, MS Access, Sybase. Инструментарий Интернета: CGI, HTML, XML, JavaScript.

Иностранные языки

Английский разговорный и технический свободно.

Рекомендации

Будут представлены по запросу.

8.2.2.4. Как не следует писать резюме

Примеры того, как не надо писать резюме, взяты с сохранением авторской орфографии из различных конференций FIDO.

8.2.4. Собеседование

Жалеть о сказанном мне приходилось, о не сказанном - никогда.
Ксенократ

8.2.4.1. Общие рекомендации

Собеседование является основным методом оценки и отбора кандидатов при приеме на работу.

Собеседование проводит комиссия, состоящая из:

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

Дадим несколько рекомендаций как кандидатам, так и комиссии, проводящей собеседование.

8.2.4.2. Вводная часть собеседования

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

8.2.4.3. Предыдущие проекты кандидата

Если кандидат имеет опыт работы, то он должен сделать короткое сообщение о своей прошлой и текущей работе. Возможные дополнительные вопросы к кандидату.

Из информации о предыдущих проектах необходимо выяснить, какой опыт; реальной работы есть у кандидата. Следует оценить:

8.2.4.4. Вопросы на размышление

Мужчины любят женщин, женщины любят детей, дети любят хомячков, хомячки никого не любят.
Эйлис Эллис

Идея вопросов на размышление заключается в том, что в подавляющем большинстве случаев кандидат не может знать ответ на них. У интервьюеров появляется хорошая возможность посмотреть на подход кандидата, как он возьмется за поиск ответа (http://www.joelonsoftware.com/stories/). Вот примеры таких вопросов.

Все кандидаты делятся на две группы по отношению к таким вопросам.

Об игре "Что? Где? Когда?"
Заметим, что более сложными, но близкими по идее к вопросам на размышление, являются вопросы на эрудицию и сообразительность игры "Что? Где? Когда?" (http://kulichki-koi.rambler.ru/znatoki/cgi-bin/db.cgi?tour=716&answer=1). Предложим читателю подумать, например, над таким вопросом: "Четверостишие из современного народного творчества: Писателям, временно севшим на мель,/ Сегодня дорога открыта./ Роман напишите на HTML:/.../ В последней строке стоит измененное название литературного произведения. В нем к двум, по сути, именам собственным, добавлена одна и та же современная приставка. Воспроизведите эту строку".

Существуют шуточные вопросы, с помощью которых можно попробовать оценить умственные способности кандидатов.

8.2.4.5. Вопросы о проектировании архитектуры

Убийцы и архитекторы всегда возвращаются на место преступления.
Питер Устинов

Кандидату может быть предложено что-либо спроектировать. Известно, что Джейб Блюменталь (автор первоначального проекта Excel) любил давать кандидатам задание спроектировать дом. Если кандидат после этого немедленно рисовал прямоугольник, то такой кандидат так же немедленно отвергался.

На что следует обращать внимание при ответе на такие вопросы? Хорошие кандидаты сразу попробуют получить как можно большее количество информации от комиссии. Более того, имеет смысл сразу отвергать кандидатов, не задавших вопрос "А для кого этот дом предназначается?".

Вот еще два интересных задания для проектирования, над которыми вам предлагается подумать самостоятельно:

8.2.4.6. Технические вопросы

Отплякиваясь от сурых пляк, каждый хамсик шмыряет на глын по 5 гнусиков. Сколько гнусиков шмырнут на глын 12 хамсиков, отплякивающихся от сурых пляк?
Г. Остер. "Задачник"

О технических вопросах
Существует точка зрения (http://www.joelonsoftware.com/stories/), согласно которой технические вопросы в процессе собеседования являются совершенно бессмысленными. Не существует связи между знанием (или незнанием) кандидатом ответа на конкретный технический вопрос и тем, будет ли он принят на работу. Кстати, ответы на большинство технических вопросов при необходимости могут быть найдены в онлайновых справочниках за считанные секунды.

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

Примеры вопросов для оценки технической компетентности

Каждому кандидату во время интервью задается по 3-4 вопроса из каждой области, знания в которой требуется оценить. Часть технических вопросов может быть "провокационного" характера. Они позволят выяснить способность кандидата к нестандартным рассуждениям. Часть вопросов поможет определить общий объем интересов и знаний, а также понимание перспектив развития в указанной предметной области. Приведем некоторые возможные вопросы. Попробуйте потренироваться в ответах на них.

Технические вопросы в тестах

В случае необходимости технического собеседования с большим числом кандидатов, можно предложить им выполнить письменное тестирование. Предложим вариант тестов, состоящий из 10 вопросов (часть из них взята из работы [Clifton 1995]).

1. Рассмотрим фрагмент программы:

...
    i = 0;
   
j = 0;
   
for (j = 1; j < 10; j++) {
   
i = i + 1;
   
}
...

Каким будет значение переменной i после того, как код будет выполнен?

(A) 0

(B) 1

(C) 3

(D) 9

(E) 10

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

(A) Для использования в качестве входной информации отладчика.

(B) Для повышения эффективности выполнения программы.

(C) Для сокращения размера символьных таблиц, используемых компилятором.

(D) Для указания загрузчику, где находится каждая переменная. (Е) В качестве вспомогательной информации операционной системе.

3. Большинство руководств по языку программирования определяют семантику языка, используя неформальные описания и примеры. Что является причиной того, что формальные методы для описания семантики не имеют такого широкого распространения?

(A) Формальные методы описания семантики очень плохо изучены на данный момент.

(B) Наиболее известные формальные методы описания семантики - операционные, денотационные и аксиоматические - непригодны для достаточно полного описания семантики языков программирования.

(C) Неформальные методы обычно полностью решают задачу описания языков программирования.

(D) Формальные методы описания семантики обычно слишком сложны для рассмотрения пользователями языков.

(Е) Трансцендентальность семантики как онтологии субъекта.

4. Рассмотрим фрагмент программы, который предназначен для вставки элемента в связный список с возрастающими ключами:

...
type
    List = ^Node;
    Node = record
            Data : integer;
            Next : List
           end;
var
  p, q, Head : List;
  Key : integer;
...
p : = Head;
if p <> nil then
  
while р^.Data < Key do
    
p := p^.Next;
New (q);
q^.Data := Key;
q^.Next := p^.Next;
p^.Next := q;
...

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

(A) Новый узел будет вставлен в список случайным образом.

(B) Новый узел будет вставлен после первого узла в списке.

(C) Новый узел будет вставлен перед последним узлом в списке.

(D) Новый узел не появится в результирующем списке.

(Е) Структура списка будет разрушена.

5. Наиболее существенным вкладом объектно-ориентированного программирования является обеспечение эффективного способа:

(A) Порождения эффективного кода.

(B) Повторного использования кода.

(C) Автоматической генерации кода.

(D) Верификации порожденного кода.

(Е) Загрузки программистов работой.

6. Укажите основные преимущества инкапсуляции:

1. Более эффективное хранение данных.

2. Более эффективное выполнение операторов.

3. Более легкое чтение и понимание программ.

4. Программы легче сопровождать.

(A) 1

(B) 2 и 3

(C) 3

(D) 1 и 4

(Е) 3 и 4

7. Сопоставьте следующие термины объектно-ориентированного программирования с их наиболее подходящими определениями:

1. Класс                 а. Совокупность данных и операций над ними

2. Сообщение        б. Описание набора однотипных объектов

3. Метод                 в. Тело процедуры

4. Объект                г. Вызов процедуры

(A) 1 - а, 2 - б, 3 - в, 4 - г

(B) 1 - б, 2 - г, 3 - в, 4 - а

(C) 1 - в, 2 - а, 3 - г, 4 - б

(D) 1 - в, 2 - б, 3 - г, 4 - а

(Е) 1 - г, 2 - г, 3 - г, 4 - г

8. Рассмотрим следующую грамматику в нотации BNF. Нетерминальные символы грамматики - <s>, <t> и <w>. Терминальные символы @, !, # и а . Начальный символ - <s>

         <s> ::= <s> @ <t> |<t>

     <t> ::= <w> ! <t> | <w>

     <w> ::= # w | a

Грамматика определяет простой язык выражений с операторами @, ! и # и операндом а.

Требуется привести все предложения языка (т. е. строки, состоящие только из терминальных символов), состоящие из не более трех символов. Какой из следующих результатов верен:

(A) а@а, а!а, ##а.

(B) а, аа, ааа, а@а, а!а, #а, ##а.

(C) а, а@а, а!а, ##а.

(D) a, a@a, a!a, #a, ##а.

(Е) а, @а, @@а, !а, !!а, #а, ##а.

9. Для грамматики из задания 8 определить, будут ли операторы @ и ! левоассоциативными (последовательность одинаковых операторов обрабатывается или группируется слева направо) или правоассоциативными?

(A) @ и ! - оба левоассоциативные

(B) @ и ! - оба правоассоциативные

(C) @ левоассоциативный, а ! правоассоциативный

(D) @ правоассоциативный, а ! левоассоциативный

(Е) оба оператора не ассоциативны, а асоциальны

10. Для грамматики из задания 8 укажите приоритеты всех трех операторов в порядке их убывания:

(A) @ # !

(B) ! # @

(C) @ ! #

(D) ! @ #

(Е) # ! §

О тестировании в Интернете
В ответах на технические вопросы кандидатам рекомендуется потренироваться на тестовых заданиях различных серверов в Интернете. Наиболее известным и популярным среди программистов является сервер компании BrainBench (http://www.brainbench.com/), тестирование на котором, к сожалению, теперь является платным.

Демонстрация технических разработок

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

8.2.4.7. Проверка знания английского языка

Переводы как женщины: если верны, то некрасивы, а если красивы, то неверны.
Моисей Сафир

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

Пример технического текста для перевода

В качестве примера для перевода предложим текст, являющийся фрагментом стандарта языка C++ [ISO/IEC 14882:1998]:

"Ranking implicit conversion sequences.

Standard conversion sequences are ordered by their ranks: an Exact Match is a better conversion than a Promotion, which is a better conversion than a Conversion. Two conversion sequences with the same rank are indistinguishable unless one of the following rules applies:

   [Example:

            struct A {};

            struct В : public A {};

            struct С : public В {};

            С *рс;

            int f (A *);

            int f (B *);

            int i = f(pc);          // Calls f(B *)

   ]

Note: compared conversion sequences will have different source types only in the context of comparing the second standard conversion sequence of an initialisation by user-defined conversion; in all other contexts, the source types will be the same and the target types will be different".

Пример художественного текста для перевода

В качестве художественного текста предложим шуточный текст "Two Corporate Lessons".

    1. Not everyone who drops shit on you is your enemy.
    2. Not everyone who gets you out of shit is your friend.
    3. And when you're in deep shit, keep your mouth shut.

8.2.4.8. Написание простой программы и ее анализ

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

Предложим и более сложное задание, которое рекомендуется писать на командных языках утилит sed и awk. При этом информация по утилитам sed и awk должна быть доступна в виде man страниц или книги.

Имеется входной файл tests_all - список тестов с некоторыми параметрами запуска и входной файл со списком тестов в файле tests_wrong. Необходимо написать программу, которая будет формировать список строк в формате из tests_all, но только тех тестов, которые упомянуты в файле tests_wrong. Примеры файлов с исходными данными и результатом приведены в листинге 8.1.

Листинг 8.1. Пример файлов с данными к тестовому заданию

% cat tests_all

./tests/Exec4015320 Ver5.3 Intel

./tests/Exec4046953 VerS.l Intel

./tests/Exec4286851 Ver5.3 Intel Solaris

./tests/Exec4292089 Ver5.3 Intel

./tests/Exec4307633 Ver5.3 Intel Solaris

./tests/Exec4240772 Ver2.1 Intel

./tests/Exec4324693 Ver5.3 Intel

% cat tests_wrong

Exec4015320 has failed due to timeout

Exec4307633 bad, bad, very bad

Exec4324693 quite good, but lacks some info

% cat tests_result

./tests/Exec4015320 Ver5.3 Intel

./tests/Exec4307633 Ver5.3 Intel Solaris

./tests/Exec4324693 Ver5.3 Intel

8.2.4.9. Анализ чужого кода

В конце собеседования кандидату можно предложить выполнить анализ чужих программ. Например, после краткого просмотра программы в лис-гинге 8.2 кандидат должен ответить на три вопроса:

1. Что должна делать программа "prog.с"?

2. Где ошибка в программе "prog.с"?

3. Можно ли заменить макросы "GET_LONG" и "PLACE_LONG" более быстрорабо-тающими аналогами?

Листинг 8.2. Пример файлов к тестовому заданию по анализу чужого кода

% cat prog.h

#define PLACE_LONG(place, val)\

do { ((char *)place) [0] = (char) (val) ;\

((char *)place)[1] = (char)((val) >> 8);\

((char *) place) [2] = (char) ( (val) >> 16) ;\

((char *)place)[3] = (char)((val) >> 24);\

((char *)place)[4] = (char)((val) >> 32);\

"char *)place)[5] = (char)((val) >> 40);\

((char *)place)[6] = (char)((val) >> 48);\

((char *)place)[7] = (char)((val) >> 56); } while (0)

#define GET_LONG(place)\

(long long)(\

((unsigned char *)place)[0] l\

(((unsigned char *)place) [1]<<8) |\

(((unsigned char *)place)[2]<<16)|\

(((unsigned char *)place) [3]<<24) |\

(((long long) ((unsigned char *)place) [4])<<32) |\

(((long long)((unsigned char *)place)[5])<<40)|\

(((long long)((unsigned char *)place)[6])<<48)|\

(((long long) ( (unsigned char *)place) [7] )<<56) )

struct list_head {

struct list_head *next, *prev;

);

% cat prog.с

finclude

#include "header.h" int main() (

struct list_head

long long i = 1234567;

char placeholder[8];

PLACE_LONG(&placeholder, i) ;

i = GET_LONG(&placeholder);

printf("you've got: %ld\n", i);

return 0;

}

8.2.4.10. Оценка результатов собеседования

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

Можно просто суммировать все набранные кандидатом баллы, а можно ввести веса для критериев (возможно, специфичные для того проекта, в который кандидат отбирается).

По окончании собеседования на основе оценок всех членов комиссии кандидату выставляется средняя оценка и выносится предварительное решение, которое, как правило, может быть одним из следующих:

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

8.2.4.11. О дополнительных домашних заданиях

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

Пример домашнего задания

Дан файл с набором идентификаторов. Написать три программы (на языке C++):

Требования к сгенерированной программе:

О неточностях в постановке задачи
Обратим внимание, что в постановке данной задачи сознательно оставлены неточности и некорректности. Кандидат должен это отметить при работе над заданием.

8.2.5. Испытательный срок

Показывайте язык прежде, чем стисните зубы.
Ежи Лец

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

Будет полезным отправить начальнику по электронной почте составленное описание, схему и список задач на испытательный период. После внесения дополнений и изменений это описание становится отправной точкой.

В табл. 8.1 указаны процентные соотношения продолжительности испытательных сроков, которые обычно назначают работодатели (http://www.osp.ru/cw/1998/47/73.htm). В среднем около 10% кандидатов не проходят испытательного срока и заменяются другими кандидатами.

Таблица 8.1. Испытательные сроки, назначаемые работодателями

Продолжительность испытательного срока Количество назначений
1 месяц 48.3%
2 месяца 16.8%
3 месяца 31.7%
В зависимости от пришедшего кандидата 3.2%

 

8.3. Подготовка и продвижение сотрудников внутри фирмы

8.3.1. Совершенствование мастерства

Каждый человек, которого я встречаю, меня в чем-то превосходит,
и в этом смысле я могу у него поучиться.
Ральф Эмерсон

Для программистов, желающих совершенствовать свое мастерство, рекомендуются следующие методы:

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

Основными направлениями поддержки профессионального статуса являются:

Таблица 8.2. Источники информации о развитии в профессиональной области

Источники информации о развитии в профессиональной области Количество поддержавших
Благодаря журналам и другой литературе по специальности 90%
Благодаря специальным семинарам и заседаниям 58%
Благодаря тематическим совещаниям 48%

 

8.3.2. Семь ступеней мастерства

Кто прожил много лет, тот много узнал, и подчас противоречивого.
Талепран

Мейлир Пэйдж-Джонс (Meilir Page-Jones) утверждает, что в разработке программного обеспечения существует семь ступеней мастерства [Page-Jones 1990]. Эти ступени могут быть отнесены к методологии или технологии, а также языку или системе программирования. Поэтому то, к чему прилагаются эти ступени, обозначим "Ч". Попробуйте оценить, на какой из ступеней по отношению к определенным знаниям находитесь вы.

8.4. Договорная основа трудовых отношений и регулирование доходов

8.4.1. Трудовой договор (контракт)

Соотношение между временем, в течение которого работник работает, и рабочим временем есть величина постоянная и составляющая 0,6.
Дэниэл Макивор и Оспин Белл

Трудовой договор (контракт) - двухстороннее соглашение между работником и работодателем (фирмой) об условиях обмена трудового вклада работника на его вознаграждение. Трудовой договор заключается в письменном виде и предполагает подчинение работника внутреннему распорядку фирмы, установленному работодателем. Единого универсального образца трудового договора (контракта) не существует. Однако имеется определенный перечень пунктов, которые обычно присутствуют в любых типах контрактов [Цветаев 1999]:

8.4.2. Заработная плата

Нельзя иметь все сразу, поэтому начни с малого - с денег.
Януш Васильковский

Одной из основных характеристик работы является заработная плата. На величину заработной платы в области информационных систем влияют многие факторы.

Таблица 8.3. Зависимость годовой зарплаты от уровня карьеры

Специалист Уровень карьеры Величина зарплаты
Специалист по инженерии программирования

Младший уровень

41200$

  Старший уровень 59 500$
Программист Младший уровень 36 000$
  Старший уровень 52 900$
Менеджер проекта Младший уровень 78 300$
  Средний уровень 90 540$

 

Таблица 8.4. Диапазоны годовой зарплаты для уровней карьеры

Уровень карьеры Диапазон зарплаты
Младший уровень (1-я категория) 37 000 - 45 000$
Младший уровень (2-я категория) 45 000 - 60 000$
Младший уровень (3-я категория) 60 000 - 75 000$
Младший уровень (4-я категория) 75 000 - 90 000$
Средний уровень 90 000 - 120 000$
Старший уровень 120000-160000$

 

Таблица 8.5. Диапазоны месячной зарплаты для Санкт-Петербурга

Уровень карьеры Диапазон зарплаты
Младший уровень 300-1100$
Средний уровень 900-2100$
Старший уровень 1900-3100$

 

Таблица 8.6. Зависимость годовой зарплаты от уровня карьеры (пример другого географического положения)

Специалист Уровень карьеры Величина зарплаты
Специалист по инженерии программирования Младший уровень 37 600$
  Старший уровень 52 500$
Программист Младший уровень 33 900$
  Старший уровень 48 200$
Менеджер проекта Младший уровень 72100$
  Средний уровень 81 600$

 

О зависимости заработной платы от географического положения компании в России
Тенденция зависимости заработной платы от географического положения компании в России выражена гораздо ярче по сравнению с США: в Москве зарплата в 2-3 раза выше, чем в Санкт-Петербурге. В других регионах России зарплата может быть в 2-5 раз ниже, чем в Санкт-Петербурге.

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

8.5. Сотрудник в коллективе

8.5.1. Философия и стратегии программистских коллективов и организаций

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

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

Практически все крупные компании пропагандируют свою корпоративную культуру в книгах (например, "Билл Гейтс и сотворение Microsoft" [Ичбиа, Кнеппер 1997]), или, по крайней мере, на своих страницах в Интернете (например, информация компании Sun Microsystems (http://www.sun.com/aboutsun/coinfo/history/html)). Рекламой своей корпоративной культуры компания может привлечь большое количество квалифицированных новых сотрудников.

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

8.5.2. Формы власти и стили руководства

Как хорошо, что дырочку для клизмы имеют все живые организмы!
Н. Заболоцкий

Власть представляет собой реальную способность субъекта действовать или возможность влиять на ситуацию. Она отличается от полномочий, которые представляют собой право использовать ресурсы и сотрудников компании. Этот раздел дополняет информацию о процессе управления, которая уже рассматривалась в разд. 3.2.2.

8.5.2.1. Вертикальная координация власти

Вертикальная координация (централизованное управление) - соблюдение (или стремление к соблюдению) всех формальных правил бюрократической организации. Макс Вебер сформулировал следующие основные признаки бюрократической организации [Цветаев 1999]:

О негативных последствиях бюрократизации
Один из наиболее известных недостатков бюрократической организации известен как закон Паркинсона: всякая административная единица склонна жить для самой себя и увеличивать как объем своих задач, так и число работников, необходимых для их выполнения.

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

8.5.2.2. Дискреционная власть

Дискреционная власть - власть исполнителя поступать по своему усмотрению. Она самостоятельно берется нижними подразделениями фирмы или работниками.

Несколько примеров такой власти:

8.5.2.3. Горизонтальные структуры власти

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

8.5.3. Паковщики и картостроители

Дороже всего люди расплачиваются за то, что пренебрегают банальными истинами.
Ф. Ницше

Необходимость объяснения причины того, что некоторые программисты на порядок, а то и на несколько порядков, более полезны, чем остальные программисты в коллективе, привела к появлению теории паковки и карто-строения. Картер и Сандер (http://progstone.nm.ru/) в работе "Программистский камень" считают, что программирование - это картостроение - процесс исследования возможностей системы, природы задачи и желаний, а затем перенос результатов исследования на язык программирования. Картостроение - это стратегия, альтернативная паковке - социально обусловленному общепринятому мышлению. Решение проблемы картостроителем приводит к красивым, компактным, элегантным программам, в которых нет места для ошибок. Практически существуют два отдельных состояния ума вокруг нас.

Установить, насколько хорошо личность умеет мыслить, достаточно сложно. Это можно сделать лишь в неторопливых беседах или после длительного рассуждения. Более того, часто способность мыслить пресекается взрослыми в детях, когда они пытаются размышлять и задают вопросы в попытке что-либо понять. В результате в среде программистов можно выделить две различные группы. Картостроители в основном придерживаются стратегии познания, как распространения и интеграции мысленных карт, а затем получения решения на их основе. Они быстро находят методы достижения своих целей, сверяясь со своими картами. Паковщики, оставаясь в большинстве, встают на путь накопления пакетов знаний. Их единственная цель - выполнить "правильное" действие.

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

8.5.4. Соционический портрет программиста

Инструкция для биологов по проведению опытов над мышами:
1. Возьмите мышь.
2. Подготовьте мышь к опыту.
3. Полученную кашицу...
Биологический фольклор

8.5.4.1. Введение в соционику

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

Методика основана на выделении концентрированно выраженных и легко узнаваемых типов личности. Основы методики созданы швейцарским психологом Карлом Густавом Юнгом (Carl G. Jung), а развита и усовершенствована она была в работах литовской исследовательницы Аушры Аугустинави-чуте [Филатова 1993].

Экстраверт, по определению Юнга, - это человек, чья деятельность направлена на объект и определяется этим объектом. Такой человек имеет тенденцию к направленному взаимодействию с внешней средой. Интраверт ориентируется на свою оценку предмета или события, а не на объект как таковой. Юнг выделил четыре базовых области восприятия: материя, энергия, пространство и время (иначе - логика, этика, сенсорика, интуиция). Им соответствуют следующие типы личности: мыслительный, эмоциональный, ощущающий и интуитивный.

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

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

8.5.4.2. Пример соционической характеристики программиста

Приведем пример развернутой характеристики программиста по максимальной и пограничной сфере профессиональной адаптации.

Ковалевская Софья Васильевна (сенсорно-логический экстраверт)

Сфера естественной информационной специализации и максимальной профессиональной адаптации

Прекрасно ориентируется в качестве объектов, с которыми сталкивается по работе. Знает достоинства и недостатки оборудования, в вариантах его конкретного производственного использования. Имеет прекрасную зрительную память. Способна очень качественно выполнять большие объемы работ, требующих напряжения. Видит рабочие возможности окружающих, в том числе и их недостатки. Целесообразно использовать для проверки качества выпускаемого программного продукта, доведения его до состояния, удобного для промышленного использования.

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

Пограничные способности

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

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

Не рекомендуемое использование

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

Особенности взаимодействия с коллективом

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

Наилучшие сочетания для совместной работы

Интуитивно-логический интроверт и интуитивно-логический экстраверт.

Не рекомендуемые сочетания

Этически-сенсорный интроверт и этически-интуитивный интроверт.

ЛИТЕРАТУРА

Лучшая книга по программированию для непрофессионала -
"Приключения Алисы в стране чудес", поскольку это лучшая
книга для непрофессионала в любой области.
Алан Дж. Перлис

1. Дубейковская 2000 - Дубейковская Я. С. Стоп. Кадры!: Управление персоналом для умных. - Екатеринбург: Изд-во Уральского университета, 2000.

2. Ичбиа, Кнеппер 1997 - Ичбиа Д., Кнеппер С. Билл Гейтс и сотворение Microsoft. - Ростов-на-Дону: Изд-во "Феникс", 1997.

3. Карнеги 1991 - Карнеги Д. Как завоевывать друзей и оказывать влияние на людей. - М.: Прогресс, 1991.

4. Кэролл 1990- Кэролл Льюис. Приключения Алисы в стране чудес. - М.: Наука, 1990.

5. Овсянко 1999 - Овсянко Д. В. Основы менеджмента: Учебное пособие. - СПб.: Изд-во Санкт-Петербургского университета, 1999.

6. Пиз 1992 - Пиз А. Язык жестов. - Воронеж: НПО "МОДЭК", 1992.

7. Психология 2000 - Психология менеджмента: Учебник / Под ред. проф. Г. С. Никифорова. - СПб.: Изд-во Санкт-Петербургского университета, 2000.

8. Соломенчук 2002 - Соломенчук В. Г. Как сделать карьеру с помощью Интернета. - СПб.: БХВ-Петербург, 2002.

9. Успенский 1977 - Успенский Э. Н. Крокодил Гена и другие сказки. - М.: Детская литература, 1977.

10. Ушаков 1999 - Ушаков А. А. Особенности национальной карьеры. - М.: ЗАО "Бизнес-школа "Интел-Синтез", 1999.

11. Филатова 1993 - Филатова Е. С. Соционика для Вас. - Новосибирск: Сибирский хронограф, 1993.

12. Ходяченко 1999- Ходяченко В. Б. Маркетинг: Учебное пособие. - СПб.: Изд-во Санкт-Петербургского университета, 1999.

13. Холопова, Лебедева 1995- Холопова Т. И., Лебедева М. М. Протокол и этикет для деловых людей. - М: ИНФРА-М, 1995.

14. Цветаев 1999 - Цветаев В. М. Кадровый менеджмент: Учебное пособие. - СПб.: Изд-во Санкт-Петербургского университета, 1999.

15. Clifton 1995- Mitchell H. Clifton. Self-Assessment Procedure XXIII: Programming Languages. // Communication of the ACM. Vol. 38, No. 5. May 1995.

16. Conger 1994 - Conger, Sue A. The New Software Engenering. Wadsworth Publishing Company, 1994.

17. ISO/IEC 14882:1998 - ISO/IEC 14882: 1998 Programming language C++. International standard.

18. Page-Jones 1990- Meilir Page-Jones. The Seven Stages in Software Engineering. // American Programmer, July-August 1990.

19. Salary 1996 - Salary Survey. How much is your job worth? // Future Outlook, 1996.

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

технологии программирования   к оглавлению   к высокоуровн. языкам - 3GL   к визуальным средам - 4GL

Знаете ли Вы, что диаграмма последовательности, Sequence diagram - это методология объектно-ориентированного проектирования, предназначенная для моделирования взаимодействия во времени. Диаграмма последовательности позволяет отслеживать поведение взаимодействующих групп объектов.

Bourabai Research Institution home page

Боровское исследовательское учреждение - Bourabai Research Bourabai Research Institution