#Guía para proceso de selección
##que es lo que precisamos ? Analizamos esto en base a lista de skills y como evaluarlas
##Skills Requeridas
1) Language -> Candidate must speak, read and write english
2) Problem solving -> Debe poder resolver problemas que exijan un pensamiento lógico
3) Tiene que saber que es http, MVC, OOP, html, javascript, css
4) Intentar escribir, codigo robusto, legible, entender cada línea que escribió
saber explir porqué lo hizo.
5) Tiene que manejar saber cuales son los componentes de rails y para que sirven
6) Tiene que saber que son tests algo de test y haber escrito algo de ello
7) Tiene que saber manejar sus tiempos para cumplir con objetivos
8) Tiene que saber manejar GIT( manejar bien rebase y merge )
##Como evaluar las skills requeridas ?
1) Entrevista y mails en inglés
2) Que resuleva un problema de codility en ruby
3) Preguntas generales sobre web development
4) Ver si el código que escribe es prolijo, pedirle que explique alguno de sus commits.
5) Preguntas generales sobre ruby y rails
6) Exigir que escriba tests en el código de ejemplo
7) mmmm ni idea
8) Pedir que suba el código para ver sus commits y preguntar que es un rebase en el cuestionario
Los puntos anteriores se pueden evaluar en base a una entrevista, prueba escrita( o meeting y preguntas oral ) y código de ejemplo. ##Entrevista Con Anthony para que evalúe el nivel de inglés. Y con Gabe para ver si la personalidad encajaría.
##Prueba escrita
###Preguntas
Web development en general
Que son las cookies ?(para que se utilizan)
Qué es http ?
Que diferencia hay entre un servidor de aplicaciones y un servidor web ?
Que es ajax ?
Que entiende por single page application ?
Que es MVC ?
Rails
Cuáles son los principales componentes de Rails y cuáles son sus responsabilidades?
(Asociaciones has_many, belongs_to, has_many_through)
Como implementaría la relación un usuario padre tiene muchos usuarios hijos.
Que Paths genera esto:
resources :posts do
member do
get 'comments'
end
collection do
post 'bulk_upload'
end
end
(Delete en cascada)
Al borrar un artículo se deben borrar sus mensajes. Cómo lo implementaría ?
class Article < ApplicationRecord
has_many :comments, dependent: :destroy
validates :title, presence: true,
length: { minimum: 5 }
end
Rendering, Qué diferencia hay entre render y redirect_to ?
Para qué son yield y content_for en las vistas ?
###Problema This problem from codility would be fine. Quizás podemos pedir que escriba un pseudo código de la solución.
##Código de ejemplo En vista que el código de ejemplo es para evaluar:
- Prolijidad
- Que sepa testear
- Que maneje GIT
- Que maneje Rails
Tres posibles opciones de pruebas
- Pedir que implemente una feature de un producto existente (ej: Refer)
- Task logger app( sólo 2 requerimientos )
Usuario selecciona un proyecto, duración, tarea, descripción y loguea la tarea. Usuario presiona send report y envía un reporte con las tasks pendinentes(no enviadas) a slack
- Tomar un código público, dejarlo un poco feo y pedir que lo refactoree.
Agregarle duplicación Juntar varios métodos en uno sólo Dejar lógica en el controller ( un método grande ) Que viole el principio de no hables con extraños Dejar comentarios erroneos Usar nombres de funciones y variables sin sentido Dejar codigo comentado Una función que reciba muchos argumentos Una función que no se utilice nunca