Ruby junior: Работа junior Ruby on Rails developer в Москве

Содержание

Вакансия Junior Ruby Developer на Geekjob.ru

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

TO

Прямой работодатель  Toughbyte ( www.toughbyte.com )

Джуниор • Миддл

Информационные технологии • Разработка • Ruby • Backend • CRM

3 декабря 2021

Удаленная работа
Опыт работы любойот 40 000 до 90 000 ₽

Работодатель  Toughbyte

Короткая ссылка: geekjob.ru/hVug

Описание вакансии


Toughbyte – это рекрутинговая платформа, которая помогает ИТ-специалистам и работодателям находить друг друга.

Нашу компанию основали разработчики, выпускники Физтеха и Кембриджа, создавшие крупнейшие митапы в России и Финляндии: MoscowJS, PiterJS, HelsinkiJS. За шесть лет мы вышли на рынки восьми европейских стран и продолжаем расти.

Мы ищем Ruby разработчика для развития платформы. В разработке используем последние версии библиотек, Kanban, GitHub flow, CI/CD, а также контрибьютим в open-source.

Задачи:

  • Разработка ядра и веб-интерфейса платформы на Ruby on Rails 6
  • Разработка расширений для Chrome на JavaScript, автоматизирующих работу рекрутеров и менеджеров по продажам
  • Интеграция платформы, расширений и сторонних сервисов через API

Требования:

  • Знакомство с Ruby или JavaScript и желание развиваться в веб-разработке
  • Знакомство с реляционными базами данных и SQL
  • Продуктовый подход к разработке, умение слышать, понимать и реализовывать потребности бизнеса
  • Грамотный письменный английский – вся наша документация и внутренняя переписка ведется на английском языке

Предлагаем:

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

Специализация
Информационные технологииРазработкаRubyBackend
Отрасль и сфера применения
CRM

Уровень должности
ДжуниорМиддл

По вопросам о компании и вакансии пишите в почту ekaterina. [email protected].


Вакансии от “Toughbyte”

Еще интересные вакансии

  • 200K — 350K ₽

    Backend разработчик (Java/Kotlin)

    ООО Global Soft

    remote 

  • Sochi
    от 50K ₽

    Python developer В ОФИС

    ItFox

    office 

  • Москва
    200K ₽

    Python разработчик

    АВ Софт

    office 

  • Limassol
    4K — 5K €

    PHP Developer

    Simple

    relocate remote 

  • Москва
    от 180K ₽

    Backend Node.js разработчик

    ООО “Лаборатория Маркетинга”

    relocate parttime office 

  • Челябинск
    100K — 200K ₽

    Middle PHP backend-разработчик

    Интерсвязь

    remote office 

  • Москва
    200K — 280K ₽

    Middle Python Developer

    CoMagic.dev

    remote 

  • Уфа
    100K — 160K ₽

    Python backend developer

    SMENA

    remote 

  • Пр

    WordPress программист

    Просто Сайт

    remote parttime 

  • Москва

    Java-разработчик

    Деловые решения и технологии

    remote 

Еще. ..

300+ вопросов с собеседований для Ruby-разработчиков уровня Junior

Что нужно знать, когда проходишь техническое собеседование по Ruby? Сайт DOU.UA попросил интервьюеров-практиков прислать свои списки вопросов, а затем обобщил их в одной статье. Представляем вам перевод первой части этого материала, с вопросами для джуниоров.

Общие вопросы

1. Какие принципы программирования вы знаете и каких из них вы чаще всего стараетесь придерживаться?

2. Что такое парадигма ООП? Каковы основные составляющие этой парадигмы?

3. Зачем нужна инкапсуляция? Что может произойти и не произойти, если все методы будут иметь модификатор доступа public?

4. Что такое наследование? Назовите пример(ы) плохого наследования (такого, которое не стоило бы реализовывать).

5. Что такое полиморфизм? Приведите пример использования полиморфизма.

6. Что такое паттерн / шаблон проектирования? Какие шаблоны знаете?

7. Что такое клиент и сервер? Какова механика их взаимодействия?

8. Опишите путь, который проходит запрос после того, как в браузер вводится URL любого ресурса.

9. Что такое протокол HTTP? Чем отличаются HTTP и HTTPS?

10. Что такое API? Может ли веб-приложение использовать больше одного API?

11. Что такое REST API? Какие действия чаще всего выполняются над ресурсами?

