Lo que necesitas saber para conseguir un empleo: Niveles de Desarrollo de software [Parte 1]

Contenido

A nivel profesional un desarrollador de software tiene básicamente tres niveles: junior, intermedio y senior. En la industria se aplica esta terminología para comprender mejor el rol de los candidatos y así determinar tanto el nivel salarial como las responsabilidades.

En primera instancia conocer los niveles de los desarrolladores nos ayudará a establecer expectativas más precisas. Tambien hay que tener en cuenta que muchas empresas establecen sus propias categorías para clasificar a sus desarrolladores. Aunque las distinciones varían entre las empresas, existen características generales que distinguen a los desarrolladores de software junior, intermedio y senior.

En este artículo analizaremos los diferentes niveles de los desarrolladores de software para aquellos que quieren focalizar sus esfuerzos para avanzar en su carrera profesional.

Ingeniero/Desarrollador de Software

Antes de comenzar una descripción detallada de los diversos peldaños de este patrón de escalera profesional en la industria de TI, vale la pena mencionar unas palabras sobre un trabajo como ingeniero de software.

Ingeniero / Desarrollador de Software es responsable del análisis, diseño, implementación, pruebas y desarrollo de la última generación de herramientas y software para sistemas de comunicación.

Las funciones de un Ingeniero de Software incluyen, pero no se limitan a:

  • creación de códigos,
  • diseño de la construcción de bases de datos,
  • desarrollo de software para el diseño interno de la empresa,
  • garantizar la calidad de las soluciones entregadas,
  • diseñar e implementar soluciones propias,
  • gestionar y resolver problemas relacionados con el sistema de información.

Además, vale la pena mencionar algunas características que el Ingeniero de Software debe tener, tales como:

  • habilidades de programación,
  • muy buenas habilidades de comunicación en inglés,
  • muy buenas habilidades interpersonales,
  • facilidad para resolver problemas,
  • capacidad para anticipar las necesidades de los usuarios.

Enfoques para la evaluación de conocimientos especializados en desarrollo de software

Como parte del análisis de los niveles, describiremos varios enfoques existentes para evaluar la experiencia de un programador. Al aplicarlos estos enfoques nos proporcionaremos una perspectiva más amplia de los niveles en el desarrollo de software.

El modelo Dreyfus de adquisición de habilidades

Este modelo identifica 5 etapas para alcanzar y dominar habilidades. Este modelo se utiliza para estructurar los cambios fundamentales que se producen a lo largo del proceso de aprendizaje. Esto te permite exponer cómo los programadores en diferentes etapas perciben el proceso de desarrollo y abordan los problemas, así como cómo forman modelos mentales.

Las cinco etapas del modelo Dreyfus ilustran los cambios más importantes en el camino de principiante a experto.
Fuente: Pensamiento pragmático y aprendizaje: Refactorizar su wetware por Andy Hunt

Matriz de competencia del programador

Esta matriz tiene una estructura de tres niveles que se correlaciona con la distribución de roles Junior-Middle-Senior. La matriz también incluye el Nivel 0 que, en nuestra opinión, es igual a un Ingeniero de Software a nivel de Aprendiz.

Esta matriz del conjunto de habilidades de los programadores fue desarrollada por Sijin Joseph, un líder tecnológico con más de 15 años de experiencia en el diseño y construcción de productos de software.

Vamos a referirnos a esta fuente mientras describimos las expectativas de conocimiento tecnológico para cada nivel.

Todo se trata de habilidades y conocimientos

Ya que tenemos algunos conocimientos sobre quién es y qué hace el Ingeniero de Software y como este se identifica vale la pena enfatizar un poco en la evolución de los desarrolladores de software.

Los años de experiencia son importantes, pero las claves del éxito en la industria de TI son las habilidades y el conocimiento. Por lo tanto, a menudo se reunirá con desarrolladores junior mayores o menores que usted, así como con desarrolladores sénior de diferentes grupos de edad.

