En Apiumhub consideramos que conocer las posibilidades de crecimiento como en la empresa es muy importante para todos nuestros desarrolladores, y por eso mismo hemos decidido escribir este artículo, explicando cuales son los beneficios y cual podría ser su trayectoria. En primer lugar, hablemos de por qué tener en mente las posibilidades de crecimiento en Apiumhub es tan importante, explicando carrera de desarrollador de software. 

 

La importancia de abrirse camino: Carrera de desarrollador de software

 

En Apimhub el pilar más importante son los empleados, o mejor dicho, el equipo. Nosotros queremos tener desarrolladores que estén a gusto con su trabajo, que no piensen que ir a otra empresa a buscar otras condiciones es la mejor opción, sino que consideren que estando en Apiumhub puede tener un continuo aprendizaje y poder ver cómo su carrera profesional mejora  día a día. No es solo una idea, un concepto, sino que es una realidad. A día de hoy, la mayoría de nuestra plantilla lleva con nosotros desde el inicio y es un hecho que estamos creciendo de cada día más. Motivo por el cual, cada cierto tiempo incorporamos a nuevos miembros en nuestra familia.

Gracias a esta forma de convivir, Apiumhub es una empresa construida para crecer, donde los trabajadores forman un papel primordial y donde unos cuidan de los otros.

 

El espíritu de un desarrollador de software 

 

No consideramos los años de experiencia como único factor, es evidente que el tiempo ayuda, pero lo que valoramos más es la capacidad para absorber conocimientos. Nuestro equipo está lleno de personas entusiastas, con grandes capacidades de aprendizaje y de absorber nuevos conocimientos a la vez que son ágiles y rápidos en la toma de decisiones o de afrontar nuevos retos. Pensamos que es muy importante tener interiorizados los conceptos teóricos del desarrollo de software. Eso implica una devoción y una curiosidad innata que independientemente de la experiencia, te hace único y valioso.

 

Viernes de open space 

 

En Apiumhub los viernes son días de reflexión y aprendizaje. Se ponen en común diferentes temas o dudas, normalmente sobre los proyectos que se estén llevando a cabo. Entre todos se decidirán los temas que se tratarán y cuál será el orden de prioridades. Una vez decidido esto, empieza el debate!! Se trata de reflexiones entre compañeros donde lo que se pretende es aprender, aclarar dudas conocer en qué momento se encuentra cada proyecto, cuáles son los bug resueltos, como se han conseguido solucionar… en definitiva, son días para empaparse de conocimientos.

SI quieres puedes saber más sobre Open Space!

 

Carrera de desarrollador de software en Apiumhub 

 

Dependiendo de los conocimientos de un desarrollador, entrará en Apiumhub con un cargo u otro, pero el proceso desde cero es el siguiente:

En primer lugar encontramos un desarrollador de software Junior. Después pasarás a ser un desarrollador Full Stack, seguirás evolucionando hasta hacerse Desarrollador Senior, y por último, Tech Lead. Cada uno de estos roles implican tres fases de crecimiento antes de evolucionar. Y para cambiar de fase, solo necesitas practicar y aprender. No consideramos los conceptos como única forma de crecer. Concepto, concepto, concepto… buscamos el equilibrio y en Apiumhub la carrera de desarrollador de software se empieza trabajando.

 

Desarrollador Junior de Software 

 

Nivel de prueba unitaria.
Este es el conocimiento básico que es debe tener para poder formar parte del equipo de Apiumhub. Pero tranquilo, es algo que se puede aprender en el periodo de prueba! Se necesitan conocimientos sobre los conceptos de refactorización, encapsulación y polimorfismo. Además, tendrá que conocer las diferencias entre la unidad, la integración y las pruebas funcionales, y su aplicación.

 

Principios de diseño orientados a objetivos.
A todos los miembros del equipo, se les pide que tengan interiorizados los conceptos de desarrollo. Y para eso, si que recomendamos encarecidamente que se leas este libro; “Object-Oriented Design Heuristics” de Arthur J. Riel. Así podrá sentirse cómodo con conceptos como polimorfismo, segregación de interfaz, encapsulación o topología. Al mismo tiempo, se pide aprender las buenas y malas prácticas, evitar getter & setters, el patrón singleton, codificación de procedimientos, etc.

 

Nivel de Patrones de diseño.
En esta fase, lo que queremos es que se tenga comprensión completa sobre los patrones de diseño de software, es decir, capacidad de leer, encontrar y entender lo patrones que tenemos en Apiumhub. Para este nivel, te recomendamos leerte “Patrones de diseño” de Erich Gamma.