12. Что такое сессия? Что такое cookies? Какая разница между ними?

13. Какие веб-уязвимости знаете? Как от них защититься? Какие есть инструменты, позволяющие автоматически контролировать защиту от веб-уязвимостей?

14. Какими критериями пользуетесь для выбора библиотеки?

15. Что такое рефакторинг? Какие условия должны быть для выполнения рефакторинга?

16. Знаете ли вы семейство UNIX-подобных операционных систем (Linux, MacOS)? Назовите команды, которые чаще всего используете в терминале.

17. Что такое аутентификация?

18. Что такое авторизация?

19. Назовите, из каких частей состоит HTTP Request и HTTP Response.

20. Какие HTTP-статусы (HTTP-коды) знаете? На какие группы вы могли бы их разделить?

21. Какие HTTP-методы знаете? Зачем используется каждый из них?

Git

22. Знакомы ли вы с системой Git?

23. Для чего нужны ветви в Git? Как создать ветку?

24. Как скопировать проект с Git-хостинга (GitHub / GitLab / Bitbucket / другие)?

25. Что такое флаг -f? Для чего он нужен и каковы минусы его использования?

26. Что такое Pull Request? Почему ветки объединяют через Pull Request?

27. Какие еще команды чаще всего применяете, когда пользуетесь Git?

Ruby

28. Как вы контролируете версии Ruby на своей локальной машине?

29. Что такое метапрограммирование? Каковы плюсы и минусы использования метапрограммирования?

30. Какой менеджер библиотек для Ruby знаете? Как добавлять библиотеки? Как контролировать версии библиотек?

Style guide

31. Что такое style guide и зачем его используют?

32. Какой популярный линтер контролирует выполнение большей части пунктов Ruby Style Guide?

Основы Ruby

33. Какие типы переменных есть в Ruby?

34. Что вернется в результате сложения 10.5 и 10?

35. Чем отличаются переменные, начинающиеся с @, @@ и $?

36. Что такое attr_reader, attr_writer, attr_accessor и зачем они?

37. Что такое метод?

38. Что значит «?» в конце названия методов? Что означает «!» в конце названия методов?

39. Чем отличается енумератор map от each?

40. Что такое модуль? Какие есть варианты подключения модулей в класс?

41. Что такое класс и зачем он нужен?

42. Что такое модуль и зачем его используют? Чем модуль отличается от класса?

43. Что такое константа?

44. Что такое блок? Что такое yield? Можно ли передавать блоки в методы? Каким образом?

45. Что такое proc?

46. Что такое lambda?

47. В чем разница между proc и lambda?

48. Что такое eigenclass?

49. Какие виды условных операторов есть в Ruby? (if, unless, ternary, case)

50. Есть ли разница между операторами && и and?

51. Какие виды циклов есть в Ruby? (loop, while, until, for, each(), times(), upto())

Типы данных

52. Какие типы данных есть в Ruby?

53. Что такое интерполяция?

54. Что такое конкатенация?

55. Что такое массив в Ruby?

56. Что такое Hash в Ruby? Чем Hash отличается от массива?

57. Что такое символ и зачем он нужен?

58. Что такое Range и зачем его используют?

59. Что такое Time и Date?

60. Что такое Struct?

61. Что такое File?

Структура классов и объектов

62. Что такое BasicObject?

63. Что такое Numeric?

64. Что такое Enumerable?

65. Что такое Struct?

66. Что такое OpenStruct?

67. Что такое Set?

68. Что такое Queue?

69. Что такое Object?

70. Что такое Kernel?

ООП на Ruby

71. Есть ли интерфейсы в Ruby?

72. Что такое getter и setter в Ruby? Как их создавать?

73. Что такое инстансная переменная?

74. Что такое константа класса?

75. Какова разница между методом класса и методом объекта?

76. Какие есть области видимости?

77. Какие есть модификаторы доступа? Чем private отличается от protected?

78. Поддерживает ли Ruby множественное наследование?

79. Как наследуются методы? Можно ли переопределить метод?

80. Зачем нужен метод super?

81. Что такое Singleton-метод?

82. Что такое миксины? Зачем они нужны и чем отличаются от декоратора?

83. Что такое include и extend и в чем разница между ними?

84. Каков путь поиска метода в иерархии классов?

85. В чем разница между последовательными и именованными аргументами метода?

86. Что такое exception? Когда они применяются? Как вызвать exception? Как отловить exception?

Метапрограммирование