🚀 Ten en consideración: Lo que cuenta en la industria de TI es lo que puedes hacer y no exactamente cuántos años ha estado en el mercado.

Nivel 0 – Aprendiz: recién salido de la escuela

Algunas empresas tienen programas de pasantías donde toman ingenieros de nivel básico que básicamente sólo tienen conocimientos teóricos y ninguna experiencia laboral. En este caso, un título de trabajo para principiantes será un aprendiz.

Aplicando las etapas de experiencia de la matriz mostrada anteriormente, dividimos este período temprano en la carrera del desarrollador en tres etapas: Inocente, ExpuestoAprendiz.

En esta etapa quizas puedas hacer algo con algun IDE, pero no está muy familiarizado con los marcos de trabajo y sólo tienes una idea muy limitada de todas las operaciones de tu entorno de trabajo.

Esto es comprensible, el comienzo es difícil y todavía está mucho por delante, así que toca aprender. Aprender constantemente y después de 3 meses trabajando para una corporación o participando en proyectos con desarrolladores experimentados probablemente te convertirás en un junior.

🚀 Tip: La práctica hace al maestro y en la industria de TI, debido a su desarrollo continuo, también necesita educarte y desarrollarte continuamente.

Nivel 1 – Junior: a través de prueba y error

Para un desarrollador junior es difícil inicial en el mundo laboral, sin embargo, las cartas de triunfo de un junior son la motivación y la energía que muchas personas mayores ya no tienen. Los juniors saben que el esfuerzo que ponen dará sus frutos al permitirles pasar antes al siguiente nivel.

El problema en esta etapa es que a pesar de que realmente quieres, probablemente no seas capaz de completar la mayoría de los proyectos por tu cuenta, y en caso de que este este asignado solo a ti en muchas ocasiones te veras acorralado sin poder avanzar.

Aquí tienes un conocimiento básico de TI, software y hardware, a pesar de que conoce los conceptos básicos de la programación informática y sus herramientas. Probablemente conoces un lenguaje de programación y tienes habilidades básicas de escritura de código. Poco a poco aprenderás a reparar errores menores, menos significativos o errores en el software.

🚀 Tip: La rapidez con la que saltas al siguiente nivel profesional depende solo de tu compromiso y del número de personas de las que puedas aprender.

Nosotros podemos referirnos a un junior como Practicante. Es entonces cuando la productividad de los desarrolladores aumenta lo suficiente a medida que comienzan a adoptar nuevas técnicas a través de pruebas y errores y las aplican a proyectos corporativos.

Enfoques alternativos. Refiriéndonos al Modelo Dreyfus, podemos dividir el nivel junior en dos fases: 

Principiante Novato

Los desarrolladores novatos trabajan muchas veces sin tener un contexto claro de como funcionan las cosas. Son impacientes, y quieren resultados inmediatos. Al mismo tiempo, los errores pueden paralizarlos, ya que no saben cómo manejarlos.

Principiante Avanzado.

Los principiantes avanzados comienzan a apartarse de seguir reglas fijas y formulan principios generales basados en situaciones similares que han tratado. La cuestión principal es que pasan por alto el contexto más amplio, tal vez considerándolo irrelevante.

  • Experiencia – 0 a 2 años.
  • Conocimiento – conocimiento básico de TI desde el software hasta el contexto de hardware, programación informática, lenguajes de programación, códigos e IDE.
  • Independencia – bajo nivel de independencia, requiere verificación y orientación, pero puede cumplir ciertas tareas.

