30 апреля 2011 г.

Карьера в IT

Что является основным критерием карьерного успеха? Как попасть на желанную работу, если недостаточно опыта? В этой статье я попытался ответить на эти и другие вопросы, связанные с карьерой IT-специалиста.

Сначала о моей карьере

Сейчас я являюсь собственником и техническим директором компании ByndyuSoft, работаю преподавателем на кафедре Информатики в ЮУрГУ и веду тренинги под общим названием Результативное программирование. Приведу профессии в виде списка:

  • Учредитель IT-компании, B&Z
  • Ведущий разработчик, fuse8
  • Руководитель отдела цветной полиграфии, типография Алмаз
  • Таксист
  • Системный администратор, РГ Марк
  • Кассир, Пятерочка
  • Официант, несколько ресторанов в Америке
  • Грузчик, склад тракторных запчастей

Я ценю весь этот опыт и не могу сказать, что какая-то профессия была важней других. Я посмотрел на разные компании, разные сферы и сейчас остановился на IT.

№0 Коротко о главном

Главное, чему меня научили и что я понял на собственном опыте, можно сказать одной фразой из трех слов:

Всё решают отношения

Кто заботится о заведении новых связей и поддерживает старые, тот ставит себя в очень выгодные условия. И это относится не только к карьере в IT, а вообще ко всему, чем вы занимаетесь.

И наоборот, если раскидываться отношениями, ставить себя выше других, вести себя предвзято и придирчиво, ну и конечно, считать себя Д'Артаньяном, а всех остальных таковыми не считать; то надо понимать, что дурная слава быстро разносится, а круг друзей, коллег и родственников не бесконечен.

Я несколько раз выступал с этой темой публично и просил аудиторию проголосовать за эту точку зрения. По моим наблюдениям только каждый пятый поддерживает эту позицию. Остальные согласны частично или полностью не согласны. Что интересно, из 20% согласных реально в этом направлении двигаются единицы.

Вот для тех, кто не применяет принцип из трех слов в своей жизни, стоит сделать упор на следующие две темы, который я освещу дальше.

№1 Устраиваемся на работу

Для начала хочу сказать, что все эти рекомендации я взял из собственного опыта или из успешного опыта своих друзей и коллег. Большинство заметок подойдет для карьеры в любой области, не только в IT.

Откуда брать опыт?

Вопрос, который интересует каждого, когда он думает об устройстве на работу: «Откуда я возьму опыт работы, если я только учусь/работал в другой сфере/работал с другими платформами?». Это вполне резонный вопрос, потому что работодатели хотят нанять профессионала, который сразу с высокой степенью вероятности решит поставленные задачи.

Вот несколько способов набрать необходимый опыт:

  1. Участие в OpenSource проектах

    Мои друзья часто участвуют в OpenSource проектах. Они создавали свои проекты или поддерживали уже существующие. В этих проектах была и обратная связь от пользователей, и работа в команде, и выпуск версий, и планирование.

  2. Просмотр кода OpenSource проектов

    В своё время я следил за развитием NHibernate, NAnt и ещё нескольких проектов на CodePlex. Я просматривал коммиты, которые делали разработчики. Разбирался в уже написанном коде и модульных тестах на этот код. Пытался понять принципы, по которым разработчики строили свои приложения. Делал также как они в своих программах.

  3. Курсовые и диплом

    Если вы учитесь, то у вас есть отличная возможность взять проект посложнее и поинтереснее. Целых пять лет вы можете развлекаться с разработкой ПО. Вы можете пробовать разные подходы, по несколько раз переписывать свои программы. Учеба в университете - это уникальное время, когда у вас есть всё для саморазвития.

  4. Фриланс

    Думаю, что многие из программистов, сделали хотя бы один проект для своих друзей, родственников или через сайты типа free-lance.ru. Работа на фрилансе дает возможность экспериментировать с разными языками, делая небольшие проекты или дорабатывая уже существующие. За небольшие деньги, делая проекты с низкими рисками, вы можете набраться опыта в нужной вам области. Сейчас на фрилансе представлены все языки программирования и платформы, так что эту возможность нельзя игнорировать.

  5. Стажировки в компаниях

    Сейчас многие компании с удовольствием берут начинающих разработчиков к себе на стажировки. Вы можете поработать в таких крупных компаниях, как Microsoft, Intel и др., просто попав к ним на стажировку. На стажировках, конечно, не дают участвовать в критичных и крупных проектах, но вы сможете пообщаться с опытными разработчиками, возможно, поработать с ними в паре. Опять же по результатам стажировки могут и на работу пригласить. В нашей компании тоже есть стажировки для студентов, правда, места ограничены.