87. Что означает open class?

88. Что такое monkey patching?

89. Возможно ли создать класс динамически? Если да, то как именно?

90. Какие есть способы динамического управления методами, переменными и классами (define_method(), class_eval(), module_eval())?

91. Как происходит поиск метода в иерархии? Как можно обработать отсутствие метода (method_missing())?

92. Что такое алиас метода? Для чего нужны алиасы?

93. Как получить значение инстансной переменной? Как задать значение? Как проверить существование инстансной переменной (instance_variable_get(), instance_variable_set(), instance_variable_defined())?

94. Какие методы интроспекции есть в Ruby (class(), ancestors(), methods(), private_methods(), instance_variables(), singleton_methods(), local_variables())?

95. Что такое хуки и зачем их используют (inherited(), included(), method_added(), singleton_method_added(), method_missing())?

RubyGems

96. Что такое gem? Что такое RubyGems?

97. С какой целью используют RVM? Что такое gemset?

98. Что такое Bundler и зачем он нужен?

99. Что такое Gemfile и для чего его используют?

100. Назовите, за что отвечает каждый из gem-ов. Если знаете нюансы в работе какого-либо из них — обязательно озвучьте.

  • active_admin
  • active_model_serializers
  • bundle audit
  • bcrypt
  • devise
  • jwt
  • cancancan / pundit
  • draper
  • kaminari
  • sidekiq
  • rspec
  • shoulda-matchers
  • faker
  • factory_bot
  • simplecov
  • rubocop (with extensions)
  • pry

Ruby on Rails

101. Что такое MVC? Является ли Rails MVC-фреймворком?

102. Что такое миграция? Для чего она нужна? Какие есть правила создания миграций?

103. Что такое роуты? Что такое resource и resources в роутах?

104. Чем отличается has_many through от has_and_belongs_to_many?

105. Зачем используют concerns?

106. Как работать с sensitive-данными в Rails-приложениях (токены, ключи и т.д.)? Как работает механизм credentials в Rails?

107. С какой целью используют локали (locals)?

Style guide

108. Знакомы ли вы с RoR style guide?

Структура файлов в Rails

109. Из чего состоит Rails-приложение? Какова архитектура директорий? Зачем нужна каждая из них?

110. Чем отличается lib от vendor?

111. Как создать background job в Rails?

112. Какие есть способы загрузки ассоциаций в Rails?

Модели и ActiveRecord

113. Зачем нужны модели? Чем является модель?

114. Что такое ORM? Что такое ActiveRecord?

115. Какие есть правила наименования моделей и таблиц в базе данных?

116. Что такое миграции и зачем нужен этот механизм? Как создавать миграции?

117. Какие виды валидаций есть в AR?

118. Как можно вызвать валидацию? Когда валидация вызывается автоматически? Как можно выключить валидацию при сохранении?

119. Что такое callback в Rails?

120. Какие виды колбеков есть в AR?

121. Какие виды ассоциаций есть в AR?

122. Что такое has_one и belongs_to?

123. Что такое has_many?

124. Что такое has_many: through?

125. Что такое has_one: through?

126. Что такое has_and_belongs_to_many?

127. Что такое полиморфная ассоциация?

128. Что такое STI?

129. Каким образом можно получить данные из базы данных? Как получить один объект и коллекцию? Как задать условия выборки?

130. Что такое скоупы? Какова их функция?

131. Как выполнить произвольный SQL-запрос?

132. Как посмотреть информацию о том, как выполнялся запрос, какие ключи использовались и т.п.?

Контроллеры

133. Что такое контроллер? Какую задачу он выполняет?

134. Что такое action? Что такое CRUD action?

135. Что такое permit params?

136. Что такое ActiveRecord? Как он реализован в Rails-фреймворке?

137. Что такое параметры? Как они попадают в контроллер? Что такое дефолтные параметры (в роутах)? Что такое стронг-параметры?

138. Что такое cookies и зачем они нужны? Где хранятся cookies? Как получить доступ к cookies?

139. Что такое сессии и в чем их задача? Где хранятся сессии? Как получить доступ к сессии?

140. Какие виды фильтров есть в Rails? (before / after / around actions)

141. Зачем нужен объект Request? Какую информацию он содержит?

142. Для чего нужен объект Response? Какую информацию он содержит?

143. Что такое стриминг? Каким образом можно отдать файл на загрузку (Send_data, send_file)?

