¿Qué debo aprender para comenzar para ser un buen programador?

Trabajo en la Escuela Holberton de Ingeniería de Software en San Francisco, donde he visto un entorno en el que los estudiantes interactúan regularmente con ingenieros de software de la vida real y líderes de la industria. Los mentores ayudan a los estudiantes de muchas maneras diferentes y aseguran que el plan de estudios se mantenga actualizado. Algunos mentores y proyectos son creados por mentores para mantener actualizados los niveles de habilidad.

Para convertirte en un gran programador de computadoras, debes enfocarte en 3 puntos:

  • Tener un conocimiento de la pila completa
  • Ser capaz de aprender solo
  • Habilidades blandas

Tener un conocimiento de la pila completa

Si bien todos tienen una definición diferente de “pila completa”, aquí hay una que me gusta. Las aplicaciones de software son sistemas complicados compuestos de muchas tecnologías y partes: interfaz, servidor, base de datos, servidor web, red … Por ejemplo: cambiar una consulta en la interfaz afectará a la base de datos si el desarrollador no tiene idea de cómo funcionan las bases de datos. podría derribar el sitio.

Es por eso que primero debe aprender un mínimo sobre lo que llamamos la pila, mientras que cada uno tiene su propia definición de la pila, un buen comienzo es saber sobre:

  • Algoritmo y estructura de datos.
  • Programación de alto nivel (lenguajes de programación de objetos orientados)
  • Administración del sistema y un poco de redes

Con esto, un ingeniero de software podrá navegar prácticamente cualquier sistema / aplicación y podrá tomar decisiones de ingeniería bien pensadas.

Ser capaz de aprender solo

Los conceptos básicos del software rara vez cambian, pero las herramientas que utiliza la industria cambian constantemente. La industria del software es probablemente una de las industrias que cambia más rápido, es por eso que constantemente necesita actualizar la aplicación de su teléfono inteligente y que sus sitios web favoritos brinden constantemente una mejor experiencia y características.

En este contexto, los ingenieros de software necesitan constantemente evaluar y quizás aprender nuevas herramientas que los ayudarán a hacer que su aplicación sea más rápida, mejor y más confiable. Los nuevos lenguajes de programación y bibliotecas están constantemente llegando y uno no puede volver a la universidad cada vez que surge una nueva tecnología. Los mejores ingenieros de software son los que pueden mantenerse al día con las últimas tendencias. Por eso es fundamental que pueda aprender solo.

Habilidades blandas

A menos que esté dispuesto a trabajar solo, podría ser la habilidad más importante.

Hay un buen libro sobre esto, “Cómo ganar amigos e influir en las personas”, porque este libro es muy importante para aprender a ser un ser humano exitoso.

  • Comunicación
    • verbal: hablar en público, presentación …
    • escrito: documentación, correo electrónico, post mortem, redacción técnica …
  • Colaboración
    • Ayudar a un compañero de trabajo en un proyecto.
    • A bordo de un recién llegado
    • Saber cuándo hacer una pregunta
  • Espíritu de equipo
    • Comprender a otros compañeros de trabajo
    • Fomento de la colaboración con otros equipos (si está en una gran empresa)

No te puedes imaginar cómo ser amable con las personas y ayudarlas a hacer su trabajo traerá mucho. Recuerda que para una empresa, si haces bien tu trabajo, eres un 1X. Pero supongamos que también está ayudando a 10 personas a hacer bien su trabajo, entonces usted es un 11X y ese es el tipo de personas que necesitan las empresas exitosas.

Si puedes conseguir estas 3 cosas, serás un programador increíble y todos querrán contratarte

¡Buena suerte en tu camino para convertirte en un gran programador!

Todo programador que quiera convertirse en un buen programador debería leer este libro al menos una vez en su carrera:

El programador pragmático: de oficial a maestro: Andrew Hunt, David Thomas: 9780201616224: Amazon.com: Libros

Lea “Herramientas de software en Pascal”: si puede descubrir por qué está leyendo un libro muy anticuado con ejemplos en un lenguaje ahora casi irrelevante, estará bien encaminado para aprender a PENSAR sobre la programación en general y cómo construir una FUNCIÓN o HERRAMIENTA específicamente.

Incluso hoy, leo este libro cada año.

Cosas para pensar: ¿Qué hace que una buena función (o subrutina, etc.)? ¿Cómo se elige una ‘interfaz’ (p. Ej., Parámetros necesarios y valor de retorno)?

Si no puede programar en pequeño, entonces es seguro que no puede programar en grande.


Hierba

Las estructuras de datos son clave. Los algoritmos son importantes. Los conceptos de codificación estructurada también son muy importantes.

Lenguajes y herramientas específicos que deberías poder aprender por tu cuenta sin una clase.

More Interesting

¿Por qué los chicos de CS dejan sus trabajos y van a GATE (Graduate Aptitude Test in Engineering)?

¿Qué cosas debe saber un estudiante de CS después del tercer año de su graduación? ¿Cuál es tu expectativa?

Cómo sobresalir en la gestión media sin conocer todos los lenguajes / tecnologías de programación de software

Tengo unas vacaciones de dos meses por venir. ¿Qué debo hacer para convertirme en un mejor programador al final de estas vacaciones?

¿Es necesario aprender programación para convertirse en un ingeniero de CFD?

Soy un estudiante de tercer año de ECE. He realizado muchos proyectos relacionados con la electrónica integrada, pero no creo que sea mi pasión. Durante los últimos 4 meses he estado haciendo codificación en C ++ y me parece bien, pero las ubicaciones comienzan a partir de 3 meses a partir de ahora. ¿Qué sería lo mejor para mí? ¿Qué cosas mejores puedo hacer?

¿Qué debería hacer un novato, que consigue un trabajo en una empresa de nivel Microsoft pero no sabe mucho sobre codificación?

¿Cómo se elige entre ser un desarrollador front-end y un desarrollador full-stack?

Según las tendencias actuales de la industria, ¿en qué habilidades debería invertir un desarrollador de Java con más de 5 años de experiencia que solo conoce Spring e Hibernate?

¿Cuáles son las cualidades de un buen desarrollador de software?

¿Cómo es trabajar y vivir como ingeniero de software (en cualquier lugar, desde el front-end hasta el back-end) en Nueva York, a diferencia de Boston y Silicon Valley?

¿Es importante hacer una pasantía como estudiante de CS?

¿Hay trabajos de Python?

¿Qué es mejor para CSE, IPU o LNMIIT?

Me graduaré en 2017 con una licenciatura en economía y ciencias de la computación; ¿Qué carrera debo seguir?