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.
- ¿Qué debe hacer un ingeniero de software senior con más de 8 años de experiencia en la industria de TI, si no quiere asumir la responsabilidad de un líder de equipo?
- ¿El ingeniero de software necesita practicar o recordar las matemáticas?
- ¿Cuáles son las tareas diarias de un ingeniero de automatización de pruebas de software?
- ¿En qué medida los ingenieros de software necesitan comprender la computadora y el hardware eléctrico?
- ¿Qué se siente al no poder desempeñarse como ingeniero de software en Google?
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.