¿Cuáles son las habilidades, el conocimiento y la experiencia necesarios para ser un gran ingeniero de software de back-end?

Un mínimo sería el conocimiento de bases de datos relacionales (sql, definición de esquema, índices) combinados con lenguaje interpretado (python, ruby) y familiaridad con algún marco web. Eso suele ser suficiente para ser contratado como junior.

Para ser competente, por supuesto, hay más.

Comenzando con las bases de datos sql, necesitará saber cómo analizar y optimizar el rendimiento de las consultas (para consultas particulares) y el rendimiento de una base de datos en general.
Esto requiere comprender la configuración y el ajuste de la base de datos, cómo funcionan e interactúan los sistemas operativos con la base de datos y su aplicación, cómo se pueden monitorear para detectar problemas relacionados con el rendimiento.

NoSQL también es útil: al menos sepa qué herramientas existen y qué problemas resuelven. Una vez que obtienes eso, usar uno es generalmente simple (la mayoría de las veces), aunque algunos de ellos son adecuados para dominios específicos (es decir, solr / elasticsearch) y descubrir qué pueden hacer y cómo usarlos puede tomar mucho tiempo. hora.

En el lado de la programación, necesitará saber cómo usar hilos y procesos y cuándo usarlos, estar familiarizado con las herramientas de depuración y creación de perfiles, y dado que es fácil estar limitado por el rendimiento de los intérpretes, un lenguaje compilado se vuelve muy útil.

En algún momento excederá las capacidades de una sola caja, por lo que será necesario el almacenamiento distribuido y el procesamiento de los datos; esto requiere una buena comprensión de las bases de datos / marcos que usará, así como el diseño adecuado de la aplicación.

Agregaré detalles de los protocolos y formatos de datos que puede usar, algunas herramientas gráficas (statsd, grafito).

Dos rasgos personales son muy útiles para obtener este conocimiento: el primero es llegar al fondo de cómo funcionan las cosas, para que pueda rastrear una imagen en el sitio web a través de todas las llamadas http, la lógica de la aplicación, las consultas de la base de datos hasta el sistema de archivos leer syscall .
El segundo es reunir conocimiento sobre las herramientas existentes y los problemas para los que son buenos / malos, para que sepa cuándo y dónde buscar si tiene dificultades para forzar alguna herramienta a hacer lo que necesita.

TL; DR Creo que necesita saber sobre redes, bases de datos, programación distribuida, escalabilidad, monitoreo, devops, pubsub, infraestructura, computadora en la nube y muchas pruebas.

More Interesting

Siendo ingeniero de software y actualmente teniendo experiencia trabajando en una empresa de tecnología, ¿puedes compartir algo que sea beneficioso para mí? Actualmente estoy en mi primer año de ingeniería (IT)?

¿Tiene alguna idea para arreglar el proceso de entrevista roto en la industria de la ingeniería de software hoy?

¿Los desarrolladores profesionales usan atom?

¿Necesito aprender Oracle DB para convertirme en ingeniero de software Java?

Outsourcing de código: ¿Cuánto cuesta contratar a un ingeniero de software de contrato a tiempo parcial de India o China?

¿Son muy buenos ingenieros de software capaces de trabajar en áreas técnicas muy diferentes?

¿Quién es un ingeniero de software senior? ¿En qué momento sabes que eres un ingeniero de software senior? ¿Realmente hay alguna lista de verificación?

¿Cuáles son los ejemplos de proyectos que pueden impresionar a los entrevistadores / reclutadores en Google para científicos de datos, ingenieros de software e ingenieros de inteligencia artificial?

Para un currículum interno de ingeniero de software, ¿cómo describiría que sabe cómo usar Linux y la línea de comandos?

¿Cuál es el mejor consejo que puede dar a un programador junior?

(Específicamente) ¿Qué trabajo hiciste como desarrollador de software durante tu pasantía?

¿Dónde puedo encontrar un ingeniero de software que me aconseje sobre la creación de un programa?

¿Por qué la probabilidad y las estadísticas son necesarias para la ingeniería de software?

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

Soy una persona INFP interesada en Informática y Programación. ¿Es bueno para mí si sigo interesado en CS, teniendo en cuenta el hecho de que este campo es menos conquistado por personas de mi tipo de personalidad?