Существует миф, что сфера информационных технологий - сфера простая, легкая, но денежная. Не будем спорить, в сфере действительно есть деньги, и это не секрет. Другой вопрос, легко ли в этой сфере, и если да, то кому.
Правильный ответ - никому. В каждой профессии здесь приходится долго и много работать, и работать напряженно. На многие должности претендуют несколько людей, за многими специалистами и их производительностью труда наблюдает целый спектр менеджеров различных звеньев, иногда даже из разных стран, и прохлаждаться в IT удается крайне редко.
МИФ: В АйТи легко и просто.
Практически каждый специалист, работающий в IT, гораздо чаще, чем специалисты других областей, работает на пределе своих возможностей, и постоянно расширяет эти пределы.
Другой вопрос, что у каждого свои пределы и свои возможности, и каждый должен выбирать себе профессию по своим задаткам.
Сегодня мы рассмотрим профессии в IT и попробуем разобраться, что из себя представляют задачи специалистов этих профессий и какие качества требуются для успеха в каждой конкретной профессии.
Для того, чтобы любой специалист мог начать нормально работать в компании, компании нужно либо иметь деньги, либо иметь договоренности про получение денег. Деньги обычно берутся из двух источников: инвесторы и клиенты. Инвесторы, как правило, инвестируют в продуктовые компании, а клиенты заказывают у аутсорсных или просто девелоперских компаний. Бывают различные виды пересечения и совмещения типов компаний, но в любом случае основой работы является проект, который приносит деньги.
Проекты в компанию "заводит" sales manager. Менеджер по продажам. Кто это такие? Это обязательно отлично выглядящие люди, которые производят впечатление успеха. Это люди, проводящие большую часть своего времени в общении с клиентами и поиске других потенциальных клиентов.
К сожалению, sales manager-ам часто приходится выслуживаться перед клиентами, выслушивать многочисленные жалобы как со стороны клиента, так и со стороны команды, с ним работающей, обещать то, чего быть не может или что очень сомнительно, и решать постоянно возникающие сложности.
Sales manager должен обладать прекрасным разговорным и письменным английским языком, уметь находить общий язык даже с самыми сложными людьми и решать даже самые сложные проблемы коммуникативного характера.
Страдания:
- доступность: нужно быть доступным в любое время дня и ночи;
- "жилетка для клиента": нужно терпеть самые странные и долгие изливания клиента, нужно постоянно вовлекаться в различные проблемы общения и отзываться на них;
- сроки: постоянный прессинг от руководства, нужно заводить проекты быстрее, быстрее и быстрее;
- выхлоп: очень много усилий и очень мало результата, сотни писем и единицы ответов.
Дальше за проект берется менеджер проектов (Project Manager). Он общается с представителями заказчика с одной стороны, и производством с другой стороны. Распределение ответственности между представителями производства, ответственность как перед заказчиком, так и перед командой разработки, да еще и перед руководством компании.
Страдания:
- доступность: как и sales, pm-у иногда необходимо быть доступным в любое время дня и ночи для контакта с заказчиком и командой;
- мотиватор: решать проблемы мотивации команды, собирать негатив с трех сторон, выдавать позитив в три стороны;
- сроки: у проекта есть дедлайн, и задача ПМ-а - успеть до него, качественно и правильно, отсюда постоянное давление фактора времени.
Наймом персонала занимаются рекрутеры. Их работа представляет собой бесконечный поиск специалистов различных профилей в сжатые сроки и с размытыми требованиями. Типичный запрос к рекрутерам: "нам к концу недели нужны два крутых джависта, посмотри по требованиям, что там в трендах...". В те дни, когда у рекрутера нет открытых вакансий или уже заканчиваются возможности для поиска людей, хороший рекрутер наполняет базу знакомых специалистов, которых можно позвать на работу в случае потенциального аврала, изучает технические термины, следит за трендами, посещает конференции и любым другим способом вливается в АйТи субкультуру.
Страдания:
- сроки: зачастую необходимо найти подходящего спецалиста в очень сжатые сроки;
- отношение: рекрутеров редко воспринимают частью команды, чаще как вспомогательный персонал, несколько свысока;
- расплывчатые требования: постоянно приходится выяснять, кого конкретно искать, почему вот этот парень подходит, а вот этот нет, и так далее.
Задачи программиста описываются просто - они должны писать программный код, быстро и качественно. При помощи этого кода они должны либо создавать новые элементы проекта, либо исправлять существующие проблемы проекта, либо поддерживать его работоспособность. Так же программисты:
- проектируют архитектуру проекта или отдельных его элементов
- планируют и оценивают длительность(за сколько часов) и продолжительность (в течении какого времени будут потрачены эти несколько часов) выполнения поставленной задачи
- выполняют код ревью работы друг друга
- пишут документацию про проекту и конкретным фичам проекта
- составляют различные отчеты
- пишут юнит-тесты
- настраивают системы и программы для совместной работы (реже)
Страдания:
- сроки: работа часто происходит в условиях жесткого дедлайна;
- постоянно присутствует необходимость обучаться, сложно найти более развивающуюся и динамичную сферу;
- весомое количество нетехнических людей пытается рассказать, как, когда и зачем программисту выполнять его работу;
- постоянно необходимо с кем-то что-то обсуждать, иногда даже некогда работать, а результатами работы редко довольны;
- распространена ситуация, когда результаты длительной работы в итоге не принимаются и отбрасываются в сторону.
Тестировщики, Quality Assurance и Quality Control. Люди, прекрасно умеющие обнаруживать проблемы. В основном в том, что сделал кто-то другой :)
Все этии люди тем или иным образом проверяют насколько качественно и в соответствии с требованиями написан код и работает программа (сервис, приложение etc.)
Почему так много букв и в чем разница?
QA специалисты занимаются не самой проверкой качества, а подготовительными и организационными процессами. К примеру, QA составляют документацию, по которой следует проверять ПО. QC специалисты, собственно, проверяют ПО в соответствии с документацией от QA.
Страдания:
- непостоянная и неконтролируемая нагрузка;
- монотонная и скучная работа, но это не точно;
- сложные отношения с программистами;
- чем лучше ты работаешь, тем меньше тебя любят коллеги, чем хуже работаешь - тем меньше ценит клиент.
Human Resources manager - менеджер по кадрам - сложная и многогранная профессия. HR специалисты интегрируют и адаптируют свеженабранный персонал, контролируют настроения рабочего коллектива в целом и настроение каждого члена коллектива. Идеальный HR знает о желании разработчика уйти до того, как оно возникает у разработчика. В ведении таких специалистов так же пересмотр зарплат, организация обучения и карьерного продвижения специалистов и многое многое другое.
Страдания:
- "жилетка для сотрудников": HR должен знать о проблемах сотрудников и помогать искать способы их решения, это часто приводит к "изливаниям горестей";
- отношение: HR, как и рекрутеров, редко воспринимают частью команды, чаще как вспомогательный персонал, несколько свысока;
- много дел: огромный спектр мелких, средних и крупных обязанностей, не всегда понятно, за что хвататься;
- сроки: от решения конфликта в команде до проведения корпоратива - большинство задач ставятся одновременно и на вчера.
Существует ряд задач, которые ставят в тупик даже довольно продвинутых программистов. В частности, к таким задачам относятся сложные переустановки операционных систем, настройка совместной работы различных программ, перенесени продукта на другой сервер или группу серверов и многое другое. На случай подобных задач в компаниях есть сисадмины или компания приглашает знакомого сисадмина. Сисадмин - системный администратор - занимается установкой и настройкой программ на профессиональном уровне.
А что же такое ДевОпс, DevOps? Это человек, оптимизирующий процесс разработки. Расшифровывается DevOps как Development Operations (Engineer). Как правило, так называют человека, который работает на стыке сисадминства и программирования. Занимается он настройкой и оптимизацией процесса разработки программного обеспечения. К примеру, программист может написать хороший код, но не знает, как это будет работать на сервере у клиента, сисадмин может настроить сервер у клиента, а девопс дочистит за программистом код таким образом, чтобы тот заработал не только на сервере клиента, но на подбавляющем большинстве доступных серверов.
Страдания:
- Мало известных заранее задач и множество задач, решения которых никто не знает;
- Если сисадмин или девопс хорошо поработал довольно продолжительное время - ему становится нечего делать, все работает само, отсюда странные циклы то постоянной чрезмерной загрузки, то скуки и отсутствия задач;
- Возможны авральные работы в любое время дня и ночи;
- Первые места работы у сисадминов обычно далеки от идеальных.
Существует заблуждение, что дизайнеры - это художники. Такое случается, но это не правило, скорее художники видят дизайн как один из естественных путей своего развития. Дизайнер комбинирует существующие элементы дизайна, шрифты, темы, элементы внешнего вида из различных наборов, иконки, создает новые элементы и изменяет существующие. Дизайнер изучает тренды внешнего вида продуктов, как электронных, так и обычных, дизайнер изучает реакции пользователей на нововведения, диайнер - своего рода инженер внешнего вида. Вдохновение и творчество в их работе присутствует, но не на 80%, как кажется неискушенному обывателю, а на 20%, остальное - знания, опыт, наработки, пожелания клиента.
Страдания:
- Клиенты и заказчики достаточно часто имеют вкус, отличный от вкуса дизайнера, и требуют внешнего вида продукта, который не согласуется с пониманием прекрасного или даже удовлетворительного у самого исполнителя;
- Довольно распростаненный сценарий, когда заказчик не может сформулировать свои пожелания, и дизайнеру приходится угадывать пожелания раз за разом;
- Многие работы не принимаются или принимаются после огромного количества переделок.
Каждый выбирает то, к чему его тянет. Каждый может найти среди всего упомянутого ту профессию, которая покажется ему или ей скорее интересной, чем сложной, а среди выписанных "страданий" - те, которые покажутся скорее приятными сложностями, нежели проблемами.
Статическая типизация означает, что тип переменной определяется изначально и остается неизменным до конца программы. Если переменная изначально объявлена контейнером для целых чисел, в ней могут находиться только целые числа.
Динамическая типизация означает, что одну и ту же переменную можно сначала инициализировать строкой, потом числом, потом булевым значением, и так далее. Таким образом тип переменной определяется ее значением на текущий момент времени.
Сильная (строгая) типизация не позволяет языку программирования игнорировать разницу между типами данных операндов.
Слабая (нестрогая) типизация позволяет языку вольно интерпретировать тип переменных для их взаимодействия, язык сам меняет тип переменной в зависимости от ее использования. К примеру, если прибавить к числу строку, в которой записано число, язык автоматически прибавит число, находящееся в строке.
Блок-схемой называется графическое представление алгоритма. В блок-схеме шаг или последовательность шагов алгоритма представляется в виде блока, а между блоками устанавливаются связи.
Начало и конец алгоритма изображаются скругленными прямоугольниками, обычные действия - прямоугольниками, условия - ромбами, ввод и вывод данных - параллелограммами. Для более подробного ознакомления с блок-схемами читайте википедию на эту тему, и см. правило 2.
Для примера построим блок-схему алгоритма подбора преподавателя на курсы A-Level Ukraine :)
Рекомендуется использовать Google Drawings (для этого создаем почту gmail, заходим на google drive, new->more->google drawings document)