Habilidades y deberes técnicos junior

  • IDE. Los juniors navegan por la interfaz y operan de forma eficiente mediante la barra de tareas.
  • API. Saben cómo manejar las API más utilizadas.
  • Marcos. Los desarrolladores junior han trabajado con algunos marcos y saben acerca de los populares que vale la pena usar dentro de su pila de idiomas.
  • Desarrollo de bases de datos. Un junior conoce las técnicas básicas de diseño de base de datos, las propiedades ACID y las transacciones. Además, un junior puede escribir instrucciones simples y selectas para recuperar información de la base de datos.
  • Lenguajes de programación. Los desarrolladores junior suelen estar familiarizados con un lenguaje de programación. Lo elegirán de inmediato e implementarán una solución semi-estable que resuelva la mayoría de los problemas en ciertos casos de uso.
  • Plataformas y herramientas. Los juniors tienen experiencia profesional con unas tres plataformas. Su conocimiento de los internos de la plataforma es sólo profundo de la piel. Son conscientes de las alternativas a las herramientas populares y estándar.
  • Deberes cotidianos. Los juniors suelen tener las tareas menos complejas, aquellos con poco impacto en el producto final.

Trabajo en equipo junior y perspectiva

  • Trabajo independiente. Ciertamente, los jóvenes necesitan una estrecha supervisión. Necesitan una fuerte tutoría para desarrollar sus habilidades.

    Trabajando en equipo, un junior debe mantenerse comprometido y absorber del equipo tanto conocimiento como sea posible.
  • La visión. El problema con los jóvenes es que están centrados en el código, en lugar de centrarse en el desarrollo. Esto les impide obtener el panorama general.

Nivel 2 – Medio: un guerrero en el mundo de la programación

Los desarrolladores junior con más de tres años de experiencia pueden aprovechar sus habilidades para convertirse en especialistas de nivel medio. Los desarrolladores de nivel medio, a veces conocidos como «los caballos de batalla del mundo de la programación», ofrecen el mayor impacto con el código rutinario.

Ser medio es probablemente la parte más peligrosa de tu trayectoria profesional. Se refiere principalmente al hecho de que ya sabes bastante y esta sensación te pone en la posición de que te sientes ‘como un jefe’ o como si supieras todo lo cual no es del todo cierto.

La industria de TI requiere un aprendizaje constante y no puede descansar en sus laureles. Sabemos que se siente como un maestro del análisis, diseño, desarrollo y pruebas, implementación, documentación y evaluación. Pero, ¿realmente se puede analizar un problema y no sólo centrarse en cómo utilizar una tecnología determinada, sino también buscar detalles, tratar de entender cómo mejorar las soluciones creadas?

⚠ Nota: No todo el mundo tiene que ser un Senior y vale la pena considerar si tu objetivo es luchar por el desarrollo o simplemente subir la escalera de una carrera profesional.

Enfoques alternativos. El modelo Dreyfus describe al desarrollador intermedio como Competente. En esta etapa, también pueden hacer un trabajo decente de solución de problemas y depuración.

Los programadores competentes son de gran iniciativa e ingeniosos. Persiguen roles de liderazgo en el equipo y pueden ser mentores de novatos. Sin embargo, los desarrolladores competentes todavía carecen de la experiencia para priorizar el enfoque de su atención mientras trabajan en el proyecto, y apenas son capaces de reflexionar sobre sus errores.

En términos de experiencia, podemos considerar al desarrollador medio como una persona que trabaja en perfeccionar sus habilidades y mejorar la productividad.

  • Experiencia – 2 a 4 años.
  • Conocimiento – piensa que sabe más de lo que realmente sabe, lo que significa que tiene un nivel promedio de conocimiento de TI desde el software hasta el contexto de hardware, programación informática, lenguajes de programación, códigos, marcos, IDE y API.
  • Independencia – el nivel medio de independencia, todavía requiere algunos consejos y guías, pero puede hacer la mayor parte de la tarea solo.