144. Что такое Rescue в контроллерах и для чего применяется?

145. Как принудительно включить использование HTTPS-протокола?

Маршрутизация

146. Что такое роуты и в чем их функция?

147. Что означает аббревиатура CRUD?

148. Если нужно сделать новый CRUD для определенного ресурса, какие классы вы создадите и файлы измените?

149. Что такое ресурсы?

150. Что такое Singular-ресурсы и отличает их от обычных ресурсов?

151. Что делают неймспейсы в роутах?

152. Что такое вложенные ресурсы?

153. Что такое shallow nesting?

154. Что значит RESTful роуты?

155. Что такое нересурсные роуты?

156. Что такое actions в роутах?

View

157. Что такое view и для чего он нужен?

158. Что такое layout? Чем отличается от view?

159. Что такое шаблонизатор и с какими шаблонизаторами вам приходилось работать?

160. Зачем нужен метод render? Что можно рендерить с его помощью?

161. Как передаются переменные во view?

162. Что такое partial? Когда стоит его применять?

163. Что такое хелпер и зачем его используют?

164. Какие есть хелперы для генерации роутов?

165. Какие есть хелперы для генерации форм?

166. Как создавать собственные хелперы?

Интернационализация Rails

167. Что такое i18n? Зачем нужна i18n? Как она устроена в RoR? В каком виде можно хранить переводы?

ActionMailer

168. Что такое ActionMailer и какие задачи он решает?

AssetsPipeline

169. Что такое AssetsPipeline и какие задачи он выполняет?

Инструменты консоли и rake-таски

170. Какие есть консольные команды для работы с RoR? Что такое rake-таски?

Безопасность

171. Знаете ли вы какие-то уязвимые места, защиту от которых Rails предоставляет out of the box?

172. Какие атаки могут быть при неправильном использовании сессий? Почему нельзя хранить важные данные в сессиях?

173. Что такое CSRF? Как правильно защититься от CSRF?

174. В чем уязвимость Open Redirect? Как защититься от возможных атак, связанных с Open Redirect?

175. Какие уязвимости связаны с загрузкой файлов? Почему важно фильтровать имена и расширения файлов? Как защититься от опасности?

176. Почему нельзя загружать файлы в каталог, доступный снаружи? Что будет, если злоумышленник загрузит файл с кодом?

177. Какие уязвимости связаны с управлением пользователями (ссылка активации, пароли в чистом виде)? Как защититься?

178. Что такое инъекции и как происходит такая атака? Как их избежать?

179. Как организовать безопасную генерацию приглашений? Что такое deep_munge?

Конфигурация

180. Где располагается основная конфигурация программы?

181. Что такое initializers? Зачем они нужны?

182. Что такое окружение? Каково его назначение?

183. Как и где настраивается взаимодействие с базой данных?

184. Как и где настраивается Assets, генераторы, мидлвары, i18n?

185. Можно ли указывать произвольные настройки? Если да, то где и каким образом?

Кэширование

186. Что такое кэш и зачем нужен этот механизм?

187. Какие виды кэширования есть в Rails?

188. Где может храниться кэш?

189. Зачем использовать кэширование страниц?

190. Зачем использовать кэширование экшенов?

191. Зачем использовать кэширование фрагментов?

192. Что такое Memcached?

193. Зачем и как реализуется низкоуровневое кэширование?

194. Как и когда кэшируется SQL?

195. Как тестировать кэширование в режиме разработки?

Реляционные базы данных

Теория реляционных баз данных

196. Что такое СУБД?

197. Что такое реляционная база данных?

198. Что такое нормализация базы данных?

199. Что такое нормальная форма?

200. Сколько есть нормальных форм баз данных?

201. Опишите первые три нормальные формы баз данных.

202. Что такое денормализация баз данных?

203. В чем разница между Primary Key и Foreign Key? Зачем они нужны?

204. Какова разница между LEFT JOIN, INNER JOIN, RIGHT JOIN?

205. Как добавить запись в таблицу без ORM?

206. Как обновить запись в таблице без ORM?

207. Как удалить запись из таблицы без ORM?

208. Как прочитать записи в таблице без ORM?

209. Какие правила группировки данных в таблице вы знаете?

SQL

210. Что такое DML (Data Manipulation Language)?

211. Что такое DDL (Data Definition Language)?

212. Что такое DCL (Data Control Language)?

213. Что такое TCL (Transaction Control Language)?