Найдите того, кто будет объяснять

Оглядываясь назад, я сделал неожиданное для себя замечание. Возьмем изучение шаблонов проектирования. Я читал много книжек, смотрел видео по этим темам, читал статьи. Но, всё это изучение закончилось бы ничем, если бы не два фактора. Во-первых, мне надо было применять это в реальных проектах. Во-вторых, я нашел тех, с кем можно было посоветоваться, кто мог бы доходчиво объяснить. И так по каждой теме. Будь то TDD, Agile, DDD или что-то другое.

Ищите людей, которые смогут вам объяснить. Вот несколько советов по их поиску:

  1. Пишите тем, кто пишет статьи и книги

    Люди, которые пишут публичные статьи или книги, будут очень рады получить обратную связь от вас. Напишите им вопрос или уточнение по статье и вам обязательно ответят.

  2. Ходите на конференции

    Сейчас в сфере IT набирается всё больше и больше конференций и встреч. Только в Челябинске есть .NETconf, SUNETA, beerconf и другие. Если вы живете в Москве или Санкт-Петербурге, то плотность IT конференций в месяц там очень высокая. Придя на конференции, обязательно захватите с собой визиток и не стесняйтесь их давать вашим собеседникам. Возьмите с собой ноутбук и спросите про проблему в вашем коде у докладчика, который рассказывает по близкой теме.

  3. Расспрашивайте преподавателей

    Опять же студенты находятся в самом выгодном положении. У студентов есть специальный человек, который будет отвечать на их вопросы - преподаватель. Сейчас я преподаю в университете и с удивлением вижу, что лишь малая часть студентов по максимуму пользуются этой привилегией. Почему-то большая часть студентов стесняются спрашивать и уточнять.

Если вы ещё не уверены, стоит ли искать наставника или нет, то приведу известную фразу: «Если спросите, то будете дураком 5 минут, а если не спросите, то всю жизнь».

Будьте открыты

Когда ко мне приходит резюме, то первое, что делаю, это ввожу имя соискателя в Google и читаю его статьи, комментарии к статям, вопросы и ответы на форумах, смотрю профили в социальных сетях и видео с выступлений. Думаю, что я не один такой, поэтому стоит задуматься о вашей публичной репутации. Даже одной хорошей статьи или одного хорошего выступления уже достаточно, чтобы сформировалось первое впечатление о соискателе.

Упор на положительном

Обычно нравятся люди улыбчивые, уравновешенные, конструктивные. И наоборот не нравятся или оставляют негативный образ грустные, злые, пессимисты. Так вот, когда вы общаетесь со своим будущим работодателем, то постарайтесь попасть в первую группу людей. Кажется, что это очевидно, но есть одна тема, на которой разработчики спотыкаются. Это тема священных воин. Как часто вы слышали от коллег унылые разговоры про то, что:

  • я ненавижу Windows/Linux/Mac…
  • я ненавижу .NET/Java/C++…
  • я ненавижу IE/FireFox/Chrome…

Жизнь всегда шире, чем наше представление о ней. Пусть ваша ненависть к платформе или технологии будет выражаться хотя бы нейтральной позиции. Не спешите впадать в крайности, чтобы не попасть под шутку: «Вам не нравятся кошки? Вы просто не умеете их готовить».

Зачем вам эта работа?

Менеджеру по персоналу, менеджеру проекта или ведущему разработчику надо понимать ваши мотивы, которые сподвигли вас искать работу. В голове любого менеджера неоновыми буквами моргают слова: хороший кандидат — это мотивированный кандидат. На собеседовании я всегда спрашиваю о целях кандидата. Цели должны быть очерчены на год вперед, а в идеале на 5-10 лет.

