¿Todo buen desarrollador necesita conocer la configuración y trabajar con la infraestructura (implementación, servidores, firewalls, direcciones IP, etc.)?

He trabajado en infraestructura durante más de 20 años, y los desarrolladores modernos saben muy poco sobre esto. No estoy seguro de qué quiere decir con implementación, pero si se refiere a cómo se instalará la aplicación, qué directorios se crearán, qué claves de registro se modificarán, dónde se encuentran las bases de datos y qué derechos se necesitan para ejecutar la aplicación , el desarrollador debería saber todo esto, pero desafortunadamente, he visto que muchos desarrolladores simplemente solicitan derechos administrativos en un servidor porque no conocen esta información. Por lo general, depende de los administradores de sistemas tratar de resolver esto.

¿Debería el desarrollador saber acerca de la arquitectura del servidor? En realidad no, a los administradores de sistemas se les paga mucho por saber esto y realmente no es necesario para la mayoría de las aplicaciones. Sin embargo, los programadores deben saber qué API se están utilizando en el servidor y cómo interactuar con estas API. Si un desarrollador desea integrar su código con sistemas como Active Directory, LDAP y otros, debe comprender algo sobre la arquitectura del servidor que lo respalde, pero no es necesario ser un experto.

Un desarrollador no debe saber casi nada acerca de los firewalls, de hecho, este puede ser el elemento más frustrante con el que trato cuando hablo con los desarrolladores. Los desarrolladores necesitan saber qué puertos de comunicación y protocolos usa la aplicación, dejar el resto a los administradores del firewall.

No intente obtener información sobre las direcciones IP y ponerlas en programas. Esto simplemente complica la vida para todos. Use nombres DNS totalmente calificados en sus aplicaciones. Si realmente quiere aprender sobre direcciones IP, DNS, DHCP, cambiar de carrera y trabajar en infraestructura.

Un área de infraestructura que los desarrolladores pasan por alto, y esto causará la mayoría de los problemas de rendimiento son los protocolos de comunicaciones. Aprenda sobre las ventanas TCP y la comunicación TCP. Mientras lo hace, estudie en UDP y, por si acaso, ICMP (NO PING).

Si realmente desea que sus aplicaciones funcionen, hable con sus administradores de bases de datos. Un programador que trabaja con un buen DBA puede hacer que una aplicación sea un verdadero demonio de la velocidad. Combine esto con una buena comprensión de los protocolos de comunicación, y las aplicaciones funcionarán bien tanto en redes de baja velocidad como en redes de alta velocidad.

Hay mucho que saber en lo que está enumerando, y tratar de aprenderlo todo lo convertirá en un Jack de todos los oficios y maestro de ninguno. El desarrollo de software de la mayoría de los tipos debería requerir una comprensión profunda de todo eso, aunque gran parte de esto será absorbido por la ósmosis simplemente por estar rodeado de expertos en esos campos. Parece probable que su visión del desarrollo de software es un poco limitada, ya que hay una gran cantidad de desarrollo de software que no tiene nada que ver con las redes.

Sí, sí, sí y puede ser. 🙂

Como desarrollador de software, y como uno que quiere desempeñarse mejor en cada proyecto, debe comprender la imagen completa, aunque no es su tarea particular, debe comprender la forma en que sus compañeros de trabajo están involucrados en el proyecto.

Pero también es cierto que no necesita dominar todos los campos, mi consejo sería mantenerse siempre al tanto de las tecnologías que está utilizando porque podría ser el caso en que esa información haga que su trabajo diario sea más fácil.

Realmente no. Este es el trabajo del administrador del sistema. Pero son desarrolladores operativos (devops) que es una extensión para el administrador del sistema y requieren desarrollarse en un contexto operativo.