Download - Профессии в IT
Software Industry 101
bit.ly/industry101vk.com/industry101
#SoftInd101
Что здесь происходит?
• Лекции о реалиях работы в IT-компаниях и об IT-индустрии в целом
• Для студентов IT-специальностей, задумывающихся о своей будущей карьере
Зачем этот спецкурс?
• Студент IT-специальности учится 4 года, но в итоге знает об индустрии далеко не все
• Как устроены IT-компании?
• В чем заключается работа программиста?
• Куда (и кем) лучше идти работать?
Зачем этот спецкурс?
Мы расскажем о том, о чем в университете обычно не рассказывают
Кто выступает?
• Сотрудники новосибирских (и не только) IT-компаний
• Ведущие разработчики, менеджеры проектов, руководители отделов
• Список выступающих - bit.ly/industry101
Кто выступает?
• Семëн Факторович
• Выпускник ФИТ НГУ 2009 года
• 5 лет программистского стажа
• Последние 2.5 года — менеджер проектов в компании Noveo, noveogroup.ru
О чем будем говорить сегодня
• Обзор разных профессий в IT-индустрии
• Какие карьерные пути есть у молодого специалиста
Страшная правда
В IT-компаниях работают не только программисты
Карьерные области в IT-компаниях
• Разработка• Тестирование • Менеджмент
Менее распространенные профессии
• Технические писатели, копирайтеры• Аналитики• Менеджеры по продажам
Разработка
• Junior Developer / Developer / Senior Developer
• Team lead
• Software Architect
Junior developer
• Младший разработчик, стажер• Стартовая позиция• Опыт работы не обязателен
• Можно совмещать с учебой (начиная со 2-3 курса)
Junior developer
• Чем занимаются на этой позиции?
Junior developer
• Чем занимаются на этой позиции?
• Учатся! (еще и получают за это деньги)• Тренинги, внутренние экзамены, учебные проекты
Junior developer
Первый реальный проект может начаться через 3-4 месяца
Junior developer
Один из лучших вариантов начала карьеры
Junior developer
Одно «но»: зарплата будет очень мала
Developer
• Software developer, разработчик, Software engineer
• Та самая «стандартная» программистская позиция
• Разработка программного обеспечения
Developer
• Разработка?
Developer
• Разработка?• 30%* времени: реализация новых фич
• 70%* времени: поддержка, развитие и багфиксинг
Developer
• Разработка?• 30%* времени: реализация новых фич
• 70%* времени: поддержка, развитие и багфиксинг
* результаты могут отличаться от заявленных
Developer
• Бешеный креатив вовсе не обязательно занимает бóльшую часть времени
• Остальное — поиск и исправление собственных ошибок и мелкие доделки
• «Передвиньте эту кнопочку левее»
Developer
“Another flaw in the human character is that everybody wants to build, but nobody wants to do
maintenance.”
– Kurt Vonnegut
Developer
Бывает, что разработчик вообще не пишет код
Developer
• Code review других разработчиков
• Сборка релизов и установочных пакетов• Чтение спецификаций и оценка проектов• Поиск проблем конфигурации на серверах заказчика
Senior developer
• Старший разработчик• Не позиция, а название вакансии• 4-5 лет опыта разработки
• Значительно бóльшая зарплата
Team leader
• Team lead, руководитель команды
• Подразумевается наличие команды• Руководит командой, но при этом сам пишет код (в отличие от менеджера)
• «Играющий тренер»
Team leader
• Распределяет задачи, контролирует их выполнение, консультирует команду
• Самый опытный из всей команды
Software architect
• Архитектор — значит что-то проектирует?
• Структура классов, компоненты сложного технического решения
• В местных реалиях — то же самое, что senior developer
Карьерный рост разработчика
Junior → Developer → Senior
Карьерный рост разработчика
Junior → Developer → Senior
А дальше?
Карьерный рост разработчика
Developer, developer, developer...
Карьерный рост разработчика
Developer, developer, developer...
Карьерный рост разработчика
Developer, developer, developer...
Оставаться разработчиком на протяжении 10-15 лет, если вам это нравится — почему бы
и нет?
Карьерный рост разработчика
• Уход в менеджмент• Team leader
• Project manager
Карьерный рост разработчика
• Уход в менеджмент• Team leader
• Project manager
• Уход в другие области (например, тестирование) очень редок
Карьерный рост разработчика
• Зарплата в основном выше, чем у других IT-cпециалистов
• Невероятная востребованность профессии: разработчик легко найдет работу в любом городе и в любой стране
Quality assurance
• Обеспечение качества, тестирование
• «Тестировщик», но не «тестер»
• Поиск багов? Не совсем• Проверка того, что приложение работает как нужно
Quality assurance
• Поиск багов? Не совсем• Проверка того, что приложение работает как нужно
• А как нужно?
Quality assurance
• Выполняет ли приложение те функции, которые оно должно выполнять?
• «В спецификации есть вот такая фича, но разработчики забыли ее реализовать»
• «Эта фича работает не совсем так, как описано в спецификации»
Quality assurance
• Как приложение работает с неправильными данными?
• «Что будет, если я введу логин длиной 50 символов?»
• «Что будет, если я попытаюсь сохранить файл на диск, на котором нет свободного места?»
Quality assurance
• Работает ли приложение в тех условиях, в которых оно должно работать?
• «Наше приложение нормально работает на Windows 7, но крэшится на Windows XP»
• «Наш веб-сайт неправильно отображается на iPad»
Quality assurance
• Работает ли приложение в экстремальных условиях?
• «Что будет, если мы откроем нашим графическим редактором файл в 10Гб?»
• «Что будет, если на наш сайт зайдет 100 000 человек одновременно?»
Quality assurance
• «Не перестало ли приложение работать после рефакторинга?»
• «Не перестала ли работать какая-либо фича после того, как мы добавили новую?»
Quality assurance
• Работа тестировщика очень разноплановая• Не обязательно требует профильного образования
• Но вполне может включать в себя чтение кода (а иногда даже его написание)
Quality assurance
QA automation
• Автоматизированное тестирование• Зачем проверять веб-сайт вручную, если можно написать программу, которая будет этим заниматься?
• Интересный вариант для тех, кто умеет программировать и любит тестировать
• Автотесты зачастую пишутся на несложных скриптовых языках (Lua, Python)
QA automation
• Есть и более сложные задачи• Своя платформа для автотестов• Покрытие тестами большой программной системы: компилятор Java, С++ STL, ...
QA automation
• Рост, в основном, идет «вширь»: новые области и методы тестирования
• Есть вариант уйти в менеджмент• Руководитель отдела тестирования• Менеджер проектов• Уйти в девелопмент?
Карьерный рост тестировщика
• «Пойти работать тестировщиком и потом дорасти до разработчика» — не самая лучшая идея
• Займет 1-2 года
• Лучше все это время прокачивать скилл программиста
Карьерный рост тестировщика
Менеджмент
• Project manager
• Product manager
• Senior management (CTO, CEO)
• Менеджер проектов, руководитель проектов• Руководит проектной командой
(разработчики, тестировщики, дизайнеры, аналитики...)
• Управляет разработкой, но не пишет код
Project Manager
• Налаживает процессы разработки
• Распределяет задачи, отслеживает их выполнение
• Отслеживает сроки и бюджеты• Общается с заказчиком
Project Manager
• Ответственность за проект — на менеджере!
• Менеджер собирает все шишки и все плюшки
Project Manager
• Работа менеджера кардинально отличается от работы программиста
• Общение, решение организационных вопросов, множество дел одновременно
• Стресс!
Project Manager
• Менеджер продуктов, product owner, program manager
• Управляет не командой, а продуктом в целом
• Не операционный, а стратегический менеджмент
Product Manager
• Понимание потребностей рынка: какую бизнес-задачу решает наш продукт?
• Понимание потребностей пользователей: что нужно нашим клиентам?
• Продвижение продукта на рынок, взаимодействие с конкурентами
Product Manager
• Редко общается с разработчиками, обычно только с менеджерами
• Может иметь в подчинении несколько проектных команд
Product Manager
• CTO, Chief Technical Officer, технический директор
• CEO, Chief Executive Officer, генеральный директор
Senior management
• CTO: верхняя ступень технической карьерной лестницы
• Финальные решения по сложным техническим вопросам
• Надзор над несколькими продуктами
Senior management
• CEO: самая главная должность в компании
• Надзор над всеми продуктами• Административные вопросы (аренда офиса, финансы...)
Senior management
• Может быть интереснее работы программиста (зависит от характера)
• Зарплата, как правило, выше (особенно у старшего менеджмента)
• IT-образование не является обязательным
Менеджмент
Экзотические профессии
• Технические писатели, копирайтеры• Бизнес-аналитики• Менеджеры по продажам
Techwriter,copywriter
В любой программе есть тексты
http://developers.facebook.com/docs/reference/plugins/like/
Text
http://www.gnu.org/software/grub/manual/html_node/Installing-GRUB-using-grub_002dinstall.html
Программисты традиционно очень не любят писать документацию
Techwriter,copywriter
• Технический писатель занимается инструкциями, файлами помощи...
• Копирайтер пишет менее специфические тексты: контентное наполнение сайта, маркетинговые описания продуктов...
Techwriter,copywriter
• Иногда техписатель — это филолог, натасканный на понимание предметной области
• А иногда IT-шник, которого научили хорошо писать тексты
Techwriter,copywriter
Systems analyst
• Системный аналитик, реже «бизнес-аналитик»• Слово «бизнес» — от «бизнес-логика»
• Перевод проблемы заказчика в задачу, понятную программисту
Заказчик — аналитику:
«Мне нужна система складского учета, решающая следующие задачи моего бизнеса...»
Systems analyst
Аналитик — программисту:
«Заказчику нужно веб-приложение, оперирующее следующими сущностями...»
Systems analyst
• Общение с заказчиком и выяснение, чего же он хочет
• Продумывание бизнес-логики приложения• Выявление требований к приложению
(вплоть до прототипов интерфейса и структуры БД)
Systems analyst
Результат работы аналитика — спецификация приложения, по которой можно начинать
разработку
Systems analyst
• Для фанатично любящих писать документы и продумывать каждую мелочь
• IT-образование крайне желательно, но не обязательно
Systems analyst
Sales manager
• Менеджер по продажам, «продажник»
• Общается с заказчиками и заключает контракты на разработку
• Ищет новых клиентов разнообразными способами (например, ездит по выставкам и конференциям)
• Продажник — двигатель бизнеса
• Пока он не найдет заказчика, проектов у компании не будет
Sales manager
• Задачи продажника:• Найти потенциального клиента• Уговорить его выполнить проект именно у нас
• Сторговаться по цене
Sales manager
• Нужно очень много разнообразного опыта (переговоры, понимание бизнеса заказчика, экономика...)
• Средний возраст продажников в крупных компаниях — 30 лет и старше
Sales manager
• Зарплата минимальная (или даже нулевая)• Но зато есть процент с продаж
Sales manager
Заключил контракт на 100 000 долларов? Получи 10%
Sales manager
Зачем мне задумываться о других профессиях?
• «Мне нравится работать разработчиком/тестировщиком, я не хочу ничего менять»
• «Я не хочу становиться тимлидом или менеджером: ответственность — это не для меня»
Зачем мне задумываться о других профессиях?
• За 5-10 лет даже любимое занятие может надоесть, и вам может захотеться чего-то нового
• Рост в менеджмент• Смена карьерной области
Зачем мне задумываться о других профессиях?
• За 5-10 лет даже любимое занятие может надоесть, и вам может захотеться чего-то нового
• А может и не надоесть
• 40-летние программисты вполне счастливы
Зачем мне задумываться о карьерном росте
• Карьерный рост сопровождается ростом зарплаты
• Разница зарплат между обычным и старшим разработчиком — 2x
• Разница зарплат по всей карьерной лестнице програмиста (от junior developer до CTO) — 10-15х
Подытожим?
• Карьерные пути: тестирование, разработка, менеджмент
• Менее распространенные профессии • Мотивация к карьерному росту
В следующей серии
• Как устроен IT-бизнес, и как код, написанный вами, превращается в деньги
• Основные типы IT-компаний: сервисные и продуктовые
• Почему в большинстве софтверных компаний есть четкая верхняя граница зарплат