214. Как выбрать данные из нескольких таблиц? Какие виды JOIN вы знаете?

215. Какие агрегированные показатели можно использовать во время выборки из таблицы?

216. Что такое таблица в базе данных?

217. Как создать таблицу?

218. Как выбрать записи из таблицы?

219. Как вставить запись в таблицу?

220. Как изменить запись в таблице?

221. Как удалить запись из таблицы?

222. Как объединить выборку из разных таблиц?

223. Что такое группирование или агрегирование?

224. Каким образом можно задавать условия агрегирования?

Индексы баз данных

225. Что такое индексы в базе данных?

226. Для чего нужны индексы?

227. Какие виды индексов существуют?

228. Что такое первичный ключ?

229. Что такое внешний ключ?

230. Что такое составной ключ?

Полнотекстовый индекс в базах данных

231. Что такое полнотекстовый поиск и в чем его задача?

232. Что такое полнотекстовый индекс?

233. Что такое ts_vector?

234. Что такое ts_query?

PostgreSQL

235. Что такое select distinct и какова его функция?

236. Каким образом можно сортировать результаты выборки?

237. Как ограничить количество результатов выборки?

238. Как проводить поиск по подстрокам?

239. Какие виды объединений (JOIN) есть в PostgreSQL?

240. Что такое подзапросы и в чем их задача?

241. Какие типы данных есть в PostgreSQL?

242. Какие есть виды символьных типов данных?

243. Какие есть виды типов данных для работы с датой и временем?

244. Что такое тип enum? Когда он используется?

245. Как можно создавать таблицы в базе данных?

246. Как изменять структуру таблицы?

247. Как удалять таблицы?

248. Как очистить таблицу?

249. Возможно ли задавать значения по умолчанию для полей? Если да, то как именно?

250. Возможно ли контролировать уникальность значений при вставке? Если да, то каким образом?

251. Что такое функции в PostgreSQL?

252. Какие операторы есть в PostgreSQL?

Базы данных NoSQL
Redis

253. Что это такое Redis и зачем используют этот инструмент?

Elasticsearch

254. Что такое Elasticsearch и зачем его используют?

Статический анализ кода

255. Что такое Overcommit и зачем нужен?

256. Что такое Danger и для чего используется?

257. Что такое статические анализаторы кода? Зачем их используют?

258. Какие анализаторы для Ruby / Ruby on Rails знаете?

259. Какие статические анализаторы кода для JavaScript знаете?

Тестирование

260. Какие виды тестирования знаете? Какие из них вы практиковали при использовании Rails?

261. Какой фреймворк для тестирования используете?

262. Какие показатели качества для своих тестов можете назвать?

263. С помощью какой библиотеки контролируете процент покрытия тестами?

264. Расскажите об основах тестирования в Ruby. Что такое RSpec? В чем разница между describe, context и it?

265. В чем разница между юнит-тестами и интеграционными?

266. Что проверяют приемным тестированием?

267. Что проверяют интеграционным тестированием?

268. Что тестируют в моделях?

269. Что тестируют в контроллерах?

270. Что тестируют в сериалайзерах?

271. Как тестировать API?

272. Как тестировать различные Service Objects?

273. Что такое RSpec? Какие задачи выполняет этот инструмент?

274. В чем разница между let и let! в RSpec?

275. Какие хуки в RSpec знаете?

276. Что выполняется раньше: let! или хук before(:all)?

277. Что такое Capybara? Какие задачи решает Capybara?

278. Что такое стабы?

279. Что такое моки?

280. Что такое матчер?

281. Какую задачу выполняет гем Shoulda Matchers?

282. Какую задачу выполняет Faker?

283. Зачем нужны Webmock и VCR? Чем они отличаются?

284. Что такое WebKit и PhantomJS? В чем разница между ними? Какие еще есть драйверы?

285. Как работать с базой данных в тестах? Как работает gem database_cleaner?

Дополнительные RubyGems и Rails плагины

286. Какие задачи выполняет Devise?

287. Какие задачи выполняет Rake?

288. Какие задачи выполняет Cancancan и Pundit?

289. Какие задачи выполняет Kaminari и Will_paginate?

290. Какие задачи выполняет Carrierwave?

291. Какие задачи выполняет MiniMagick?

292. Какие задачи выполняет Aasm?

293. Какие задачи выполняет ActiveAdmin?

294. Какие задачи выполняет Nokogiri?