Не все понимают, что такое цель. Приведу несколько примеров целей:

  1. Хочу много денег
  2. Хотите путешествовать
  3. Хочу, чтобы меня все любили
  4. Через 3 года хочу участвовать в проекте с численностью разработчиков 100 человек и зарплатой в 100 тыс. рублей в месяц

Первые три цели таковыми не являются, потому что неизмеримы. Разберем по порядку. Если кандидат хочет денег, то вполне нормально. Но деньги сами по себе не могут быть целью, т.к. нужны для чего-то. Вот для чего кандидату деньги, это и выясняется на собеседовании.

Когда ко мне на собеседование пришел потенциальный менеджер проекта, то я понял, что откажу после диалога:

  • С какой целью вы пришли управлять проектами?
  • Я хочу, чтобы меня все любили.

Что значит «все любили»? Когда это «все любили» наступит? Когда можно будет сказать, что вот сейчас меня все любят и цель достигнута?

Последнюю цель я считаю наиболее приемлемой, потому что она является измеримой. Понятно, что через 3 года это может и не наступить, но если планка задана и глаза горят, то есть все шансы вырасти. Кандидаты с понятными мотивами самые желанные.

Как составить резюме?

Первое, что увидит работодатель, будет ваше резюме. Резюме должно быть исключительно по делу. Работодатель после просмотра резюме должен знать ответы на вопросы:

  1. Чего вы хотите?

    Укажите вашу цель явно, можно прямо первым предложением. Дальше надо понять, что вы уже добились.

  2. Опишите предыдущий опыт

    Проекты с вашим участием, ваш личный вклад в эти проекты, вашу ответственность и результат.

Это было про то, что должно быть в резюме. А теперь как составить резюме? Эти маленькие хитрости должны вам помочь:

  1. Найдите готовые резюме

    Соберите и проанализируйте как можно больше резюме, которые сейчас есть на рынке. Это даст вам представление о той области, куда вы хотите попасть.

  2. Соберите требования из вакансий

    Еще более мощный инструмент, соберите как можно больше вакансий, из тех, что вы хотите попасть. Проанализируйте требования к кандидатам и сразу поймете чего вам не хватает, на что обращать внимание при составлении резюме.

Собеседование

Я не буду говорить о психологической составляющей собеседования, только несколько советов:

  1. Подготовьте резюме

    Да, вы уже присылали резюме. И все-таки принесите еще одну копию с собой. После собеседования можете оставить ваше резюме, если есть визитка, то вместе с ней.

  2. Расскажите о ваших целях

    Не стесняйтесь рассказать о том, чего вы хотите добиться. Скажите о целях явно без намеков и хождений вокруг да около.

  3. Расскажите о ваших достижениях

    Всё это уже описано в вашем резюме, но блеск в глазах при рассказе о собственных достижениях не оставит равнодушным собеседующего.

  4. Собеседуйте компанию

    Вы пришли на собеседование не только, чтобы себя показать. Вам нужно убедится, что вы захотите работать в этой компании, если вам предложат должность. Задавайте вопросы о компании, цели компании, планы. Вы узнаете много интересного, плюс эти вопросы выделят вас среди десятка других кандидатов, которые приходили за неделю.

№2 Делаем карьеру

Векторы роста

Работа разработчика предполагает не просто кодирование изо дня в день. У каждого, кто занимается разработкой ПО есть как минимум 10 направлений для развития:

  • Software requirements
  • Software design
  • Software construction
  • Software testing
  • Software maintenance
  • Software configuration management
  • Software engineering management
  • Software engineering process
  • Software engineering tools and methods
  • Software quality

Более подробно об этой теме можно прочитать в книге Стива Макконнелла «Профессиональная разработка ПО».

Саморазвитие

