Дорогие читатели!
В прошлый раз я опубликовал материал, посвященный выбору профессии, в сфере IT. Честно скажу, не ожидал такого ажиотажа именно на ту статью. Поэтому, сегодня продолжаем начатый разговор, раз тема пользуется спросом. Как всегда, рад отзывам и оценкам. Готов ответить на вопросы или обсудить материал - он делается для вас!
Программисты - космонавты наших дней
Мне доводилось слышать такое меткое выражение, что программисты - это космонавты наших дней. В какой-то мере это действительно так, поскольку информационные технологии занимают всё большую и большую часть нашей жизни, экономики. Основные деятели здесь действительно программисты: они именно те, кто на самом острие прогресса в области цифровизации и автоматизации. Только не забывайте, что для того, чтобы отправить одного человека в космос, требовалась слаженная работа целых коллективов здесь, на земле.
В прошлой статье я рассказал вам про "наземных работников", про "обслугу" (простите, если это кого-то заденет, но говорю уж как есть). В этот раз поговорим о лётном экипаже: программисты (они же разработчики), архитекторы, тестировщики, системные аналитики. Коснусь, вскользь, еще нескольких профессий, которые подробно всё же лучше описать в грядущей третьей части сего большого материала. Также добавлю, что я не касаюсь здесь смежных профессиональных областей (например, разработка компьютерных игр), у которых к основной ИТ-шной работе может добавляться значительный пласт своей специфики. Нет, наверное всё же коснусь, но очень кратко, чтобы было понимание... Впрочем, обо всём по порядку. Начнём с главных героев - разработчиков.
Программисты - разработчики
Программистами еще каких-то 10-15-20 лет назад часто называли далёкие от темы вообще всех IT-шников. Ненавижу слово "айтишник", т. к. оно обесценивает наш труд, хотя уже и устоялось. Вот слово "компьютерщик" больше подойдет. Оно показывает, чем мы занимаемся, да и как-то посолиднее звучит.
Программист - это тот, кто создаёт, как еще говорят, разрабатывает, программы и более комплексные решения на основе информационных технологий. Это тот человек, который переводит нечто из мира идей в компьютерный код, понятный компьютеру и человеку; это специалист, который реализует идею в виде компьютерной программы. Вот, пожалуй, наиболее краткое и емкое определение. Программисты между собой, подразделяются на разные категории и классы. Отдельные "подразделения" вылились в наши дни в отдельные профессии. Должен сразу отметить, что еще 20 лет назад прораммисты занимались действительно большим количеством задач, не совсем свзяанных с непосредственной разработкой: работали с заказчиками, писали задание на разработку, занимались приёмкой решения, технической поддержкой, администрированием (во всех смыслах). Было конечно и тогда разделение труда, но ещё не настолько яркое. Потом пошла тенденция, что требуется специализация. На серьезных проектах действительно стало происходить деление на разные роли (о них сегодня и пойдёт речь), порой даже довольно жёсткое. Однако в наши дни, последние годы, намечается новый тренд: прокачка T-Shape навыков. Грубо говоря, все специалисты, задействованные в разработке программ и решений (не только программисты) должны учиться и стремиться к навыкам друг друга, не замыкаться на своих ролях. Вообщем, возвращаемся к тому, что было 20 лет назад, но в обновлённом виде. Пока что процесс этот в начальной фазе, но всё к этому идёт.
Деление: Между собой программисты делятся по разным критериям. Самых главных критериев несколько, буду называть их не в порядке важности, а просто, в порядке перечисления. Один из главных критериев - среда разработки и язык программирования. Грубо и коротко говоря, это инструменты, на которых создаются компьютерные программы. Правда сейчас редкое решение пишется на каком-то одном языке прораммирования. Как минимум, два-три языка знает каждый средний программист. На деле, в своей карьере они могут касаться и большего количества инструментов, но обычно при работе над проектом используется 2-3 основных инструмента. Не могу сказать, что лучше знать какой-то определенный язык, а другого не касаться. Это неправильный подход. Успешный разработчик должен уметь быстро освоить новый язык, даже если раньше его в глаза не видел. В идеале, освоить одновременно и по мере решения своих задач. Но это всё идеалы. Чаще бывает ситуация, что люди зацикливаются на определенных технологиях и работают в них годами. По мне, это неправильный, хотя и оправданный подход. Он работает, но несёт свои издержки.
Ещё программисты подразделяются по "опытности". Есть даже устоявшиеся термины в IT: Junior (по-русски называют "джун" - это начинающий разработчик в какой-то области, либо вообще); Middle ("миддл" - середнячок. Уже имеет опыт работы с определенным языком, технологией, но еще не настолько прокачаны навыки, чтобы давать экспертное мнение и т. п.); Senior ("сеньёр" или "синиор" - опытный разработчик, эксперт в своей области). Тут думаю, всё понятно. Правда, есть много феноменов чисто психологических, свзяанных с этими критериями. Дело в том, что градация очень условная, порождает, попутно, массу проблем и т. п.
Есть еще деление на "системных программистов" и "прикладных программистов". Не могу сказать, что в наши дни оно столь яркое, но еще может сохраняться в отдельных областях. Коротко, системщики разрабатывают серьезное программное обеспечение, драйверы, системы (типа Windows), программы для электроники и многое, многое подобное. Прикладные программисты, извиняюсь за тафтологию, занимаются прикладными задачами. Например, задачами для бизнеса, для той специфики деятельности, для которой решение создаётся. Они могут лучше разбираться в этих сферах, чем в каких-то чисто компьютерных темах.
Также есть деление, связанное с дополнительными ролями и спецификой проекта. Отчасти, некоторые разработчики, если занимаются командной работой, могут брать на себя управленческие функции и координацию. Также может быть разделение на функциональные блоки проекта. Скажем, если разрабатывается комплексное веб-решение, то может быть 2 или 3 роли: разработчик фронта (того, что видят пользователи; веб-сайт, в просторечии. Это называется Frontend), разработчик бэка (то, что происходит на сервере, обычно пользователи самого процесса не видят, только догадываться могут. Называется backend). Еще возможна какая-нибудь промежуточная часть, интеграция с другими системами, базами данных и т. д.
Начальная подготовка для входа: всё сложно. Допустим, писать какой-то простенький программный код могут и в школе научить, на информатике. Вот реально сложного ничего нет! Если люди понимают математику худо-бедно, физику там, химию; если их формулы не напугают - такие научиться создавать простые программы смогут. Однако свяжут ли такие люди свою жизнь с программированием, с разработкой, с IT? Мой опыт показывает, что люди ВУЗы заканчивают по специальности "разработка программного обеспечения", но разработчиками из них становятся единицы. Большинство идёт в смежные области, в том числе те, что описывались в прошлом материале.
Связано это всё с особенностями психотипа, который максимально благоприятствует тому, чтобы человек стал разработчиком.
В любом случае, если человек молод, то не так много препятствий, чтобы стать разработчиком, Junior-ом. Да, нелегко может быть с поиском первой работы, но откровенно скажу, есть те, кто готовы учить на рабочем месте. Если же говорить о переквалификации, то про это я еще напишу ниже.
Перспективы роста: зависит от человека. Как правило, первые годы, разработчик впитывает в себя всё как губка, хотя и страдает от того, что ему кажется, что он далеко не всё знает, что есть кто-то умнее его и т. п. Потом наступает период, когда либо застреваешь в какой-то сфере, либо развиваешься дальше. В целом, перспективы роста хорошие, в плане финансов, в плане горизонтального развития, но не очень хорошие, если есть желание развиваться вертикально! Про это мало говорят, но у разработчиков есть определенный потолок и в зарплатах, и в должностях. Можно перейти на другой уровень, но разрабатывать софт, кодить, вряд ли уже будешь. Если учесть, что многих этот процесс затягивает, то сталкиваемся с фактором, ведущим потенциально к серьезным психологическим и личностным проблемам. Про это нужно писать отдельно. В любом случае, если тебе сейчас 18-22 года, заканчиваешь потихоньку институт, то ближайшие лет 8-10 вряд ли эта проблема встанет остро. Всё будет наоборот, очень интересно и приятно, в том числе финансово.
Как правило, отсюда вырастают в старшие разработчики (эксперты), в ИТ-менеджеры (частое явление, если хотят повысить ЗП, да и самого человека в организации; минус - кодить уже почти не будешь); в системные архитекторы.
Но... некоторые на выходе уходят в свой бизнес. Отдельная тема, про которую еще расскажу в других материалах
Плюсы и минусы: пока что, эта работа не так сильно подвержена кризисам в экономике, как другие. Правда, до поры до времени. Это условный плюс. Второй плюс - достаточно хорошие зарплаты, если брать в среднем по стране, по тому или иному региону. Третий плюс - как правило, по мере развития карьеры, доведется столкнуться с очень многими и интересными сферами деятельности (у заказчиков, у организации, где работаешь). В них можно неплохо попутно прокачаться. Например, разрабатывая решения для банальной бухгалтерии, можно многое узнать о тонкостях бухгалтерского учёта, видах документов; в какой-то момент уже очень хорошо понимаешь процессы и предметную отрасль. Четвёртый плюс - близость к начальству, к руководителям бизнеса. Дело в том, что они часто координируют работу IT. Работая в каком-нибудь другом подразделении, не так часто увидишь того же генерального директора у себя, а вот работая в IT - запросто. Это может дать определённые преимущества. Другое дело, воспользуется ли ими человек?
Минусы - работа исключительно сидячая, порой довольно нервная. Отсюда проблемы со здоровьем, весом и т. д. Конечно, у многих офисных работников могут быть такие проблемы, но у разработчиков есть специфика - они могут напряженно работать над какой-нибудь темой, затрачивать уйму усилий на решение проблем. Такие проблемы, как тильт, о котором я писал в отдельном материале - это про разработчиков.
Еще один минус, о котором я уже говорил, это потолки в зарплатах и развитии в организации. Если в каких-то организациях и отраслях считается нормой работать по 20-30 лет, без перемены места работы, то это не про разработчиков точно. Считается, что если работаешь 5 лет на одном месте, то надо менять работу. Не все готовы, но это нужно делать.
Ну и должен отметить, что есть пласт психологических проблем у разработчиков, которые связаны с описываемыми выше минусами
Требуемые личные качества: усидчивость; способность концентрироваться на задаче; желание и возможность очень много учиться (постоянно) и практиковаться; психическая устойчивость
Как и кто обычно становится: часто, студенты соответствующих специальностей. Хватает молодых самоучек, правда это несёт за собой определенные проблемы, связанные с общей квалификацией и развитием в организации.
Есть возможность переквалифицироваться из другой специальности, в том числе уже в более зрелом возрасте. Сейчас появилось много школ в интернете с примерно такой заманухой: "пройдите обучение в школе и получите зарплату в 100К+ рублей через полгода". Очень опасная приманка, на которую многие клюют. Невозможно, какой бы крутой школа не была, за короткий период прокачаться до такого уровня. К сожалению, это уже породило большое количество проблем, связанных с хайпом в этой теме. 100К может быть и будут, но не через полгода. Все равно придётся побыть какое-то время зелёным джуном, решать простые задачи. Морально будет сложно, т. к. если молодым ребятам многие готовы помогать, то более старым, по возрасту, уже не столь охотно. При этом будете на одном уровне с ними, в том числе по зарплате.
Ещё программистами становятся выходцы из других ИТ-профессий. Это не так часто происходит, но бывает. Я был свидетелем таких штучных явлений. Как правило это те, кто реально задался целью, много и упорно занимался.
Возможные организации: любые. Тут идёт разделение не столько по размеру организации, сколько по признаку, является ли организация IT-шной (контора по разработке программного обеспечения, консалтинговое агентство, студия программистов и т. п.), либо занимается каким-то другим основным видом деятельности. Если деятельность связана с чем-то информационым (банки, страховые компании, информационные агенства, интернет-проекты, в том числе торговые), то как правило такая организация по отношению к разработчикам, да и IT в целом, будет почти как чисто IT-шная. Если же деятельность не связана напрямую с информацией, с компьютерными технологиями, то привыкайте, что к вам будут относиться как к обслуге (в худшем случае, как к челяди). Да, зарплата может быть вполне рыночной, но общий фон и отношение будут без должного пиетета. В торговой организации в почёте будут менеджер по закупкам или специалист по продажам, но никак и никогда не программист. Даже если создашь для них Святой Грааль, дающий золото!
Системные аналитики
Не буду сильно расписывать здесь всё по каждому пункту, как у разработчиков, благо многое совпадает. Отмечу некоторые особенности и разницу.
Коротко, системные аналитики занимаются тем, что изучают поставленную задачу, общаются с заказчиком, задают уточняющие вопросы по заданию, по специфике процесса. Затем, они ставят задачу непосредственно разработчику. Грубо говоря, переводят с языка заказчика на язык, полностью понятный "технарю". Системные аналитики должны обладать навыками как в предметной области, так и в ИТ. При этом, крайне желательно, хорошо владеть языком: письменным и устным.
Системные аналитики также занимаются приёмкой того, что создали программисты. Частично, занимаются тестированием, проверкой результата. Далее, они представляют полученный результат заказчикам, отчитываются перед ними. Должен еще сказать, что системный аналитик часто может заниматься настройкой программ, конфигурацией решения. Даже какой-то небольшой код может им писаться программный. Однако всё же их прерогатива больше - заказчик и задание.
Могут быть разновидности: консультант по решениям; методист; специалист по работе с клиентами. Например, SAP и 1С предполагают при разработке парное участие аналитика (он часто называется консультант) и разработчика. Грань между ними бывает очень тонкой, но всё же один больше занят бизнес-процессом и заказчиком, а второй - техническими аспектами.
Как правило, путь в аналитики шире и проще, чем в разработчики. Многие специалисты по поддержке дорастают до аналитиков. Также, сюда могут переходить специалисты из своей области бизнеса. Например, бывшие бухгалтеры могут стать консультантами по SAP или 1С. Да, у них не будет таких хороших знаний по ИТ, как у разработчиков, но гораздо быстрее они договорятся с заказчиками.
Как это не странно звучит, но иногда зарплаты аналитиков могут быть побольше, чем у чистых технических разработчиков. Также, разработчики могут вырастать в аналитиков, если специфика деятельности это предполагает.
Плюсы и минусы примерно как у разработчиков. Добавлю, правда, что потолки здесь могут быть повыше, но при условии, что человек не зацикливается на предметных областях, развивается и т. д. Здесь требуется больше гуманитарных навыков, чем технических
Архитекторы
Архитекторы в ИТ - это серьезная профессия. Это не менеджер, но и не аналитик, и не разработчик. Есть два вида архитекторов: системные архитекторы и архитекторы решений. Правда, грани очень тонкие, поэтому на них заостряться не будем.
Архитекторы занимаются тем, что на большую проблему придумывают большое решение. Не в смысле, кодят (хотят могут писать программы, на каком-то высоком уровне; более детальные вещи пишут уже непосредственно разработчики), и не в смысле, пишут задания (этим всё же занимаются аналитики), сколько решают поставленную задачу в глобальном, но при этом и абстрактном смысле. Чтобы было понятнее, они прикидывают, как решить ту или иную поставленную задачу. Прописывают примерные планы: надо сделать то-то и и то-то для решения, но есть вариант сделать по-другому (с такими-то вытекающими); надо применить здесь такую-то технологию, а здесь лучше другую (и тут выясняется, что у заказчика денег на применение технологии нет... или как вариант, нет квалифицированных сотрудников в этой области). Где-то архитектор может очень хорошо знать предметную область, а где-то - техническую. Архитектор может знать, например, что подобное раньше в организации решалось, а значит велосипед ранее изобретать не надо. Ну и очень часто, разработчики и аналитики бегают именно к архитектору за советами
Как правило, архитекторами становятся аналитики или разработчики, достигшие экспертного уровня. Очень часто, многие не хотят становиться чистыми управленцами, еще хочется жить бок о бок с разработкой, с технологиями, но при этом хочется роста. Таких делают архитекторами для компромиссного решения. Поэтому, с нуля и сразу в архитекторы не попасть, потребуется проработать какое-то количество времени в программистах, в аналитиках, реже в сис. администраторах, а также поучаствовать успешно в нескольких проектах, прежде чем зайдет речь о переводе в архитекторы. Потребуется также дополнительное обучение, но это необязательно. Ну и как правило, зарплаты у них выше, чем у разработчиков и аналитиков. В среднем, разница может составлять до 2-3 раз. Ответственности тоже добавляется, т. к. срыв проекта - это серезные убытки для заказчика.
Тестировщики
Тестировщики, они же специалисты по тестированию решений, являются друзьями аналитиков и разработчиков, хотя порой на первый взгляд, так и не кажется. Коротко, их работа заключается в тестировании программ, поиске багов, в приёмке решений. Также, они могут дополнительно читать составленное аналитиком задание, громить его в пух и прах, а также писать к нему так называемые тест-кейсы: случаи использования программы при таких-то входных параметрах, где проверяется, что получается на выходе.
Обычно тестировщики действуют как потенциальный пользователь программы, но внимательно докапываются до каждой мелочи, описывают её. Их забота - качество решения, минимизация ошибок.
В принципе, в тестировщики дорога открыта очень многим людям. Достаточно быть очень хорошим и продвинутым пользователем, быть очень внимательным и дотошным, обладать навыками хорошей и грамотной письменной и устной речи. Но чаще, конечно, становятся те, кто чему-то учился в области ИТ, либо у кого есть какая-то подготовка в этой теме. Сейчас тестировщики - одно из наиболее востребованных направлений в ИТ, т. к. постепенно мы идём к тому, что будет много решений с искуственным интеллектом, с обучаемыми алгоритмами и т. д. Тестировщики будут в первую очередь заниматься именно ими, контролировать работу программ с искуственным интеллектом, настраивать их, следить за качеством обучения. Ну и в целом, сейчас активное движение к тому, чтобы программы были качественными, чтобы сбоев было как можно меньше, чтобы пользователю было удобно ими пользоваться.
Есть, конечно, некоторое подразделение среди специалистов по тестированию, где доводится заниматься техникой, настраивать программы, даже писать код: некоторые тестировщики настраивают программы по автоматическому тестированию других прорамм. Например, есть программы, которые автоматически нажимают кнопочки на сайтах, заполняют поля и т. д. Всё это можно закодить, либо как-то еще настроить - вот с этим тестировщику и предстоит иметь дело.
В целом же, могу сказать, что чистый гуманитарий сможет найти себя в роли тестировщика, попав таким образом в мир ИТ.
Что у них там с руководством? Или где еще гуманитарию найти себя среди товарищей космонавтов?
Про это поговорим в третьей части. Скажу лишь, что дорога в ИТ есть не только для технарей, как мы убедились в моём повествовании про роль тестировщиков.
Продолжение, как говорится, следует