295. Какие задачи выполняет Formtastic и SimpleForm?

296. Какие задачи выполняет Omniauth?

297. Какие задачи выполняет Draper?

298. Какие задачи выполняет Faye?

299. Какие задачи выполняет Pusher?

300. Какие задачи выполняет Sidekiq, Resque?

301. Какие задачи выполняет Mongoid?

Управление, сервисы и DevOps

302. Что такое SSH? Как и для чего используется?

303. Каким образом можно настроить аутентификацию на хосте без пароля?

304. Какие задачи выполняет Heroku? В чем его особенность?

305. Какие задачи выполняет Digitalocean?

306. Какие задачи выполняет Docker?

Мониторинг

307. Какие задачи выполняют Airbrake, DataDog, NewRelic?

308. С какой целью используют Monit?

Ruby Web Tools

309. Какие есть вебсерверы, написанные на Ruby?

310. Что такое Sinatra?

311. Что такое API? Для чего используется? Что такое сериалайзеры и зачем они нужны?

312. Что такое клиент-серверная модель?

313. В чем разница между GET- и POST-запросами?

314. Что такое HTTParty и какие задачи он выполняет?

315. Что такое Faraday и какие задачи он выполняет?

316. Что такое Rack? Что такое Rack-application? Что такое Rack middleware?

317. Что такое push-технология?

Интеграции

318. Есть ли опыт интеграции с Facebook? Если да, то на каком проект?

319. Есть ли опыт интеграции с Twitter? Если да, то на каком проекте?

320. Есть ли опыт интеграции с LinkedIn? Если да, то на каком проекте?

321. Есть ли опыт интеграции с Google? Если да, то на каком проекте?

Практические задания

322. Описать в ООП-стиле один из предметов интерьера в контексте конкретного бизнеса. Например, кресло, на котором сидит кандидат, теперь надо продавать в магазине.

323. Написать консольную версию игры «крестики-нолики», где входные данные передаются через gets, а выводят через puts. Два пользователя должны иметь возможность сыграть партию на одной машине.

324. Отсортировать массив.

325. Написать функцию, которая вернет уникальные элементы массива, не используя функцию uniq или set, to_set из стандартной библиотеки.

Как я стал младшим разработчиком Ruby

АВТОР: АЛЕКСАНДР МЕШКОВ

Прошел путь от “почти ничего не знаю о веб-разработке” до “зарабатываю на этом” за 4 месяца.

В конце 2015 года я серьезно задумался о смене профессии, мне тогда было 25 лет. Последние 6 лет я работал на забавной, хорошо оплачиваемой, но совершенно бессмысленной работе.

Мой выбор пал на программирование → Web → Ruby on Rails. Не буду объяснять почему, я много гуглил эту тему и выбирал то, что было бы мне интереснее и больше подходило для моей карьеры.

Мои навыки на тот момент были: HTML и Паскаль в школе, пару лаб по С на первом курсе института (учился на энергетика). Я закончил институт, но энергетиком так и не стал.

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

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

Первый месяц – знакомился с HTML, CSS, RUBY.

Первое и самое ценное, что я прочитал о Ruby on Rails, была очень маленькая книжечка “Самостоятельная работа веб-разработчика”. Вы можете получить его совершенно бесплатно здесь. Я часто возвращался к нему во время учебы. Это отличная книга для начала.

В тот момент я еще работал на прежней работе. Первое, с чего я решил начать, это освежить школьные воспоминания об HTML и познакомиться с CSS. Несколько часов в день я занимался в HTML Academy. Базовый курс HTML и CSS был там бесплатным. Курс заканчивать не нужно было, поэтому я прошла примерно 85%.

Потом я познакомился с Ruby. Трудно представить себе более красивый и выразительный язык.

  • очень классный учебник – «Учись программировать», Крис Пайн. Это отличное введение в Ruby: https://pine.fm/LearnToProgram/
  • .
  • Затем проверьте наши знания на https://en.wikibooks.org/wiki/Ruby_Programming. Прочитав эти книги, выполните все поставленные задачи.
  • Пришло время попрактиковаться в Руби. Пишите методы на https://www.codewars.com;
  • Также рекомендую выполнять задания по Играм разума, чтобы разбудить свои аналитические способности. Отличный способ отвлечься от программирования с пользой.
Второй месяц — Пробуем Rails

Я так увлекся изучением программирования, что решил бросить работу и посвятить все время учебе. Я был почти на 100% уверен, что через несколько месяцев снова найду работу.

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

