Для тех, кто потерялся в жизни
Проблемы образования
Проблема образования на ИВТ направлении заключается в нескольких основных причинах:
- Слабое базовое образование, которое подразумевает историю Computer Science, качественное введение в теорию графов, дискретную математику, математическую логику, алгоритмику, структуры данных, операционные системы и кучу всего еще
На ИВТ когда-то были крутые преподы, которые действительно могли и пытались давать такие знания, но их уже почти не осталось. Из основных гениев остаётся, пожалуй, только Телков, который, безусловно, специалист достаточно высокого уровня, но, к сожалению, он не имеет никакой экспертности и кругозора в отношении современного IT рынка. Если бы имел, то не работал бы за копейки в вузе. - Отсутствие какой либо профориентации и развития кругозора у обучающихся. Коровченко пытается что-то делать в этом направлении, и, ИМХО, все его образовательное начало состоит именно в развитии кругозора учащихся. Проблема только в том, что, по опыту нескольких групп, делает он это очень плохо) В итоге получается, что и кругозор развить толком не получается, софт скиллы развить нет возможности, хард скиллы и образование от Коровченко в целом не совместимы, поэтому пары несут крайне косвенную пользу.
Понимаем что тут происходит
Основная проблема новичков в IT давно известна:
Этот вопрос очевиден, и мне не понятно почему Коровченко, как куратор направления и в целом самый заряженный препод из доступных, до сих пор ничего не придумал на эту тему.
Кем я могу работать? Что делает каждая из позиций?
В IT можно работать кем угодно, начиная с уборщика офиса и офис менеджера. Такие профессии в этой статье я сознательно скипну, чтобы не засирать её уж слишком сильно. Поговорим только про трушные IT специальности.
Для того, чтобы это можно было как-то адекватно рассмотреть, вот некоторые базовые понятия, которые помогут чуть больше разобраться в вопросе:
- Клиент-Серверная архитектура — простым языком, это подход, в котором какое-либо приложение делится на две составляющие: клиент и сервер.
Клиент — всё мы можем пощупать и потрогать — сайт, мобильное приложение, игровой лаунчер, десктоп приложение (которое устанавливается на ПК) и т.д. Это не до конца верное определение, но оно точно поможет понять что это такое.
Сервер — какой-то компьютер, с которым мы не можем взаимодействовать напрямую, а взаимодействуем с ним только лишь через интернет.
Делается это для того, чтобы распределить нагрузку: не каждый мобильный телефон может посчитать какое-то сложное математическое выражение, провести сложную операцию по обработке данных. Такие операции лучше делать на сервере, потому что мы, как компания разработчиков, можем быть уверены в своем сервере. Купим железо получше и сервер будет супер быстрый. А вот новый телефон пользователю купить — звучит как бред
- Бизнес-логика — вся та логика, которая нужна для решения задачи нашего приложения.
Пример: Банк Тинькофф
Бизнес-логика: логика регистрации пользователя, функция рассчета кредитной истории пользователя, оформление доставки дебетовой карты, назначение курьера для конкретного заказа, перевод денег со счёта на счёт и т.д.
Всё это - та логика, ради которой продукт в принципе существует
Back-End
Тот самый человек, который разрабатывает ПО для серверов. Именно от этого человека будет зависеть то, каким образом происходит обработка данных в приложении, каким образом происходит взаимодействие с базой данных и их сохранение и тд
Основные задачи:
- Разработка основной бизнес логики приложения
- Взаимодействие с данными
- Обеспечение безопасности и отказоустойчивости серверного кода
- Разработка программых интерфейсов взаимодействия ( код, который позволит организовать общение между сервером и сервером, клиентом и сервером)
Чаще всего считается, что back-end — не очень наглядная и удовлетворительная работа. Бред. Там точно есть чем заняться, это очень интересно и точно нужно почти любой компании на рынке.
Основные языки программирования:
Java, Go, C#, Python, JavaScript (NodeJS/Bun), C++
Языки расположены в порядке востребованности на момент написания статьи: Go — самый востребованный, С++ — менее востребованный. (СУБЪЕКТИВНОЕ МНЕНИЕ, как и всё в статье)
При этом, back-end можно писать почти на всём. Например, PHP, Ruby, Rust и еще 100500 языков. Но я перечислил выше только те, на которых реально найти работу в рамках рынка России.
DevOps
Человек, который организует серверную инфраструктуру, управляет развертыванием приложений, от части настраивает сервера. Не сисадмин, вы не понимаете, это другое.
Если вам показалось, что back-end — это просто, то ничего подобного. Под магическим словом "сервер" можно понимать что угодно, в том числе тот ужас, что нарисован ниже. Такая архитектура называется микросервисной (когда back-end настолько большой и сложный, что в рамках одной программы его реализовать не удобно и даже опасно) Это когда сервер разбивается на кучу маленьких серверов и эти сервера уже как-то взаимодействуют между собой для выдачи данных клиенту.
Причем каждый "сервис" (маленький сервер) может использовать свои технологии и языки для реализации бизнес логики, а общаться между собой серверы будут по общему протоколу связи, скорее всего — по HTTP
Так вот, девопс — тот человек, который будет управлять серверами, клиентами, делать их доступными для пользователя, реализовывать такие процессы как CI/CD (сборка приложения и его доставка до пользователя — выпуск обновлений) и прочие штуки, которые с разработкой связаны лишь косвенно. Возможно, звучит не круто, но на самом деле это очень интересная, востребованная и высокооплачиваемая роль.
Проблема лишь в том, что DevOps требует сравнительно большей квалификации, чем обычная разработка.
Основные языки программирования и конфигурации:
Python, Bash, Lua, Yaml
Основные технологии:
Docker, Kubernetes, Jenkins, Ansible, Terraform, Prometheus, Elasticsearch, Grafana, GitLab Cl/CD
Front-End
Человек, который занимается построением клиентских интерфейсов. Вы читаете эту статью, которая написана на сайте teletype. Так вот этот сайт — это и есть фронтенд.
Чаще всего считается, что front-end — одно из самых простых направлений в разработке ПО — пиздёж. Фронтенд бывает сложным.
Для примера:
Figma — векторный графический редактор, реализованнй в браузере.
Яндекс.Карты — сложный многоуровневый интерфейс, реализующий все возможные сценарии навигации и предоставляющий полный спектр информации о заведениях, включая меню, часы работы, фото снаружи и внутри и тд.
Notion — редактор информационного пространства и заметок, инструмент для ведения бизнеса. Очень сложное, высоконагруженное и многоуровневое приложение.
Сложнее ли Front-End чем Back-End? Нет, везде свои заёбы. Сферы по сложности +- равны в современном мире.
Основные задачи:
- Разработка всего, что видит пользователь
- Разработка логики отображения
Сравнивая фронт с бекендом, часто говорят, что бекенд — "в консольке сидеть и ничего не видеть", а фронтенд — "красишь кнопочки и получаешь удовольствие от мгновенного результата". Пиздеж, на это не стоит ориентироваться
Основные языки программирования:
JavaScript, TypeScript
Языки разметки и тд:
HTML, CSS/SCSS/LESS, Yaml
Дополнительные языки:
Rust
Основные технологии и библиотеки:
React, Vue, Angular, NodeJS, Svelte
С более подробными вопросами всегда велком @denisputnov в тг
Разработчик мобильных приложений
Эти ребята делятся на три основных категории: Android, iOS, Кроссплатформа
Android - приложение работает только на Android
iOS - только на iOS и MacOS
Кроссплатформа - работает везде (или почти везде)
Разработка приложений = фронтенд (ведь это видит пользователь)
Только этот фронтенд будет отображаться не в браузере, а в установленном на телефон приложении. Пример: Telegram, VK, Тинькофф Банк, СберБанк, Ютубчик и тд
Android: основные языки:
Java, Kotlin
iOS: основные языки:
Swift (необходим макбук для изучения и программирования)
Кроссплатформа: основные языки:
JavaScript, TypeScript, Dart
Кроссплатформа: Основные технологии:
React Native, Flutter
Фуллстек разработка
Тот разработчик, который может реализовать и Back-End, и Front-End.
Всё то же самое, только зп выше на 10-15%, а знать надо в 2 раза больше.
Оно того стоит? нет.
ML/DE
Machine Learning/Data Engineering
Это те самые ребята, которые занимаются промышленным анализом данных и выведением разных метрик на их основе. Какой средний чек среди магазинов "Пятерочка"? Какой самый популярный товар в сети "Спортмастер"? На все эти вопросы отвечают они.
Основные задачи:
- Анализ данных
- Разметка данных (их подготовка)
- Создание аналитических моделей
- Вывод получившихся результатов
- Организация аналитики по расписанию (например, обновляем метрики каждую ночь)
Основные языки:
Python, C++, R
Основные технологии:
TensorFlow, PyTorch, Pandas, Airflow, Hadoop, Kafka, Spark
Тестирование
Человек, который отвечает за качество продукта. Проверяет весь тот ужас, что написали разработчики разных мастей, что сделали девопсы.
Основные задачи:
- Ведение отчетности о ведении тестирования (бумажки/электронно)
- Коммуникация с дизайнерами, бизнес аналитиками, разрабами
- Написание сценариев тестирования
- Ведение тестирования
Также тестировщики делятся на две касты: мега гигачады автоматизаторы и так чисто челики мануальщики.
Разница проста:
- автоматизаторы пишут специальный код, который тестирует приложение
- мануальщики тестируют всё вручную
Автоматизаторы: основные языки:
Java, Python, JavaScript, TypeScript
Дизайнер
Человек, который рисует макеты. По ощущением, 1 дизайнер приходится на 100 разрабов. Востребовано, но очень тяжело начать, а зарплата вас не порадует, особенно по отношению к разработчикам.
Основные задачи:
- Изучение бизнес задачи клиента
- Отрисовка макетов интерфейса в определенном стиле
Основные технологии:
Photoshop, Figma, Illustrator
Бизнес аналитик
Человек-бумажка. Занимается тем, что выступает в качестве некоторой прослойки между заказчиком и командами разработки. Он составляет документы, называемые "анализом". В анализе прописаны все требования к тому приложению, что нужно сделать. На основе анализа ведется разработка, составляются тест кейсы, дизайн и т.д.
Анализ — формализованное в тексте виденье конечного результата.
Работа связана с большим количеством "бумажек", достаточно специфично и не то чтобы вау оплачивается, но жить можно.
HR/BP/Recruiter
Гуманитарные специальности, не требующие особых навыков. Всё что нужно — иметь неплохой кругозор и быть милой крутой душенькой (очень желательно — быть девочкой).
Основные задачи:
- Найм сотрудников
- Ведение корпоративных мероприятий
- Сопровождение сотрудников в работе (помощь в оформлении бумажек, решение вопросов и тд)
Заключение
Тут разбор всех основных профессий в IT, в которые реально залетать новичку. Вам нужно определиться со специализацией как можно скорее, чтобы реально достигнуть неплохих результатов. Если не определитесь до конца второго курса, то ваши шансы на IT уменьшатся раза в 4, а со временем будут уменьшаться ещё.
На основе этой статьи вы уже можете решать что вам ближе. Выбирайте любое из перечисленных направлений и начинайте что-то учить, потом будет поздно))
Не нравится то, что выбрали изначально? Не приговор. Используйте полученный опыт и знания для того, чтобы быстро перейти в смежную область. Запомните, что у вас есть время сделать только 2 свича из области в область, если при изучении области вы потратили не более чем 3-4 месяца чтобы понять, что ну не ваше вот.
Путь: back-end -> front-end -> devops — это вполне нормально
А вот путь: мобила -> front-end -> devops -> back-end -> мобила — это долбоебизм
Занимайтесь своим образованием и профориентацией сами, ИВТ вам, кроме крутого комьюнити, ничем не поможет.
Ну и напоминаю, что мне можно задавать вопросы в телеге: @denisputnov в личке, или тот самый выпустившийся бедолага из беседы