En tant que développeur de logiciels, travaillant principalement sur des applications Web, dois-je avoir une connaissance approfondie de TCP / IP et de la façon dont les routeurs gèrent les demandes ou est-ce simplement une connaissance de la boîte noire pour moi?
IMO, le fait que vous soyez un développeur de logiciels (je suppose avec une formation CS) devrait être au courant de ces choses. En particulier si vous faites du développement web. Comme je l'ai mentionné dans l'un de mes commentaires, j'ai fait une charge de frais de consultation juste pour corriger des erreurs vraiment stupides commises par des gens qui ne connaissent pas les bases de l'architecture réseau / Internet.
ZOMG, les modifications que j'ai apportées à mon site Web ne s'affichent pas, aidez-moi!
* ZOMG, les profils des gens se croisent parce que les sessions sont mises en cache quelque part, aidez-vous! *
ZOMG, nous avons du contenu sécurisé pour les utilisateurs authentifiés, mais les gens peuvent y accéder avec un signet et l'écran d'authentification sanglant ne s'affiche jamais, plz teh Aidez-moi! "
... et ainsi de suite et ainsi de suite ... malheureusement ...
Il y a une tonne de choses entre votre application Web et le navigateur de l'utilisateur: votre application, la carte réseau de votre application, un routeur et éventuellement un pare-feu, puis la carte réseau interne de votre serveur http, puis votre serveur http, puis votre carte réseau sortante de serveur http, puis une autre routeur et certainement un pare-feu. Ensuite, un périphérique de mise en cache, et éventuellement un périphérique SSL. Ensuite, allez sur Internet avec plus de routeurs et de serveurs de mise en cache, puis enfin sur le navigateur de vos utilisateurs (et son cache interne).
Un tas de choses peuvent mal tourner, et si vous n'avez pas un iota de connaissances sur la mise en réseau, les protocoles réseau, les systèmes d'exploitation / administrateur système et l'architecture Internet, vous serez perdu et à la merci de votre service informatique OP (puisque la plupart des développeurs ni avoir accès à l'infrastructure ni savoir où chercher lors du dépannage de choses). Au pire, cela fera de vous un développeur Web vraiment merdique.
L'aspect programmation du développement Web n'est que cela, un aspect. L'exécution réussie de celui-ci va de pair avec d'autres compétences (en particulier la gestion de réseaux et de systèmes) qui ne peuvent pas être considérées comme acquises ni déléguées aveuglément aux opérations informatiques. Cela ne signifie pas que vous devez être responsable du dépannage du réseau / du système d'exploitation, mais
une. Vous devez savoir ce qui peut mal se passer au niveau du réseau / OS afin de pouvoir coopérer et guider les IT OPS qui ne peuvent jamais avoir une connaissance intime de votre application. b. Une telle connaissance vous permet de concevoir votre système de manière à éviter, ou au moins à améliorer et à gérer avec élégance ces erreurs.
La programmation n'est qu'un aspect de l'ingénierie et du développement. Ce ne peut pas être votre compétence principale, et réussir vraiment à long terme dans le développement d'entreprise en général, et dans le développement Web en particulier, ce sont des choses que vous devez savoir. Et honnêtement, ce sont des choses qui auraient dû être apprises (très fermement) soit à l'école, soit par l'auto-apprentissage avant l'obtention du diplôme (ou dès l'entrée sur le marché du travail).
Bonne chance.