Теперь мы знаем достаточно, чтобы познакомиться с Ruby on Rails.

На данном этапе нам необходимо развернуть всю операционную среду. То есть — OC Linus (я установил Ubuntu) или MacOS (придется попрощаться с Windows, но можно иметь 2 ОС одновременно и выбирать, какую загружать), Git, RVM, Ruby, Rails, редактор кода (я выбрал возвышенное). Погуглите как все установить и настроить последние стабильные версии.

Погуглите информацию, которой вы не знаете – это должно стать одним из ваших основных навыков.

Теперь мы можем продолжить:

  • Лучший способ попробовать Rails — пройти это краткое введение. Это отличный способ прикоснуться к Rails и начать понимать структуру приложения;
  • После этого советую обратить пристальное внимание на скринкасты на hasBrains. Там вы можете найти отличные уроки по Ruby, Rails и Linux для начинающих.
  • Настало время пройти легендарный туториал по Rails от М. Хартла.

Я рекомендую вам игнорировать все, что касается тестов (TDD) в последнем уроке. Тесты только запутают вас в этот момент. Сосредоточьтесь на написании и, что более важно, на понимании кода самого приложения. Чуть позже мы научимся писать тесты. В итоге у вас будет работающее приложение.

Во время учебы и в перерывах выбирайте интересующие вас темы и просматривайте посты. Там опытные программисты делятся своим опытом и отвечают на вопросы. Они обсуждают много разных тем. Это очень полезно для начинающих.

Третий месяц – работа с наставником

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

, особенно наш собственный . С нуля до рабочего приложения на сервере. В этом мне помогла моя учеба с ментором на mkdev.me. Это оказалось самым весомым вкладом в мое самообучение . И это был тот самый код, на который смотрели мои работодатели, прежде чем пригласить меня на собеседование. Хороший опыт написания правильного кода + научиться тестировать. Эти исследования заняли месяц.

После курса настоятельно рекомендую просмотреть эту (только на русском языке) книгу “Мир рельсов”. Это оказалось очень полезным для меня. Книга написана для новичков в Rails и имеет отличное изложение материала.

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

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

Четвертый месяц – трудоустройство

Настало время подготовить резюме и отправить его работодателям. Не забудьте добавить ссылку на GitHub вместе с вашим проектом. Я оставил отзывы + короткие сопроводительные сообщения на hh.ru о вакансиях. Не только младшие вакансии, но и просто вакансии Ruby on Rails.

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

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

Время от времени в этой google-группе Ruby on Rails и на Ruby Jobs появляются вакансии для джуниоров.

Сейчас самое время подготовиться к собеседованию и подтянуть теоретические знания. Погуглите что-нибудь вроде: «интервью с младшим руби». Убедитесь, что у вас есть базовые знания: парадигм ООП; как работают сети; протоколы HTTP, TCP, IP; что такое DNS; как работают отношения в СУБД, как писать простые SQL-запросы, как и для чего работают индексы в БД; какие основные структуры данных – хеш-таблицы, списки(массивы), графики. Вопросы по всем этим темам были в моем интервью.

Начать читать инженерные книги:

  • Код завершен
  • Шаблоны проектирования
  • Программист-прагматик

Более глубокое изучение Ruby. Язык программирования Ruby — отличная книга от создателя Ruby — Матца.

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

  • https://www.amazon.com/Refactoring-Ruby-Addison-Wesley-Professional/dp/0321984137
  • http://www.confidentruby.com/
  • https://www.amazon.com/Design-Patterns-Ruby-Russ-Olsen/dp/0321490452

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

Я уверен, что: после хорошего самообучения и работы с наставником вы скоро сможете найти работу младшим разработчиком руби, не сомневайтесь – вперед, и пусть вам сопутствует удача!

Какими навыками должен обладать младший разработчик Ruby on Rails? | Кшиштоф Кемпински | Блог разработчиков kkempin

Навыки юниоров Ruby on Rails

За время своей карьеры мне довелось поработать со многими разработчиками. Кроме того, я набирал в компании новых программистов. Основываясь на своем опыте, я составил список навыков , которые, по моему мнению, каждый младший разработчик Ruby on Rails должен не только создавать программное обеспечение, но и быть ценной частью команды и оказывать влияние на продукт, который она/он создает.

Я разобью этот список на несколько категорий.

