Como desarrollador de software, principalmente trabajando en aplicaciones web, ¿necesito tener un amplio conocimiento de TCP / IP y cómo los enrutadores gestionan las solicitudes o para mí es solo conocimiento de caja negra?
En mi opinión, el hecho de que usted sea un desarrollador de software (supongo que con experiencia en CS) debería saber sobre estas cosas. En particular si haces desarrollo web. Como mencioné en uno de mis comentarios, he hecho una gran carga en las tarifas de consultoría simplemente arreglando errores realmente estúpidos cometidos por personas que no conocen los conceptos básicos de la arquitectura de red / Internet.
ZOMG, los cambios que hice en mi sitio web no se muestran, ¡por favor ayuda!
* ZOMG, los perfiles de las personas se cruzan porque las sesiones se almacenan en caché en algún lugar, ¡por favor ayuda! *
ZOMG, tenemos contenido seguro para usuarios autenticados, pero las personas pueden acceder a ellos con un marcador y la pantalla de autenticación sangrienta nunca aparece, por favor. ¡ayuda! "
... y así sucesivamente ... tristemente ...
Hay un montón de cosas entre su aplicación web y el navegador del usuario: su aplicación, la NIC de su aplicación, un enrutador y posiblemente un firewall, luego su NIC interna del servidor http, luego su servidor http, luego su NIC saliente del servidor http, luego otra enrutador y, sin duda, un firewall. Luego un dispositivo de almacenamiento en caché, y posiblemente un dispositivo SSL. Luego, salga a Internet con más enrutadores y servidores de almacenamiento en caché, y finalmente al navegador de sus usuarios (y su caché interna).
Un montón de cosas pueden salir mal, y si no tiene una pizca de conocimiento sobre redes, protocolos de red, sistemas operativos / administrador de sistemas y arquitectura de Internet, estará perdido y a merced de su departamento de OP de TI (ya que la mayoría de los desarrolladores ni tener acceso a la infraestructura ni saber dónde buscar al solucionar problemas). En el peor de los casos, te convertirá en un desarrollador web realmente malo.
El aspecto de programación del desarrollo web es solo eso, un aspecto. Su ejecución exitosa se ubica directamente sobre otras habilidades (en particular la administración de redes y sistemas) que no se pueden dar por sentado ni delegar ciegamente a las operaciones de TI. No significa que deba ser responsable de la solución de problemas de red / SO, pero
a. Debe saber qué puede salir mal en el nivel de red / SO para poder cooperar y guiar a OPS de TI que nunca puede tener un conocimiento íntimo de su aplicación. si. Tal conocimiento le permite diseñar su sistema para evitar, o al menos mejorar y hacer frente con gracia a tales errores.
La programación es solo un aspecto de la ingeniería y el desarrollo. No puede ser su habilidad principal, y realmente tener éxito a largo plazo en el desarrollo empresarial en general, y en el desarrollo web en particular, estas son cosas que debe saber. Y honestamente, estas son cosas que deberían haberse aprendido (con mucha firmeza) en la escuela o mediante el autoaprendizaje antes de la graduación (o inmediatamente después de ingresar al mercado laboral).
Buena suerte.