Conjunto medio de habilidades técnicas y deberes

  • IDE. Después de usar IED durante bastante tiempo, un desarrollo intermedio ha memorizado las teclas de método abreviado para las operaciones más frecuentes, acelerando realmente el trabajo.
  • API. Los niveles intermedios tienen un conocimiento profundo y sólido de las API principales.
  • Marcos. Los medios son expertos en tecnología con marcos que les ayudan a escribir código más claro y más corto.
  • Desarrollo de bases de datos. Los niveles medios son buenos en la administración de bases de datos. Pueden diseñar esquemas de base de datos normalizados teniendo en cuenta las consultas que se emitirán. Los desarrolladores intermedios están bien versados en el uso de vistas de base de datos, procedimientos almacenados, desencadenadores y tipos de datos definidos por el usuario (UDT). Son expertos en la técnica de asignación relacional de objetos (ORM) utilizada para convertir datos entre sistemas de tipos incompatibles. Para acelerar el proceso de consulta, aplican el conocimiento de la sintaxis de índice para crear índices agrupados y no agrupados personalizados.
  • Lenguajes de programación. Un desarrollador de nivel medio entiende la programación funcional y sabe cuándo y cómo aplicar conceptos funcionales en cualquier idioma.
  • Plataformas y herramientas. Los medios ya han trabajado con más de cuatro plataformas y poseen una comprensión profunda de cómo funciona la plataforma, incluida la ejecución de código. Son muy cómodos con sus herramientas de administrador de paquetes.
  • Deberes cotidianos. Los ingenieros de software de nivel medio no suelen tener encomendadas tareas altamente complicadas que puedan requerir un nivel profundo de conocimiento de ingeniería. Mientras tanto, se les puede encargar el diseño de una pieza de la aplicación que se preparará para la transición posterior a un desarrollador senior. Ya son capaces de convertir los billetes en soluciones, proporcionar estimaciones sobre las tareas y ayudar a descomponer secciones de trabajo más grandes.

Trabajo en equipo medio y perspectiva

  • Trabajo independiente. Los niveles medios pueden ofrecer trabajo con menos supervisión mientras se asignan a tareas relativamente rutinarias.
  • Trabajo en equipo. Los medios colaboran activamente con los miembros del equipo, incluidos diseñadores, analistas de negocios y arquitectos.
  • La visión. Los desarrolladores intermedios han profundizado su comprensión de los escenarios del ciclo de desarrollo que les permite practicar métodos Agile con mayor precisión. Ven los resultados de los problemas que ocurren y aprenden a evitarlos en el futuro.

Efecto Dunning-Kruger

Al discutir el nivel promedio de iniciación vale la pena mencionar el efecto Dunning-Kruger, que ocurre en el campo de la psicología y se asocia con prejuicios cognitivos, en el que las personas evalúan erróneamente sus habilidades cognitivas dándole mayor valor de lo que realmente deberían.

Esta es una gran trampa en un desarrollador medio porque les parece que ya lo saben todo, que son los campeones del mundo, pero de hecho, saben muy poco y todavía estás lejos de lograr el pleno conocimiento.

💡 Ten en cuenta que: Se dice que lo que distingue a un Middle de un Senior es que el Middle piensa que lo sabe todo y el Senior es consciente de que no sabe nada porque todavía hay mucho que aprender.

Esto está perfectamente ilustrado por los gráficos de abajo, que seguramente recordarás y te hará pensar en el lugar en el que realmente te encuentras.

Ilustración gráfica del efecto Dunning-Kruger en los desarrolladores dependiendo de su experiencia y conocimiento.
Fuente de la imagen: Junior developers: ya no eres junior, Amando Abreu

Para reducir el impacto de la autoevaluación inexacta en la adquisición de habilidades y el crecimiento general de la carrera, los desarrolladores deben trabajar constantemente en mejorar su nivel de competencia ampliando su dominio de conocimiento y recopilando comentarios de diferentes partes de un negocio. Siempre deben encontrar tiempo para reflexionar sobre su progreso y sacar las conclusiones correctas.

Nivel 3 – Senior: solucionador de problemas

