Значительная часть фактических и будущих IT-специалистов ориентирована на зарубежного заказчика (работодателя). Для успешной реализации этих стремлений необходимо обладать информацией о том, что именно ожидает от вас потенциальный работодатель. Буквально на днях, наши ребята бурно обсуждали опыт работы с такими заказчиками, и кто-то кинул в общий чат ссылку на статью, которая представлена ниже. Джейсон Сейфер – преподаватель обучающего ресурса teamtreehouse.com рассказывает о том, какой набор базовых навыков необходим Junior Rails Developer. Несмотря на то, что Джейсон не вдается в конкретику, этот список языков, технологий и ПО поможет проверить широту своих знаний и определить направления подготовки, на которые необходимо обратить внимание.
Ruby on Rails
Само собой разумеется, что работодатели ищут специалистов, которые в полной мере владеют как Ruby, так и Ruby on Rails, также очевидно, что немалое значение имеет и опыт разработчика. Junior Rails Developer должен быть знаком с Rails Guides, а в частности:
— модели, контроллеры и представление (Вид);
— маршрутизация;
— валидации Active Record, обратные вызовы и связи (ассоциации);
— макеты;
— установка Bundler и Gem;
— отладка;
— знание документации и умение ее читать.
Трудно определить четкую границу технологий, поэтому необходимо владеть не только Rails, но и сопутствующими технологиями: например, Ruby, базовое администрирование linux, JavaScript и др.
Кроме того, важно знание чистого Ruby. Также, требуется знание синтаксиса Ruby и знакомство с руководством по стилю, например от GitHub.
HTML и CSS
Rails Developer должен знать как HTML, так и CSS. Конечно, встречаются случаи, когда планируется работа только с Ruby back-endом, но это довольно редкое явление.
JavaScript
Я сознательно объединяю JavaScript и JQuery в одно требование. При составлении требований к кандидатам они часто используются как взаимозаменяемые термины. Большой акцент делается на том, что JavaScript нужно знать именно в контексте Rails. Кроме того, обратите внимание на некоторые из фреймворков, которые активно набирают популярность. Знание Backbone, Ember и Angular дадут вам неплохое конкурентное преимущество.
MySQL
Хотя базы данных NOSQL становятся все популярнее, MySQL по-прежнему активно используются. Кроме того, вам стоит знать, что такое PostgreSQL и как ней пользоваться.
Модульное тестирование
Тот факт, что модульное тестирование имеет такую популярность, действительно меня радует. Сообщества Ruby и Rails проявили дальновидность и приняли тестирование на вооружение в долгосрочной перспективе. За последние несколько лет этот подход получил значительное распространение и является неотъемлемой частью многих инженерных культур. Знакомство с этим подходом может оказаться довольно непростым занятием, особенно, если вы изучаете модульное тестирование параллельно с основами языка, но ваши старания окупятся сторицей, как при приеме на работу, так и в ходе исправления собственного кода, который был написан полгода назад.
RSpec
Ruby and Rails сообщества известны своими инструментами тестирования, естественно это нашло отражение в требованиях к младшим. По-умолчанию Rails не включает RSpec, но многие компании приняли его на вооружение, оценив его ясность и простоту в использовании. Кстати говоря, лично я отдаю предпочтение именно RSpec.
Интересно, что каждый подход к организации тестирования (RSpec и модульное тестирование) встречается примерно в половине объявлений. Соответственно, можно считать необходимостью близкое знакомство с этими технологиями.
Git
Сегодня, Git де-факто является стандартом управления версиями. Да, Mercurial, Subversion и другие системы управления версиями, все еще используются, но Junior Rails Developer должен знать, как использовать Git. Использование системы управления версиями является важным требованием в наши дни. Дядя Боб Мартин сравнивает написание тестов и использование систем управления версиями с мытьем рук врача — это просто то, что делает каждый профессионал.
Администрирование Linux
В виду популяризации «DevOps», в которой разработчики должны писать программы, помогающие контролировать инфраструктуру приложения, первым шагом на пути к этой цели является обучение работе в Linux и администрирование системы. Речь идет об умении ориентироваться в операционной системе, установить программное обеспечение, обновить и настроить ПО, устранить неполадки и многое другое. После того, как эти навыки освоены, можно переходить к более продвинутым навыкам, связанным с DevOps, например Capistrano.
Agile методологии
Работодатели часто требуют знание и наличие опыта использования гибких подходов к разработке. Конечно, это палка о двух концах: невозможно получить опыт использования таких методик, не работая в команде, которая их использует. Я рекомендую прочитать по этой тематике все, что вы только сможете найти (примечание переводчика: http://agilemanifesto.org/ — необходимый базис).
Автор: Irina_Ua