Работа программистом — как начать?


Мой взгляд


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

Сначала я скажу пару слов о своем опыте, согласно которому я пишу эту статью. В данный момент я студент 5 курса специальности "Программное обеспечение автоматизированных систем", студент-дипломник в компьютерной академии "Шаг" и студент 1 курса факультета переподготовки кадров ДонНТУ по специальности "Менеджмент организаций. Большинство предметов, которые я изучал и изучаю, мои одногруппники называли бесполезными. Я их всегда поддерживал в этом, тем не менее, даже из самых бесполезных и не нужных, на мой взгляд, дисциплин я стараюсь извлекать максимальную пользу – если уж я обязан уделять время этим дисциплинам, то почему это время должно уходить впустую?

На 3 курсе ДонНТУ я понял, что имею достаточно много свободного времени. Поэтому я поступил в компьютерную академию "Шаг". Интуитивно я догадывался, что мне это поможет в будущем. И действительно, через 2 месяца после начала учебы меня пригласили в анимационную студию Toonguru на собеседование.

Первое собеседование — что же делать?


Я точно могу сказать, что воспоминания о первых опытах разговора с работодателями остается на всю жизнь (в хорошем смысле слова). Самый первый такой опыт я получил в декабре 2008 года, когда общался с Владимиром Лыковым из Анимационной студии Toonguru. Никакой специальной подготовки я не проходил, более того я даже не был готов к таким разговорам. Тем не менее, я нашел, что сказать.

Исходя из этого опыта, хотелось бы дать свои рекомендации для тех, кому это еще предстоит:

  • Ваш будущий работодатель, скорее всего, учился на похожей специальности, а, возможно, закончил именно Вашу специальность еще несколько лет назад. Он прекрасно понимает уровень преподавания тех или иных дисциплин, так как сам на себе "ощутил" всех преподавателей и атмосферу обучения со всей ее спецификой в данной области знаний.
    Поэтому как бы вы не старались показать свои положительные стороны, если они не подкреплены каким-либо опытом вне университета, либо дополнительными знаниями, Вам это не сильно поможет
  • не стремитесь много рассказывать о глубоких знаниях Lisp, Prolog и MS Access и подобных средств. Глубокие знания их обычно начинаются и заканчиваются соответствующими учебными дисциплинами. Но когда Ваш работодатель слышит, что вы при повествовании о своих умениях рассказываете университетские дисциплины с первого по последний курс в хронологическом порядке (особенно, если это специальность работодателя), впечатление складывается не из лучших. И, более того, сразу становится ясно, что Вы врядли изучали что-то самостоятельно
  • многие работодатели просят приносить на первые собеседования свои курсовые и другие учебные проекты. Я не могу сказать, насколько это эффективно, но, на мой взгляд, наибольшую цену имеют те проекты, которые Вы писали самостоятельно, не для сдачи в университет. Пусть это даже не коммерческие проекты, но это проекты, которые вы на «энтузиазме» написали для своего самоутверждения.

    Что это может быть? Какие либо мелкие Flash игрушки, либо небольшие игры или проекты на WPF или GDI+, Java, Silverlight и других технологиях. Во-первых, на будущей работе вам врядли придется распознавать и аппроксимировать программно аналоговые сигналы или писать вручную 3D движки, поэтому Ваши университетские работы, как бы они не были сложны, для работодателя будут выглядеть довольно смешно. Но если вы сделаете проект с минимальной (!!!) логикой, с десятком небольших исходных файлов, но презентабильного вида и без явных ошибок и вылетающих Runtime Error, это будет более значимым
  • для раскрытия своих способностей часто просят сделать какой-либо тестовый проект. Даже если его сделать не просят, а дают некоторое время на изучение чего-либо, очень полезно сделать тестовый проект на этом "чем-то". На первом собеседовании в анимационной студии Toonguru я взял несколько книг у Владимира Лыкова по Macromedia Flash 8. За 2 недели я прочитал эти книги, сделал по ним ряд "экспериментов" и создал тестовую игру Cool Spots

    Сценарий игры я взял из похожей Java Midlet игры, но весь дизайн и логику я писал самостоятельно. Владимиру очень понравилась эта игра, несмотря на множество недочетов в графике (использование фильтров, неровные углы и т д. Они же анимационная студия – они видят все!).
  • при окончании собеседования ОБЯЗАТЕЛЬНО необходимо договориться о дальнейших отношениях: кто с кем должен связаться, каким образом и в какие сроки. Даже если Вы не подходите данной организации, Вы должны четко знать об этом. Это дает понять, чего от Вас хотят, что Вы можете предложить, а так же экономит значительное время.

Оплата в начале работы


Отдельно хотелось бы сказать об оплате в начале работы. Некоторые организации могут даже при выполнении Вами тестовых заданий оплатить вам затраченное время, конечно, по символической цене (скажем, 1-2$ в час). Это дает Вам дополнительный стимул к выполнению задания, а так же дает понять, что организация платежеспособная и может тратить средства на подбор персонала.

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