Los desarrolladores con profundo conocimiento especializado y experiencia exhaustiva que les permiten guiar a sus compañeros se titulan Seniors. Además, los desarrolladores senior también son expertos en el dominio empresarial que admiten. Su competencia puede incluso expandirse para ayudar con el marketing y el desarrollo general del negocio. Un desarrollador sénior siempre pensará en lo que están haciendo en términos de cuánto beneficio aporta al negocio.

Como senior, has aprendido mucho de tus errores y sabes exactamente lo que puedes y no debes hacer, qué código puedes cambiar y qué debes dejar sin cambios. Ya no te interesan las tareas básicas, realizas tareas que nadie más haría y logras resolverlas.

Mencionar que un senior mientras lidera un proyecto toma decisiones bien razonadas sobre el diseño e implementación de software basadas en el conocimiento de las mejores prácticas en el campo.

Enfoques alternativos. Según el modelo Dreyfus, la experiencia se puede dividir en dos etapas: 

Competente (experto junior)

Los programadores competentes hacen un gran avance: son capaces de reflexionar sobre su desempeño laboral, analizar errores y aprender de ellos sacar las conclusiones correctas. Al aprovechar la reflexión y la retroalimentación, los desarrolladores competentes mejoran significativamente su rendimiento.

Ahora los desarrolladores saben que el contexto es la clave para convertirse en un experto. Por lo tanto, en lugar de apegarse a las reglas, implementan varios métodos que se ajustan a un contexto determinado.

  • Experiencia – 5 a 8 años 
  • Conocimiento – un alto nivel de conocimiento de TI desde el software hasta el contexto de hardware, programación informática, lenguajes de programación, códigos, marcos, IDE, API, sabe cómo usarlo todo, también está dispuesto a ayudar a otros
  • Independence – un alto nivel de independencia, puede iniciar y terminar fácilmente cualquier proyecto

Experto

Este es el más alto rango en el modelo Dreyfus. Según Andy Hunt, uno puede llegar a través de más de 10 años de práctica difícilmente determinada. Por lo tanto, los expertos son una especie rara. Estos desarrolladores sénior han transformado su experiencia en intuición.

Los expertos intuyen las mejores prácticas de su amplia gama de experiencia con diferentes roles, tecnologías y situaciones.

En cuanto a las siete etapas de experiencia en ingeniería de software, este nivel tiene dos de ellas: 

  • Master: Este es un técnico experto y un buen instructor que tiene una profunda base metodológica. Más importante aún, este desarrollador entiende el valor empresarial detrás del producto.
  • Researcher: El investigador es un desarrollador senior que está pasando de un proyecto específico a la investigación metodológica general. Los investigadores rastrean los defectos en las técnicas de ingeniería de software para mejorarlos. También buscan nuevos problemas para encontrar la técnica que es útil para resolverlos.

Habilidades y deberes técnicos superiores

Con altas habilidades técnicas, un desarrollador sénior se siente cómodo con múltiples tecnologías. Las personas de la tercera edad deben tener como objetivo adquirir conocimientos transferibles que les permitan reconocer y escribir un buen código en cualquier lenguaje de programación. Este conocimiento también ayuda a adaptarse a los constantes cambios técnicos.

  • IDE. La experiencia de un senior les permite escribir macros personalizadas para optimizar el flujo de trabajo.
  • API. Un senior ha escrito bibliotecas para agregar más funcionalidad o para automatizar los procesos más frecuentes sin tener que escribir código para ellos.
  • Marcos. Las personas de la tercera edad tienen suficiente conocimiento para construir su propio marco personalizado.
  • Desarrollo de bases de datos. Un senior está bien versado en administración de bases de datos, rendimiento y optimización de índices. Por lo general, hacen el delicado trabajo de componer consultas selectas avanzadas. Dado que las personas mayores conocen una estructura de base de datos determinada desde el interior, están familiarizados con las características de mantenimiento de base de datos, en particular, la creación de reflejo de la base de datos y la replicación de base de datos.

    Estos son los métodos de transferencia de datos de una base de datos principal a una base de datos secundaria. Las personas de la tercera edad entienden el algoritmo de confirmación en dos fases (2PC) aplicado para coordinar una transacción distribuida (confirmación/anulación). Pueden reemplazar operaciones lentas basadas en cursores con instrucciones JOIN mucho más eficientes, siempre que sea posible.
  • Lenguajes de programación. Además de la programación funcional y OOP, funcionan con lenguajes simultáneos y lógicos, por ejemplo, Erlang y Prolog respectivamente.
  • Plataformas y herramientas. Las personas mayores han tenido experiencia profesional con más de 6 plataformas. Ya están creando depuradores u otras herramientas necesarias para mejorar la plataforma. Las personas de la tercera edad son la fuente de asesoramiento sobre el interior de la plataforma.
  • Deberes cotidianos. Las responsabilidades polifacéticas se expanden mucho más allá de la codificación. Las personas de la tercera edad idean las soluciones tecnológicas adecuadas a problemas complejos. Se hacen cargo del equipo, coordinando su flujo de trabajo para producir constantemente valor empresarial.

