Отвечаю на вопрос от подписчика моего телеграм-канала:
Сейчас пока только присматриваюсь к it сфере.Понятно, что вы там творите всякие коды и приложения, и на этом всё) Было бы круто узнать как (и зачем ) в этой сфере всё работает. Какие бывают направления... Кто чем занимается - прям на пальцах... Что из себя представляют заказчики... И заказы…
Предположим, вы предприниматель и решили открыть свою фирму - ООО «Рога и копыта»
Вот вы арендовали офис, наняли 3 человека - себя, менеджера и бухгалтера, закупили компьютеры и начинаете осуществлять свою деятельность. Кто-то должен настроить ваши компьютеры, поставить туда операционные системы, подключить к Интернету, поставить и настроить разные офисные приложения - почту, всеми (не) любимый майрософт, возможно, что-то для бухгалтера - и чтобы это сделать, вам потребуется системный администратор, если не в штате компании, то хотя бы приходящий. Самых «дешевых» админов называют «эникейщиками» от англ. press any key - у них нет каких-то особых навыков, все на уровне - поставить винду, настроить принтер. Но по сравнению с бухгалтером Марьей Петровной, которая с компьютером «на вы» такой человек - уже айтишник.
Вам понадобится свой сайт
Дальше вы, конечно, захотите свой сайт с каталогом услуг или продуктов.
Первым делом, вероятно, сайт будет писать ̶д̶е̶с̶я̶т̶и̶к̶л̶а̶с̶с̶н̶и̶к̶ какой-нибудь фрилансер за недорого (хочется же сэкономить), а располагаться сайт будет у какого-нибудь хостера. На первый взгляд сайт будет ничего, но потом окажется, что некоторые ссылки на нем не работают, страницы не грузятся, и через раз он показывает сообщение «500 internal error». Создателя этого сайта ищи-свищи - родители запретили ему пользоваться Интернетом, потому что нашли у него сигареты. Так что вы найдете еще какого-нибудь фрилансера, чтобы он поправил ошибки своего предшественника.
И с каждым повторением этого сценария код сайта становится всё хуже и хуже, а багов становится только больше. Потом у вас появляется аж 50 клиентов, и с такой нагрузкой сайт уже не справляется, и дальше откладывать некуда - приходится нанимать своего разработчика. Он, конечно, будет fullstack-разработчиком (всё ещё хочется сэкономить, правда?). Посмотрев на код сайта он говорит, что это просто не может работать, и бесполезно его чинить, проще написать заново с нуля. Но на этот раз разработчик более или менее толковый, и через пару месяцев работы у вас появляется более или менее работающий сайт. Потом, правда, разработчику предлагают работу в Мюнхене, и сайт снова остаётся безхозным. Выводы сделаны и дальше приходится нанимать целую команду разработчиков - аж 2х людей.
Потом ваш бизнес растёт
Тем временем клиентская база становится больше, отдел продаж у вас тоже растет. А где они хранят информацию о заказчиках и о том, как протекают продажи? Ясно, что не в тетрадочке. Для этого существуют системы CRM - туда заносятся данные обо всех клиентах - и существующих, и потенциальных, о ходах переговоров с ними, о том, в какой стадии находится продажа услуг, с кем из клиентов работает какой менеджер, и прочая нужная информация. Вероятно, для начала вы будете использовать crm как готовый продукт, написанный кем-то для вас (с платной поддержкой). Но со временем окажется, что эта crm неудобна для ваших целей и менеджеры очень на нее жалуются. Видимо, нужно написать свою crm под свои цели (или доработать существующую). Так что нужен кто? Еще один программист.
Пришло время сделать сайт получше
Наконец у вас появляется бюджет, чтобы сделать нормальный сайт. Так что вы нанимаете отдельных разработчиков под фронтэнд и бэкенд, и даже дизайнера.
А нагрузка тем временем растёт...
Бизнес процветает, клиенты приходят толпой. Вот их уже больше тысячи человек… и внезапно сайт снова начинает тормозить. Раработчики говорят, что хостер не справляется с нагрузкой - сайту нужен свой сервер. И еще отдельный сервер под базу данных - (база данных - это то место, где хрянятся все данные - и каталог товаров или услуг, и история заказов клиентов, и список клиентов - в общем, всё то, что клиент видит на сайте).
Так что вы либо покупаете себе парочку железных серверов и ставите прямо в офисе (увольняете эникейщика и нанимаете админа посмекалистее, чтобы он за ними смотрел), либо арендуете их в облаке (что дороже, но хлопот меньше, и меньше вероятность, что всё сломается, а данные потрутся). А когда вы еще больше вырастете, и поймете, что вам нужно больше серверов, то придёте к тому, что пора арендовать стойку с серверами в дата-центре, а то и «заиметь» собственный дата-центр. И тут уже вам не обойтись без штата хороших админов. А если вы хотит всё по уму, то наймёте ещё и dba (database administrator), чтобы он следил за базами данных.
У бизнеса появляются новые потребности
Дальше вы захотите создать мобильное приложение, добавить чат для общения с техподдержкой, присылать уведомления менеджерам об активности клиентов и реализовывать еще кучу высокотехнологичных идей - так что понадобится больше программистов богу программистов.
А как быстро обновлять версии своего продукта?
Вот у вас уже крупная компания, с известным именем, и множеством разнообразных продуктов. Каждый день вы выпускаете обновления для сотни приложений. Ясно, что вряд ли эти обновления вручную копируются на сервера вашими программистами, как это было на заре существования фирмы. Выкатка приложений - это уже автоматизированный процесс, всё налажено так, что в момент обновления сайты и всё остальное продолжает работать, а клиенты ничего не замечают. В худшем случае 5% клиентов будут затронуты, а обновление так же автоматически откатится к предыдущей версии. Так вот, обновлением приложений и налаживанием всего этого процесса занимаются Devops-инженеры. Они должны владеть технологиями ci-cd (continuous integration/continuous delivery). Не всегда это отдельные люди, бывает, что этим занимаются те же разработчики, что пишут приложения. Или админы. Потому что вообще-то «Devops - это процесс, а не человек»(с).
А кто следит, чтобы всё работало 24/7?
Вы часто замечали, чтобы какой-нибудь Google сломался и не работал? Такое случается и с гуглом, конечно. Но в современном мире минуты простоя - это моветон и позор. Всё должно работать 24/7.
Если вам кажется, что всё «само» работает и не ломается - это не так. Всё ломается и постоянно. Но в идеале это должно происходить незаметно для клиентов и очень быстро чиниться.
И чтобы ничего не ломалось неожиданно - существует мониторинг. На графики выводится вся важная информация по вашим приложениям, серверам и прочему - как быстро отвечает сайт? Сколько клиентов сейчас активно? Сколько свободного места осталось на диске на сервере с базой данных? Если с чем-то из этих аспектов возникают пробелемы - то людям, которые отвечают за работоспосбность приложений (в зависимости от компании это могут быть сами разработчики, или отдельные инженеры или админы) приходит уведомление - «Аларм! Число пользователей на сайте упало с 1000 человек до 0!» Скорее всего, это значит, что сайт сломался. И его срочно надо поднимать. Да-да, срочно - это прямо сейчас, пусть даже в 4 утра. Чем серьезнее и крупнее компания, тем менее допустимы простои.
А кто проверяет, что приложение правильно работает?
Чтобы убедиться, что код, написанный разработчиками работает хорошо - создаются отделы QA, или тестирования. Задача тестировщиков - найти косяки в приложениях и отправить проект на доработку к программистам.
А ещё есть Data Science..
А когда вы захотите внедрить такой модный ныне data science - научиться распознавать изображения, например. Или написать модели, которые будут предсказывать, в какие дни клиенты наиболее активны и сколько сотрудников call-центра должно выходить на смену в эти дни - то вы начнете нанимать специалистов по data-science.
Это, разумеется, далеко не всё IT, а первое, что пришло мне в голову.
Подписывайтесь на мой телеграм-канал Программирование для гуманитариев. Там можно почитать больше публикаций и задать свой вопрос автору блога о карьере в IT