Если вы хотите оставаться востребованным специалистом, то вам нужно быть в курсе IT мира и постоянно совершенствоваться. Это может звучать банально, но нужно уделять много времени саморазвитию. Я выделил несколько пунктов, которые помогают мне:

  1. Чтение книг

    Я отдаю предпочтение бумажным книгам, которые заказываю в интернет-магазинах. Читаю примерно 1-2 книги в месяц. Бывает больше, но это норма.

  2. Чтение статей

    Мой список блогов и ЖЖ в Google Reader постоянно обновляется и дополняется. Чтение статей помогает оставаться в курсе событий и тенденций IT мира.

  3. Написание статей

    Написание статей помогает упорядочить мысли в собственной голове. Если вы не хотите публичности, то всё равно стоит писать статьи в закрытом блоге или просто в текстовом редакторе.

  4. Участие в конференциях

    Я люблю много общаться и заводить интересные знакомства. Конференции для меня отличный источник и того, и другого.

  5. Узнавать у коллег, в чем вам ещё нужно подрасти

    Это самый эффективный и психологически сложный способ "вытащить себя за волосы вверх". Спросить у своих коллег, чего мне не хватает, как мне стать лучше. Обязательно поинтересуйтесь — узнаете много интересного.

Сначала разработчик, потом менеджер?

Выстраивая свою карьеру разработчики часто думают: сначала я поработаю разработчиком, потом стану менеджером проекта. Встречали таких? Я сам сначала работал разработчиком, а потом стал менеджером проекта. Т.е. такая схема работает, но есть подводные камни, которые не очевидны для начинающих этот путь:

  1. Менеджер != Разработчик

    Хороший разработчик не превратится в хорошего менеджера.

  2. Разные книги, разные подходы

    Когда я решил для себя, что буду руководить IT-проектами, то полностью сменил библиотеку и RSS-ленты. Переход от разработчика длился около двух лет и даже сейчас я еще не могу сказать, что чувствую себя на 100% руководителем, потому что просто не хватает знания и опыта. Сейчас для меня наиболее интересны: психология, управление проектами, методологии, управление рисками, управление персоналом, управление требованиями и т.д.

  3. Разные границы ответственности

    Если говорить про иерархию в организации, то менеджер проекта и разработчик стоят на одной ступени. Отличие только в границах ответственности.

  4. Вы кем хотите стать?

    Я еще раз предлагаю вам явно определить свои цели. Кем вы себя видите через 1-2 года? В зависимости от этого надо подбирать книги, конференции и RSS-ленты.

Технологии или подходы и принципы?

Есть такая тенденция: начинающие разработчики много внимания уделяют технологиям (языки программирования, платформы). Через несколько лет работы над коммерческими проектами намного больше внимания начитают уделять подходам и принципам разработки. Становится понятно, что «серебряной пули» как не было так и не будет, что выбор языка программирования зависит прикладной задачи, как и платформа.

Я думаю, что большинство разработчиков, которые читают эту главу, тоже заметили такую смену приоритетов. Ведь технологии меняются очень быстро, а правильные подходы только накапливаются со временем. Практично будет инвестировать большую часть своего времени в изучение подходов и лучших практик.

У меня есть сборник книг, которые я советую разработчикам, вставшим на путь изучения принципов «Что нужно узнать начинающим программистам».

Главу про карьеру, я хочу закончить словами своего дедушки, который любил говорить: «До 30 лет ты работаешь на свою карьеру, после 30 лет карьера работает на тебя».

Заключение

Я буду рад, если вы извлечете что-то полезное для себя. Успехов в профессиональном и карьерном росте!


Ссылки

Изначально опубликовано на Хабре по ссылке http://habrahabr.ru/blogs/hr/118039

Статья написана по материалам конференции .NET разработчиков и конференции Дни технологий.

Аналитика HeadHunter: Через связи в князи