Trabajo en equipo y perspectiva senior

  • Trabajo independiente. Un senior es el que proporciona orientación.

    Las personas de la tercera edad ponen al equipo en primer lugar y siempre están tratando de averiguar lo que pueden hacer para ayudar a los miembros. Tienen buenas habilidades blandas mientras se equilibran entre el cliente y el equipo.
  • La visión. Las personas mayores ven el objetivo final: los problemas que debe resolver la aplicación terminada. Una visión a largo plazo es un punto crucial para aportar valor al usuario final.

Gráficos de Niveles de los desarrolladores

Competencias de los niveles de experiencia de los desarrolladores

También vale la pena mencionar que ser un senior no es el final del camino que se puede seguir. Los siguientes pasos pueden ser convertirse en arquitecto, gerente de producto o líder senior. Hay un montón de posibilidades interesantes y mucho que aprender.

¿Qué hay después?

Desarrollador senior es un buen punto de salto para otro peldaño en la escalera. Algunos senior quieren pasar a roles más técnicos, otros prefieren roles de gestión. Estas son algunas opciones en las que un senior puede considerar transferirse.

Arquitecto

Este es el rango más alto en la escala de carrera técnica. El trabajo de un arquitecto es diseñar sistemas complejos que serán implementados por equipos de desarrolladores senior y junior. Dependiendo del enfoque del problema de negocio, hay arquitectos empresariales, técnicos y de soluciones.

Gerente de producto

Un gerente de producto con experiencia en codificación se sentirá más cómodo al liderar la entrega del producto. Conociendo el proceso de desarrollo desde el interior, podrán gestionar el trabajo en el producto de forma mucho más eficiente.

Líder superior

El trabajo de un líder de alto rango tiene poco que ver con la programación y tiene que ver con las habilidades de las personas: inspiradoras, motivadoras, líderes y estrategas. Al tomar decisiones de alto nivel que determinan la dirección de una empresa, un alto dirigente se asegura de que todos los empleados sigan estas decisiones y crean en la misión.

Conclusion

Vale la pena saber que siempre se puede subir más alto y que sólo el desarrollo continuo y el aprendizaje te harán convertirte en un maestro en tu área de especialización, por lo tanto, vale la pena centrarse en el conocimiento y nunca parar en la búsqueda de ser alguien aún mejor de lo que eres en este momento.

Fuentes:


Espero que este articulo les sea de utilidad, y cualquier comentario me lo dejan en la caja de abajo. Sígueme en las redes para enterarte cuando publique la parte 2.

Sin nada mas que agregar, ¡Nos vemos en la próxima!

¿Qué opinas de este contenido?
 
Luis Matos

Luis Matos

I help professionals and companies to create value solutions. I am a Systems Engineer, blockchain executive, and international mobile application speaker. Founder of the Malla Consulting Agency and several international technology communities.
Suscribirte
Notificar de
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x

Buscar en el sitio