Нетехнические навыки (также известные как soft skills)

  • Английский язык — самый важный навык для каждого разработчика. Вы будете использовать его ежедневно. Удивительно, но работа разработчика в основном заключается не в написании, а в чтении. Скорее всего, вы также будете использовать его в общении с другими членами команды/клиентами и т. д.
  • Амбиции — ведь не хочется годами быть джуниором, да? Старайтесь участвовать в решении более сложных проблем, а не только тривиальных.
  • Подход «я не знаю» — только если ты признаешь, что чего-то не знаешь, ты можешь этому научиться. Обычно более старшие коллеги будут рады вам чем-то помочь, если вы скажете, что не знаете этого. Вам не нужно стесняться из-за этого. Это нормальный процесс обучения.
  • Готовность и желание учиться — постарайтесь показать это желание учиться. Спросите, потратьте дополнительное время на чтение и кодирование ваших любимых проектов.
  • Культура/компания подходит — это огромное и очень важное. Если вы чувствуете, что не принадлежите компании, или компания знает, что вы не чувствуете этого духа, им обоим нет смысла идти по этому пути. Ваша производительность повысится только в том случае, если вы будете чувствовать себя хорошо в этой среде.
  • Знания, где искать ответ в Интернете — как я уже писал — разработчик в основном читает, а не пишет. Будучи младшим программистом, вы должны знать, где найти ответы на свои вопросы. Ознакомьтесь со Stackoverflow, форумами, Google, …

Ruby

  • Синтаксис — вам нужно знать, как писать некоторые основные элементы языка, такие как циклы, классы, условные операторы, модули и т. д. с объектно-ориентированным программированием. Вам нужно знать некоторые концепции ООП в Ruby, такие как: классы, объекты, наследование и композиция, блоки, процедуры и лямбда-выражения, включая расширение модуля.

Руби на рельсах

  • Парадигма MVC — это структура фреймворка RoR. Вам нужно знать, какой уровень отвечает за что и как структурировать ваше приложение, чтобы вы знали, где размещать бизнес-логику и куда идет представление.
  • ERB/Haml — две самые распространенные системы шаблонов/представлений. Я бы посоветовал начать с ERB.
  • ActiveRecord — большинство веб-приложений используют ту или иную форму постоянных данных. Вы должны знать ActiveRecord, хотя бы что-то о моделях, миграциях, ассоциациях, проверках.
  • Конфигурация нового приложения — нужно много практиковаться! Создайте свой любимый проект и попробуйте научиться программировать. Для этого вам нужно будет знать, как настроить новый проект с нуля.
  • Модульное тестирование с помощью Rspec — тестирование — очень распространенный подход к проектам, созданным с помощью Ruby on Rails. Rspes также очень распространен. Вы должны знать, как писать модульные тесты с помощью Rspec, поскольку результат вашей работы должен быть покрыт тестами, которые должны быть утверждены/объединены.
  • API + JSON — Ruby on Rails очень часто используется в качестве поставщика API, поэтому вам необходимо знать API как концепцию и JSON как формат.
  • Основы протокола REST и HTTP — многие веб-приложения работают как приложение REST. Вы должны быть знакомы с протоколом HTTP, по крайней мере, распознавать HTTP-глаголы и несколько наиболее распространенных статусов.

Навыки работы с интерфейсом

  • HTML5 — некоторые основы HTML
  • JS — что такое JavaScript. Было бы неплохо узнать, что такое jQuery и каковы наиболее распространенные фреймворки JavaScript. Некоторые знания о ES6 будут идеальными.
  • CSS — знание того, как работают каскадные таблицы стилей и какие концепции лежат в основе SCSS/SASS. для вас вам нужно будет прочитать журналы, чтобы понять, что происходит.
  • PostgreSQL / MySQL — два наиболее распространенных движка баз данных. Было бы неплохо узнать о некоторых различиях и о том, как их настроить на вашем локальном компьютере.
  • Концепция баз данных NoSQL — хотя они и не так популярны, как базы данных SQL, вы можете найти их во многих существующих проектах.

Инструменты

  • Git — важный инструмент для управления кодом. Вы должны знать, что это такое, как создать новую ветку, вытащить и отправить свой код.
  • Deployment — хорошо бы быть знакомым, или знать что такое: Heroku, Capistrano, Docker, CI.
  • Инструменты для управления проектами/заявками — Trello/Asana/Pivotal/Github и многие другие.

Оставить комментарий