16 комментариев:

  1. >>> приведу их в виде списка

    Как-то поправить, что-ли. А то читается, что ты проводишь тренинги на таксиста :D

    ОтветитьУдалить
  2. М.Коннел - плохое сокращение для имени Стив Макконнелл

    ОтветитьУдалить
  3. +1. Еще нужно учить английский (если со средней школы учили немецкий и французский - то это был ошибочный выбор, последствия которого следует немедленно исправлять), обязательно - тренировки в спортзале до изнеможения (в здоровом теле - здоровый ум!) и главное - никакой личной жизни, личная жизнь - только после 30 :)

    ОтветитьУдалить
  4. Спасибо, Полезная информация!

    ОтветитьУдалить
  5. Александр, спасибо за статью! Не могли бы вы порекомендовать какие - нибудь RSS каналы (из своей коллекции) и не только по технологиям.

    ОтветитьУдалить
  6. @Max

    Я читаю довольно много RSS каналов. Для примера могу дать парочку:
    http://feeds.feedburner.com/UdiDahan-TheSoftwareSimplist
    http://lostechies.com/jimmybogard
    http://richarddingwall.name

    Я бы советовал вам найти побольше подписок и со временем отсеять их. Набирать хорошие подписки довольно легко, когда уже нашли парочку, т.к. блоггеры обычно ссылаются друг на друга.

    ОтветитьУдалить
  7. Все решают отношения.

    Абсолютно согласен, сам придерживаюсь этого принципа везде и всюду, можно даже сказать что это что-то вроде жизненного кредо. Вот только пока как-то не выстреливает :)

    ОтветитьУдалить
  8. >>> Вот для чего кандидату деньги, это и выясняется на собеседовании.

    Меня всегда убивало отношение работодателей к моему кошельку. То есть почему-то все считают, что я эдакое ничтожество, которое само не понимает, зачем нужны деньги, потому можно попытаться уговорить меня на копейки, пообещав вместо них такие абстрактные штуки как "хороший коллектив", "большие перспективы", "интересные проекты" и прочую ахинею. Все хотят, чтобы я с горящими глазами и слюнями у рта прибегал в офис, вкалывал в нём целый день, а потом раз в месяц получал подачку, которую хватает лишь на не самую лучшую еду и посредственные шмотки. В то же время, работодатель применение моим деньгам без проблем найдёт: он себе и машину нормальную купит и дом отстроит. Но мне же дом не нужен, правда? Я чмо, которое проживёт всю жизнь в однокомнотном скворечнике, с упоением зачитываясь технической литературой долгими унылыми вечерами, а с утра в любую погоду бегущее на работу в своё стоило.

    ОтветитьУдалить
  9. А вы создайте свою компанию и ваши деньги, те самые, на которые хочется себе машину, дачу и всё такое, придется отдавать другим людям. Дак вот когда вы своими доходами будете платить другим людям за работу, то сможете посмотреть на эту ситуацию с другой стороны.Речь будет идти не о том, чмо пришло на собеседование или нет, и совсем не про личное отношение, а про отношение вложенных в человека деньгах и вернувшейся от его работы прибыли. Любить вас просто так будет только мама, остальным от вас будет что-то нужно.

    ОтветитьУдалить
  10. Продайся подороже ;-) 

    ОтветитьУдалить
  11. Да нет же, дело не в том, что начальник хочет заработать побольше денег, а работникам заплатить поменьше. Это желание то как раз нормальное и адекватное. И любить работников он не обязан совершенно. Дело в другом...

    Я не раз сталкивался с тем, что начальник приходит в офис и этим самым работникам начинает рассказывать, как всё круто идёт и как много денег фирма дохода имеет. А потом, спустя совсем немного времени (ну скажем, при выпуске очередной версии продукта), он не желает ни премию никому выдать, ни чего-либо ещё материального. Но зато активно всех на словах поздравляет и благодарит, и !ВНИМАНИЕ! начинает старую песню о том, что всё круто и будет ещё круче. На просьбу же зарплату чутку поднять или премию выписать, говорит, что это наглость и вообще, мол, раб, ты должен гордиться коллективом и тем, что работаешь в такой зашибенной фирме, а деньги - это типа зло и тебе не особо нужны.

    Ещё раз повторюсь: я рад за богатство начальника. Но совершенно не нужно мне массажировать мозг о том, что, оказывается, я не нуждаюсь в большом количестве денег. Пусть приезжает в офис на бентли и тискает сисястых тёток у себя на яхте - флаг в руки, как говорится. Но не нужно тут же мне рассказывать о том, что я должен довольствоваться дошираком и дружным коллективом, а "много денег" - это типа понятие абстрактное и не конструктивное.

    ОтветитьУдалить
  12. Я щас не столько о деньгах, сколько об отношении. Что начальство относится к работникам как к коровам в стойле. Типа сено есть - молчите и давайте молоко.

    ОтветитьУдалить
  13. Все люди разные.

    ОтветитьУдалить
  14. Спасибо.Ваша информация очень пригодилась в разработке презентации к концу семестра.

    ОтветитьУдалить