¿Qué criterios de evaluación debo adoptar para tener en cuenta mi progreso como programador / ingeniero de software? ¿Qué estoy haciendo mal o bien o qué debo cambiar como programador?

No creo que haya un “sistema” específico para medir el progreso.

Lo que encontrará es que las personas de TI en general tienden a ser muy honestas sobre las cosas. En otras palabras, si hay margen de mejora, se lo informarán.

La mayoría de los comentarios que lo ayudarán a mejorar generalmente provienen de sus pares y gerentes. Otras cosas se harán evidentes como resultado de una falla (todavía recuerdo mi primer “error” cuando cargué los 1.5 millones de filas en la memoria solo para mostrar 10 registros por página).

Lo que es de suma importancia, en mi opinión, es que nunca dejas de aprender. La ingeniería de software está en constante evolución y tú también deberías hacerlo. [Casi] siempre hay más de una forma de hacer las cosas y actualizar sus conocimientos le permite tomar mejores decisiones que finalmente conducen a mejores resultados.

Aquí hay algunas áreas comunes donde he observado progresos a lo largo del tiempo:

  • Elección de algoritmos.
  • Elección de estructuras de datos.
  • Mejoras de estilo de codificación (legibilidad).
  • Comentarios de código
  • Código de rendimiento.
  • Manchas de borde de la caja.
  • Examen de la unidad.
  • Conjunto de herramientas de desarrollo (stack).
  • Mejor arquitectura
  • Dominio de Google.
  • Mejor comprensión empresarial.
  • Mejor comunicación con el negocio.

La lista está en orden secuencial. El razonamiento detrás de la orden es que a medida que avanza a lo largo de su carrera, primero pule su conjunto de habilidades en bruto y luego desarrolla una comprensión del negocio y sus objetivos. No olvide que está prestando un servicio y que el negocio está en última instancia allí para ganar dinero, por lo que todo lo que hacemos debe estar alineado con ese objetivo. Esto, por supuesto, es algo que casi ninguno de nosotros comprende al principio de nuestras carreras.

El elemento de dominio de Google está allí para indicar en broma que uno comprende que la investigación es muy importante. Muchas veces, otras personas han pasado por el mismo problema, por lo que no tiene sentido gastar su tiempo tratando de resolverlo cuando alguien más ya lo ha hecho. Otras veces puede haber un componente por ahí que puede usar en lugar de codificar el suyo. El punto es no tener miedo de aprovechar el conocimiento de otras personas.

¡Buena suerte!

Tampoco creo que haya una métrica específica que funcione bien para evaluar eso. Por supuesto, puede usar páginas como hackkerrank, top codder, etc., pero creo que solo evalúan una pequeña parte de su experiencia. En términos de aprendizaje automático, diría que estás sobreajustado si comienzas a enfocarte y optimizar solo eso como tu criterio.

Obviamente, la mejor manera es probablemente asegurarse de que pueda trabajar en cosas que le parezcan “desafiantes”.

Hubo un hilo en el que las personas mencionaron que nunca más se estancan con las tareas de programación. Probablemente sea una señal de que tienes que encontrar nuevos problemas si quieres crecer. Pero probablemente tampoco haya nada de malo en perfeccionar un determinado oficio, por lo que puede, por ejemplo, distribuir sitios web para clientes en períodos de tiempo realmente cortos y con errores mínimos.

Tratar problemas nuevos y complejos todo el tiempo no necesariamente lo ayudará con algo así. Desde mi experiencia, eso puede hacerte sentir como un desarrollador peor que antes.

Creo que la mejor métrica probablemente sea simplemente mirar hacia atrás en lo que has logrado.

  1. ¡¡¡¡¿Te estás divirtiendo?!!!! Si no te estás divirtiendo como desarrollador, no estás haciendo lo que deberías estar haciendo. No puedes divertirte TODO el tiempo (los días de 16 horas pueden ser divertidos de vez en cuando, pero no a largo plazo), pero en general te estás divirtiendo.
  2. ¿Todavía tienes curiosidad por las cosas nuevas? ¿Estás aprendiendo nuevas tecnologías que están surgiendo porque realmente tienes curiosidad o las estás aprendiendo porque sientes que tienes que hacerlo? ¿ESTÁS REALMENTE aprendiendo las cosas nuevas? ¿Pasas al menos una hora al día leyendo lo que viene por la pica? ¿Intentas descubrir cómo usarlo?
  3. ¿Eres capaz de implementar las cosas nuevas? ¿O está atrapado en un trabajo donde no puede implementarlo (entonces, es hora de buscar un nuevo trabajo porque el mundo lo dejará atrás)

Creo que estos son los criterios que debes tener en cuenta … no “he memorizado este o aquel algoritmo” o “puedo codificar rápido como un rayo”

More Interesting

Como un nuevo comienzo, ¿cómo aborda el aprendizaje de un gran sistema de software para permitir la productividad y comenzar a resolver problemas?

¿Es cierto que la mayoría de los ingenieros de software se casan tarde porque pasan la mayor parte de su tiempo aprendiendo y trabajando en proyectos paralelos?

¿Cuáles son algunos buenos trabajos disponibles para un ingeniero de software en UP East?

¿Cómo es ser ingeniero de software en una empresa 'genial'?

¿Qué hacen los ingenieros de software en una empresa comercializadora de energía?

Como ingeniero de software generalista, ¿tiene algún valor aprender tecnologías de big data como Hadoop o Spark o es algo que beneficiaría más a los DBA?

¿Por qué la gente a menudo cambia de compañía en el sector de TI?

¿Cuáles son los conceptos erróneos comunes que tienen los aspirantes a programadores?

Soy ingeniero de software, pero ahora tengo una cuenta de GitHub y no tengo nada que poner. ¿Qué cosas puedo desarrollar para mostrar mis habilidades de codificación?

¿Cuáles son los requisitos necesarios para convertirse en ingeniero de software en Google o en ese tipo de empresas?

¿Para qué sirve la ingeniería de software?

¿Cómo es ser un pasante de ingeniería de software en SoundCloud?

¿Las bases de datos SQL, ASP y PHP siguen siendo la base de muchos sistemas de back-end?

¿Cuál es la mejor manera de solicitar un trabajo SDE en los 4 primeros (Microsoft, Google, Apple, Amazon)?

¿Qué puede hacer un estudiante de primer año en ascenso para convertirse en ingeniero de software en una gran empresa tecnológica en los Estados Unidos?