Benötige ich als Softwareentwickler, der hauptsächlich an Webanwendungen arbeitet, umfassende Kenntnisse über TCP / IP und darüber, wie Router Anforderungen verwalten, oder nur Black-Box-Kenntnisse?
IMO sollte die Tatsache, dass Sie ein Softwareentwickler sind (ich nehme an, mit einem CS-Hintergrund), über diese Dinge Bescheid wissen. Insbesondere wenn Sie Webentwicklung betreiben. Wie ich in einem meiner Kommentare erwähnt habe, habe ich eine Menge Beratungsgebühren gezahlt, nur um wirklich dumme Fehler zu beheben, die von Leuten begangen wurden, die nicht über die Grundlagen der Netzwerk- / Internet-Architektur Bescheid wissen.
ZOMG, die Änderungen, die ich an meiner Website vorgenommen habe, werden nicht angezeigt, bitte um Hilfe!
* ZOMG, die Profile der Leute werden gekreuzt, weil die Sitzungen irgendwo zwischengespeichert werden, bitte helfen Sie! *
ZOMG, wir haben gesicherten Inhalt für authentifizierte Benutzer, aber die Leute können mit einem Lesezeichen auf sie zugreifen und der blutige Authentifizierungsbildschirm erscheint immer wieder, bitte Hilfe! "
... und so weiter und so fort ... leider ...
Es gibt eine Menge Dinge zwischen Ihrer Web-App und dem Browser des Benutzers: Ihre App, die Netzwerkkarte Ihrer App, ein Router und möglicherweise eine Firewall, dann die interne Netzwerkkarte Ihres HTTP-Servers, dann die ausgehende Netzwerkkarte Ihres HTTP-Servers und dann eine andere Router und sicherlich eine Firewall. Dann ein Caching-Gerät und möglicherweise ein SSL-Gerät. Gehen Sie dann mit mehr Routern und Cacheservern ins Internet und schließlich zum Browser Ihrer Benutzer (und seinem internen Cache).
Unzählige Dinge können schief gehen, und wenn Sie nicht genügend Kenntnisse über Netzwerke, Netzwerkprotokolle, Betriebssysteme / Sysadmin und Internetarchitektur haben, sind Sie verloren und der Gnade Ihrer IT-OPs-Abteilung ausgeliefert (seit den meisten Entwicklern) Weder haben Sie Zugang zur Infrastruktur, noch wissen Sie, wo Sie suchen müssen, wenn Sie Probleme beheben. Im schlimmsten Fall werden Sie zu einem wirklich beschissenen Webentwickler.
Der Programmieraspekt der Webentwicklung ist genau das, ein Aspekt. Die erfolgreiche Ausführung des Programms basiert auf anderen Fähigkeiten (insbesondere Netzwerk- und Systemadministration), die weder als selbstverständlich angesehen noch blind an den IT-Betrieb delegiert werden können. Dies bedeutet jedoch nicht, dass Sie für die Fehlerbehebung im Netzwerk / Betriebssystem verantwortlich sein müssen
ein. Sie müssen wissen, was auf Netzwerk- / Betriebssystemebene schief gehen kann, damit Sie mit IT-OPS zusammenarbeiten und diese anleiten können, die niemals genaue Kenntnisse über Ihre Anwendung haben können. b. Dieses Wissen ermöglicht es Ihnen, Ihr System so zu konstruieren, dass solche Fehler vermieden oder zumindest gebessert werden und es ordnungsgemäß behandelt wird.
Programmierung ist nur ein Aspekt des Engineerings und der Entwicklung. Dies kann nicht Ihre Hauptkompetenz sein und ist auf lange Sicht wirklich erfolgreich in der Unternehmensentwicklung im Allgemeinen und in der Webentwicklung im Besonderen. Dies sind Dinge, die Sie wissen müssen. Und ehrlich gesagt, dies sind Dinge, die (sehr fest) entweder in der Schule oder durch Selbstlernen vor dem Abschluss (oder unmittelbar nach dem Eintritt in den Arbeitsmarkt) gelernt werden sollten.
Viel Glück.