Если Вас уже приняли на работу, скажем, как Junior Developer, оплата Вашего времени на первом этапе будет 4-10$ в час, в зависимости организации и от Вашего уровня квалификации

Работа с иностранными организациями


Мой опыт работы в организации Flying Squirrel Storage LLC дал мне некоторое представление о ведении IT работ и IT бизнеса за рубежом (в США). Здесь я хотел бы привести некоторые отличительные черты организации отечественной и зарубежной IT индустрии:

  • отношение к организации

    Организация – залог успешного выполнения проекта. Тем не менее, организации в отечественной IT индустрии уделяют значительно меньше внимания. Все проекты, в которых я участвовал в Донецке, сдавались просроченными. Более того, сроки на эти проекты были более, чем реальные, но начало серьезной работы приходилось на последние 10% времени, отведенного на разработку. В зарубежных компаниях предпочитают устанавливать реальные сроки, зачастую спрашивая их у самих разработчиков. При этом организация разработки строится таким образом, чтобы в срок можно было успеть написать и проверить свой код, создать для него тесты и отправить на QA. А иногда даже забрать у QA и доделать недочеты. Соответственно, заказчик уверен на 90%, что работа будет выполнена в срок и с надлежащим качеством.

  • оплата труда

    Менталитет постсоветского пространства таков, что каждый хочет знать, во сколько ему обойдется разработка. Во сколько – с точностью до 1$. Поэтому преобладает попроектная оплата работы. Негатив данной оплаты:

    • заказчик реально не знает, сколько будет работать программист. Например, разработчик может взять 400$ за определенный проект, найти похожий в интернет и переделать его, скажем за 5 часов. Таким образом, его оплата составит 80$ в час. Конечно, такое пройдет не часто, но потенциальная возможность существует.
    • при фиксированном бюджете разработчик стремится сократить время на разработку до минимума. Так, пропадает время на проверку кода, написание тестов. Все это значительно сказывается на качестве кода и работоспособности приложения в целом.
    • для разработчика очень сложно правильно оценить бюджет проекта на начальном этапе. Поэтому очень часто при неправильных оценках приходится работать себе в ущерб. Например, при том же бюджете в 400$ из расчета разработчика на 30 часов работы выходит 13.33$ в час, хотя реально при неправильных расчетах можно "попасть" на 60 часов, соответственно и оплата времени будет в 2 раза меньше.
    • наиболее печальными для разработчика являются правки и доделки. Как правило, при попроектной оплате они никак не оплачиваются, но требуют значительных временных затрат.

    В отличие от большинства отечественных работодателей, зарубежные работодатели предпочитают почасовую оплату. Основное преимущество данной оплаты, на мой взгляд, является прозрачность отношений работодателя и работника. Работник может в спокойной обстановке думать над кодом, делать частый рефакторинг и оптимизацию, писать качественный код и гарантировать его работоспособность. Так можно не бояться каких-либо изменений задания и правок – они всегда будут оплачены. Еще одной очень важной особенностью такой оплаты является то, что все время, которое тратит работник на изучение дополнительной документации, является также оплачиваемым. Соответственно, оплачивается время, которое Вы тратите на самосовершенствование.

  • качество организации персонала

    Отечественные работодатели нацелены большей степенью на получение результата. Таким образом, отношения в команде с точки зрения коллективного использования программных средств и комплексов совершенно не развиты. Некоторые организации, в которых, например, используется Subversion, не умеют им пользоваться, при этом, сливая код вручную, тратят на это дни вместо минут. Некоторые вообще не используют подобных средств, пересылая исходные коды, графику и другие файлы разработки через e-mail или с помощью файлообменников. Таким образом, теряется значительная часть рабочего времени. В отличие от них, в зарубежных компаниях значительное внимание уделяется прогрессивным средствам командной разработки (Subversion, Trac, Gid, Worksection и т д). Также уделяется внимание онлайн общению членов команды, причем оно оплачивается как рабочее время.

Заметность


Отдельным пунктом в становлении как специалиста я бы обозначил регистрацию на всех профессиональных порталах и социальных сетях. Мои рекомендации к резюме на них аналогичны рекомендациям к собеседованию. Для поиска деловых контактов достаточно перспективным, на мой взгляд, является linked.in, так как там зарегистрировано множество хед-хантеров. При хорошем резюме Вас непременно найдут. Важной является регистрация и на Facebook, но с профессиональной точки зрения (фотографии с пляжа туда добавлять не обязательно:)). На всех ресурсах, на которых Вы регистрируетесь, добавляйте фотографию профиля. Это значительно повышает вероятность, что Вам напишут потенциальные работодатели.

Напоследок


Вместо вывода хотелось бы сказать, еще пару слов о самом процессе поиска работы. Мнение, возможно, субъективно, но

Уделяйте значительное внимание учебе, а работа найдет Вас сама