¿Qué habilidades necesitarías para ser un ingeniero de software decente más allá de simplemente conocer la programación / sintaxis?

En el programa inmersivo de Codesmith, buscamos estas habilidades:

  1. Resolución de problemas Un pensador metódico es más confiable que alguien que memoriza soluciones.
  2. Manejo de no saber. Su comportamiento y medición de la respuesta ante el misterio es crucial para calcular un plan.
  3. Comunicacion tecnica. Los ingenieros trabajan en equipos, y los equipos necesitan comunicar conceptos técnicos diariamente. Por lo tanto, la comunicación técnica es primordial e insustituible.
  4. Comunicación no técnica. Como parte de cualquier equipo, uno debe saber cómo ser el pegamento que mantiene a las personas unidas y no una cuña que las separe. Esta habilidad viene a encontrar el equilibrio entre ser profesional y ser agradable.
  5. Experiencia en el lenguaje de programación en cuestión. Este punto es el último y a propósito. Necesitará conocimiento del idioma para tener éxito, pero de todas las habilidades enumeradas aquí, la falta de esta habilidad es la más cambiante.

Si domina estas habilidades, puede estar en camino a más de una posición de nivel de entrada. Te deseo buena suerte, pero creo en el enfoque y la diligencia. Así que les deseo estos dos rasgos.

Yo también me estoy entrenando. Creo que la parte más importante es el patrón de diseño. Sin un patrón lógico, el programa se vuelve grande y si falla, se convierte en un error épico y necesita una reescritura total en lugar de simplemente refactorizar. Reescribí mi primer programa de código abierto tres veces y todavía tiene dos objetos divinos para ser reescritos en el futuro.

En segundo lugar, el conocimiento del algoritmo facilita la elección de la biblioteca / función correcta para un problema. Por ejemplo, usar un diccionario o un mapa es mejor que una matriz cuando las cosas no son fáciles de indexar.

Con un equipo, necesitaría un software de versiones para hacer copias de seguridad / compartir con el equipo. Pruebe github, tortoiseSvn y cosas similares y aprenda a obtener, actualizar, impulsar proyectos sin destruir el proyecto.

Eche un vistazo a la programación ágil, la programación de pares y los diferentes tipos de trabajo.

Comprobación de errores (uso de salidas de error de funciones) / depuración (traza-recorrido línea por línea) / adivinanzas (mirar la pantalla).

Atajos de IDE.

Documentación si los códigos no dicen nada sobre sí mismos.

Aprenda algún otro sistema operativo, nunca podrá saber qué sistema operativo necesita su próximo trabajo.

Escribe un proyecto. Limpialo. Luego escribe otro, límpialo también. Si te acostumbras, entonces no te sientes mal cuando alguien más te obliga a hacerlo (ya sea directa o indirectamente).

Por último, optimización para hardware.