Desarrollador Full stack 

 

TDD
En este punto, deberás entender perfectamente las ventajas de los Test unitarios y los patrones de diseño. Te recomendamos leer “Refactoring” de Martin Fowler. Además, obviamente deberás conocer todas las diferencias entre TDD y FDD (feedback driven development).

 

Nivel basico de Domain Driven Design
Llegado a este nivel, deberás ser capaz de picar código casi perfecto, sin errores ni acoplamientos. Y para este nivel, te recomendamos “Implementación del diseño impulsado por el dominio” de Vaughn Vernon.
Por otro lado, deberás tener una plena comprensión de los proyectos que hacemos en Apiumhub, así como un buenos conocimientos del principio SÓLIDO.

 

Nivel avanzado de Domain Driven Design
Además de crear un código perfecto, necesitarás saber estructurarlo correctamente para lograr escalabilidad, facilitar el mantenimiento y facilitar las pruebas del sistema. “Domain-Driven Design: Combatiendo la complejidad en el corazón del software” de Eric Evans es una gran lectura en este caso. Es necesario tener una comprensión del contexto limitado, CQRS, servicios de infraestructura y proyecciones de dominio.

 

Desarrollador de software senior 

 

Integración continua y nivel de entrega.
Todos los proyectos de Apiumhub contienen Integración continua (CI). Pensamos que el tiempo es un valor preciado y no nos gusta picar código innecesario. Por otro lado, intentamos automatizar las pruebas. Necesitarás saber cómo usar y configurar Jenkins, realizar las CI, automatizar procesos y crear Pipelines.

 

Patrones de Integración empresarial.
Un buen código es solo la cima del iceberg, pero hay muchas técnicas que nos permitirán construir enormes plataformas empresariales. Estos son los patrones sobre la conexión de diferentes módulos y piezas de una misma aplicación. Pedimos a los miembros del equipo que han alcanzado este nivel que lean “Camel in Action” de Claus Ibsen y Jonathan Anstey. En este punto podrás hacer sistemas de gestión de colas y sistemas de idempotency.

 

Nivel de Patrones de Concurrencia
Una vez que ya se tiene dominio del código secuencial, hay algunas actualizaciones para conseguir un buen funcionamiento en paralelo. Te recomendamos leer “Reactive Design Patterns” de Roland Kuhn y Jamie Allen. En este nivel deberás aumentar tus conocimientos de typeafe: scala, play & akka y podrá utilizar técnicas asíncronas.

 

TECH LEAD

 

Gestión del Sprint.

Obviamente, todo buen equipo necesita un líder, alguien que pueda tener una visión general, administrar y monitorear las tareas. En el nivel de gestión del sprint, recomendamos leer 2 libros;

“Agile Estimating and Planning” de Mike Cohn.
“Peopleware: Proyectos Productivos y Equipos” de Tom DeMarco

 

Meetup presentaciones.
Aquí podrás desarrollar tu capacidad y experiencia organizando reuniones y defendiendo todos los conceptos presentes en carrera de desarrollador de software . Necesitarás saber cómo motivar y animar a la gente. Creemos que cuando hayas asistido a unas 10 presentaciones, podrás conseguir este nivel.

 

Prueba de rendimiento y nivel de análisis.
No solo será necesario picar un código perfecto, también pedimos que se puedan realizar pruebas de rendimiento. Sabiendo utilizar diferentes herramientas de recopilación y análisis de datos. Deberás tener experiencia en Jmeter o similares, saber interpretar los datos recogidos y analizados además de encontrar los cuellos de botella.

 

Si este planteamiento de crecimiento profesional y personal te gusta, siempre estamos abiertos a nuevos miembros en el equipo. Así que puedes ver más información en nuestra web o ponerte en contacto con nosotros!

 

Si te gustó este artículo sobre Carrera de desarrollador de software, te puede interesar:

Los beneficios de la tecnología Scrum 

Beneficios de la tecnología Agil

Metodo Kanban Principios y Ventajas 

Beneficios de la integración contínua

Beneficios de TDD

¿Porque debería usar Docker en mi proyecto de desarrollo?

Beneficios de la pruebas unitarias

Los elementos de las buenas pruebas de usuario 

Suscríbete a nuestro newsletter para estar al día de los eventos, meet ups y demás artículos!