Android Developer

ResumenBuscamos un desarrollador de Android con 3 o más años de experiencia en desarrollo de Android nativo con Kotlin y las librerías de An

upRing ,

Apply now

ResumenBuscamos un desarrollador de Android con 3 o más años de experiencia en desarrollo de Android nativo con Kotlin y las librerías de Android Jetpack*. El rango salarial es de €30k - €38k más plan de stock options ajustables en función del candidato. Somos remote friendly y un equipo pequeño pero muy funcional. Si te gusta trabajar en startups de fase temprana, con un buen equipo con experiencia y apoyada por VC de prestigio, sigue leyendo. Estamos en Madrid.

¿Qué es upRing?Somos seres sociables. Nada tiene sentido por nosotros mismos. Todo empieza por la gente que te rodea. Todo termina con aquellos con los que te relacionas. Por todo ello, estamos desarrollando upRing, la primera... ¿agenda de contactos? ¿de verdad?. ¿Te imaginas todo lo que deberías poder hacer desde tu agenda de contactos? Esto no ha hecho más que empezar.

¿Qué buscamos?Buscamos un desarrollador de Kotlin para Android, que le guste trabajar en startups en fase temprana donde las tareas del dia a dia suelen ir más allá de tu área de conocimiento habitual, que se identifique con el proyecto y se anime a resolver retos técnicos interesantes relacionados con las agendas de contactos.Una persona con ganas de plantear soluciones nuevas y que nos ayude a mejorar la arquitectura y modularización de nuestra app de Android.

Nuestro proyecto tiene un año y medio de vida, está construido en Kotlin y lo estamos migrando a un patrón de arquitectura MVP que aprovecha la potencia de las librerías de Android Architecture Componentes* principalmente: ViewModel, LiveData, Room y Coroutines.

Si tienes curiosidad puedes probar nuestra app de Android aquí: https://play.google.com/store/apps/details?id=com.upring.contacts

¿Cómo trabajamos?Trabajamos en un marco de desarrollo ágil siguiendo la metodología scrum. Trabajamos en sprints de dos semanas en donde tenemos un set de tareas definidas previamente refinadas por el equipo técnico y acordadas por todos antes de comenzar el sprint. A final del sprint se genera un entregable que suele traducirse en una nueva actualización de la app con el scope que habíamos acordado. Algunas prácticas que solemos (o no) hacer son las siguientes:• Hacemos test unitarios para la lógica de negocio de las nuevas funcionalidades.• No tenemos integración continua pero nos encantaría si nos puedes ayudar a montarla.• La gestión de tareas e issues la usamos a través de Jira.• Hacemos Pull Requests y Code Reviews por cada una de las tareas que se vayan terminando.• Hacemos Pair Programming bajo demanda. Cuando vemos que una tarea es compleja o va a ser difícil compartir ese conocimiento con el resto del equipo solemos desarrollarla en Pair Programming.• Las decisiones técnicas se toman entre todos. El mejor argumento siempre gana.• Hacemos estimación de esfuerzo de las tareas por puntos durante procesos de refinamiento la semana antes de que empiece el siguiente sprint.• El diseño de las pantallas está ya validado antes del refinamiento y usamos Zeplin durante su implementación.• La cantidad de trabajo a realizar por sprint está definida según velocidad media del equipo, aprobada por ti y el resto del equipo.• Aparte de nuevas funcionalidades y mejoras siempre dejamos espacio en el sprint para tareas de deuda técnica y refactor que el equipo técnico crea conveniente atajar.• Tenemos control de versiones en Git y usamos Gitflow* como modelo de ramas de Git.

¿Qué stack de código utilizarás?El proyecto está en continua evolución y el equipo técnico está abierto a cualquier cambio que facilite el trabajo futuro pero esto es lo que te encontrarás ahora:• Kotlin.• Dagger2 como framework de inyección de dependencias.• Arquitectura MVP siendo el presenter LifecycleAware*• Room como base de datos.• AndroidX, LiveData, ViewModel y Coroutines.• Retrofit.Somos una agenda de contactos y uno de nuestros procesos más importantes es la integración con el Contacts Provider framework* de Android.

¿Cuáles serán tus responsabilidades?• Colaborar en la definición, evolución e implementación de la arquitectura básica para la app de android.• Construir un proyecto modulable, eficiente, lo más fácil posible de evolucionar y de mantener.• Entender las necesidades del producto, las limitaciones técnicas y encontrar soluciones óptimas.• Ayudar a definir procesos de ingeniería que ayuden al desarrollo del producto. Integración continua, procesos de deploy, procesos de QA...• Ayudar a refactorizar partes del proyecto más antiguas y no optimizadas.

Requisitos por orden de importancia:• Que seas un experto en el desarrollo en Android con Kotlin, la inyección de dependencias con Dagger y el almacenamiento en base de datos con Room.• Que seas autónomo en tu trabajo y aprendiendo cosas nuevas. Para muchas de las cosas a las que te enfrentes no existirá nadie en el equipo con experiencia para poder ayudar. El research, documentación y aprendizaje necesarios para encontrar las mejores soluciones será tu responsabilidad más importante.• Que uses buenas prácticas en el desarrollo del código. Usar principios SOLID*, seguir las reglas arquitectónicas definidas, facilitar el testing, usar control de versiones y hacer code reviews.• Que tengas al menos 3 años de experiencia con Android Jetpack y Kotlin.• Que tengas un nivel de inglés mínimo para poder documentar tu trabajo cuando sea necesario.

El candidato ideal también tendría...• Experiencia en proyectos Open Source de Android.• Experiencia con desarrollo iOS en Swift.• Tienes alguna app propia u otros proyectos personales relacionados.• Experiencia con más de un lenguaje de programación• Experiencia con NodeJS o React Native.• Experiencia con AWS y procesos de DevOps.

¿Cómo es el proceso de contratación?Enviar un correo presentándote, hablando un poco sobre ti y adjuntando CV o perfil de LinkedIn y algún proyecto de Github que te sientas especialmente orgulloso si tuvieses.

Si tu perfil nos encaja, alguien del equipo te hará una primera entrevista de 10-20 min para ver si estamos alienados y aclarar algunas preguntas que tú pudieras tener.

En la siguiente fase, te enviaremos alguna pregunta técnica para que de forma abstracta y en no más de 1 folio veamos cómo piensas.

ReferenciasAndroid JetPack: https://developer.android.com/jetpackAndroid Architecture Components: https://developer.android.com/topic/libraries/architectureGitflow: https://datasift.github.io/gitflow/IntroducingGitFlow.htmlMVP with Lifecycle aware presenters: https://medium.com/s23nyc-tech/mvp-lifecycles-dispatchers-oh-my-19eda37a1a52Contacts Provider Framework: https://developer.android.com/guide/topics/providers/contacts-providerSOLID: https://en.wikipedia.org/wiki/SOLID