Рубрика:
Карьера/Образование /
Рынок труда
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
Вакансия: программист Java
Продолжаем публикацию цикла статей в помощь ИТ-специалистам, начинающим и опытным, которые ищут работу. В этом номере представители компаний рассказывают, какие навыки они хотели бы видеть у программистов Java
- Какими знаниями и навыками должен обладать программист Java?
- Каков инструментарий программиста Java?
- Каковы требования компании к уровню образования потенциальных сотрудников?
- Какие требования предъявляются к опыту работы?
- Есть ли особые требования, которые обусловлены спецификой деятельности компании?
НИКОЛАЙ ЧАШНИКОВ, руководитель команды разработчиков в проекте IntelliJ IDEA в JetBrains
1. В мире Java существует огромное количество библиотек и фреймворков, облегчающих создание программ. Да и сам язык Java с виртуальной машиной, для которой он сделан, позволяет писать код, не задумываясь о многих вещах. Но это не значит, что об этих вещах не нужно знать. Хороший Java-программист не только умеет пользоваться разными библиотеками, но и знает про то, как эти библиотеки устроены внутри, как реализованы классы в стандартной библиотеке Java, какие алгоритмы и структуры данных за ними стоят, в какой байт-код компилируется исходный код на Java, как этот байт-код исполняется в JVM.
2. Большую часть времени разработчик проводит в IDE (Eclipse, IntelliJ IDEA, NetBeans). Они не только помогают при написании кода, но и упрощают использование остальных инструментов, перечисленных ниже. Даже при работе в одиночку удобнее хранить исходный код, используя одну из систем контроля версий (Git, Subversion, Perforce...), при работе в команде это становится обязательным.
Проекты на Java часто состоят из большого количества модулей и используют множество библиотек от сторонних разработчиков. Для управления зависимостями и сборки проектов используются Maven, Ant, Gradle, Ivy. При совместной работе над одним проектом важно постоянно проверять, что изменения, сделаннные разными разработчиками, согласуются друг с другом. Для этого существуют системы непрерывной интеграции (Jenkins, Bamboo, TeamCity и другие).
3. Требований по уровню образования у нас нет. Важно то, чему человек научился, а не то, какой диплом или сертификат он получил.
4. Junior-разработчиком может стать и студент старших курсов без опыта работы (впрочем, студенты обычно попадают на работу через стажировки), для senior developer необходимы три – пять лет работы в серьезной компании.
5. Для разных проектов в компании есть разные навыки, на которые мы можем обратить внимание. Например, для проекта IntelliJ IDEA плюсом будут знания о синтаксическом разборе программ или опыт по созданию плагинов для какой-либо IDE.
СЕРГЕЙ ВАВИНОВ, ведущий разработчик группы технологий работы с большими данными, Яндекс
1. Программист на Java в первую очередь должен быть просто хорошим разработчиком. Должен уметь разложить задачу на части, продумать подходящие алгоритмы, спроектировать программу и написать короткий, но понятный и тестируемый код или воспользоваться готовым решением. Из человеческих качеств в Яндексе очень важны аккуратность, способность работать в команде и готовность непрерывно учиться.
Конечно, есть и знания, специфичные для Java-платформы: это и стандартная библиотека, и детали реализации JVM (например, как устроен сборщик мусора), и такие инструменты, как reflection. Одна из сильных сторон Java – поддержка многопоточного программирования. Понимание принципов разработки многопоточных программ позволяет избежать многих ошибок, которые трудно обнаружить. Наконец, вокруг платформы Java есть много распространенных Open Source-библиотек. Знакомство с ними позволяет не «изобретать велосипед».
Хочу предостеречь специалистов от чрезмерной специализации: невозможно стать хорошим разработчиком на Java, если Java – единственный язык, который ты знаешь. Разработчик, специализирующийся на платформе Java, должен свободно владеть входящими в нее технологиями. Но он также должен понимать их ограничения, знать, когда можно опереться на сильные стороны JVM, а когда стоит выйти за ее пределы и использовать другие инструменты и языки.
2. Голова, среда разработки (IDE), система контроля версий, поисковик. А дальше – зависит от задачи.
3. В Яндексе уровень образования – важный, но не главный фактор для определения компетентности разработчика. Куда важнее реальный опыт, кругозор, а также любопытство и склонность к самообразованию.
Практически всегда для нас имеет значение общее математическое образование. Математическая подготовка хорошо ставит мышление, учит искать решения новых задач. Это полезно не только в наукоемких проектах, но и в обычных инженерных. Формальное образование в computer science дает знания, важные для любого разработчика, но при достаточной мотивированности многое из этого можно изучить и самостоятельно. Что же касается различных сертификаций по Java-технологиям, то их мало кто воспринимает всерьез.
4. Если говорить о Яндексе, то на стажерские вакансии и должности младших разработчиков мы готовы брать людей с минимальным опытом или даже без опыта, но с хорошей теоретической подготовкой. Остальному научим на месте. Насчет остальных вакансий отмечу, что мы с готовностью рассматриваем людей с опытом в других языках. Если кандидат несколько лет занимался серьезной разработкой на C++ или на .NET, а в Java делает лишь первые шаги, скорее всего ему не составит труда быстро разобраться в новых технологиях.
5. В первую очередь мы ожидаем от кандидатов базовых знаний в computer science: классические структуры данных, оценка сложности алгоритмов. Минимальные требования по Java – это знание самого языка Java, представление об устройстве JVM, стандартная библиотека.
Остальное зависит от вакансии. В проектах, связанных с машинным обучением, нужна хорошая математическая подготовка. При разработке массовых сервисов или систем обработки данных надо знать принципы построения распределенных масштабируемых и отказоустойчивых систем.
Многие инженерные задачи в Яндексе возникают в масштабах, на которых стандартные решения не работают. Нужно много думать и обмениваться опытом с коллегами. Поэтому во всех случаях плюсом являются широкий кругозор и открытость к изучению нового.
ТИМУР НИЗАМЕТДИНОВ, ведущий разработчик в Parallels
1. Самое главное – у него должно быть системное мышление. Также он должен очень быстро обучаться. Фреймворки очень часто меняются, но основные он должен знать: J2EE, Maven и т.д.
2. По-прежнему остается Eclipse.
3. Высшее образование, и, как я уже говорил, сотрудник должен обладать системным мышлением.
4. В нашей компании работа найдется для любых талантливых программистов.
5. Объем наследованного кода накладывает ряд ограничений. Например, необходимо умение быстро разобраться в проблеме и вынести решение, например, о рефакторинге либо об изоляции устаревшего кода. Программист должен быть способен разобраться в коде без документации.
ЕГОР АЛЕКСЕЕВ, директор по маркетингу ITmozg.ru
1. Java – один из самых востребованных языков программирования не только в России, но и в мире. В последнем рейтинге, который составил портал ITmozg.ru на основе вакансий разработчиков, размещенных компаниями в четвертом квартале 2013 года, Java занял третье место, уступив по частоте упоминаний только PHP и C/С++. Знание Java требуется почти в 14% программистских вакансий.
Средняя зарплата Java-девелопера также находится на достаточно высоком уровне – около 100 000 руб. – и продолжает расти. На такое вознаграждение могут рассчитывать кандидаты с опытом работы от трех лет. Конечно, зарплаты, которые предлагаются наиболее квалифицированным разработчикам в Москве и Санкт-Петербурге, могут быть значительно выше.
Образовательный ценз для потенциальных сотрудников в разработке не так строг. Многих работодателей интересуют реализованные проекты и конкретные скиллы, а не аттестат о высшем образовании. В большинстве вакансий требования к образованию либо не указаны, либо указаны достаточно расплывчато – «высшее/среднее профильное».
Среди основного инструментария, владение которым необходимо для кандидатов, указываются среды разработки Eclipse, IntelliJ IDEA, упоминается обязательность знания систем версионного контроля. Многие работодатели желают видеть в своих рядах сотрудников с подтвержденным опытом разработки серверных приложений на Java (JavaEE, JavaSE), уверенно владеющих объектно-ориентированной методологией, шаблонами проектирования (OOD Patterns), обладающих опытом работы с реляционными СУБД, знающих язык SQL, а также хорошо знакомых с сетевыми протоколами. Знание же английского требуется как минимум на уровне, который достаточен для чтения технической документации.
Подготовил Игорь Штомпель
Востребованная Java
Типичный перечень требований к знаниям и навыкам Java-программиста выглядит следующим образом: знание принципов объектно-ориентированного программирования; знание теоретических основ разработки баз данных; знание английского языка как минимум на уровне чтения технической документации; знание шаблонов проектирования Java и J2EE; навыки работы в команде; навыки работы с чужим кодом; навыки работы с системами контроля версий; навыки работы с СУБД (MS SQL/PostgreSQL/Oracle).
Чаще всего в вакансиях упоминаются Java-фреймворки Spring и JSF, фреймворк Maven, библиотека Hibernate.
Для 18% работодателей, разместивших вакансии Java-программистов на рекрутинговом портале Superjob.ru, уровень образования кандидата не имеет значения. Однако большинство (63%) готовы рассматривать соискателей именно с высшим образованием. Для 15% вакансий достаточно неполного высшего образования, для 4% – среднего специального.
Многие работодатели ищут Java-программистов с опытом работы от 1 до 3 лет (38% вакансий). 28% вакансий адресовано программистам Java с опытом работы до 1 года, почти столько же – 26% – профессионалам с опытом работы от 3 до 6 лет. Гуру Java-разработки (опыт работы свыше 6 лет) требуется в одной вакансии из 100. Для junior-программистов без опыта работы – 8% вакансий.
Существуют определенные пожелания в связи с задачами, которые предполагается решать программисту в компании. Например, процессинговой компании интересны соискатели с опытом разработки платежных систем (не обязательно именно на Java), а для реализации интерфейсов для мобильных устройств требуется сотрудник с опытом создания мобильных приложений.
Среднемесячное зарплатное предложение для Java-программистов по данным Superjob.ru в Москве составляет 104 000 руб., в Санкт-Петербурге – 84 000 руб. Выше всего средние предложения в сегменте «Информационные технологии/Телеком»: 115 000 руб. в Москве, 94 000 руб. в Санкт-Петербурге.
Валерия Чернецова, руководитель отдела аналитики рекрутингового портала Superjob.ru
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|