Czy jako programista, pracujący głównie nad aplikacjami internetowymi, muszę mieć rozległą wiedzę na temat protokołu TCP / IP i tego, w jaki sposób routery zarządzają żądaniami, czy to dla mnie tylko wiedza z czarnej skrzynki?
IMO, fakt, że jesteś programistą (zakładam, że masz doświadczenie w CS) powinien wiedzieć o tych rzeczach. W szczególności, jeśli zajmujesz się tworzeniem stron internetowych. Jak wspomniałem w jednym z moich komentarzy, zrobiłem sh * obciążenia w opłatach za konsultacje, naprawiając naprawdę głupie błędy popełniane przez ludzi, którzy nie znają podstaw architektury sieci / Internetu.
ZOMG, zmiany, które wprowadziłem na mojej stronie, nie są wyświetlane, proszę o pomoc!
* ZOMG, profile ludzi się krzyżują, ponieważ gdzieś są buforowane sesje, proszę, pomóż! *
ZOMG, mamy bezpieczną zawartość dla uwierzytelnionych użytkowników, ale ludzie mogą do nich dotrzeć z zakładką i nie pojawia się nigdy krwawy ekran uwierzytelniania, plz teh Wsparcie! „
... i tak dalej i tak dalej ... niestety ...
Między aplikacją internetową a przeglądarką użytkownika jest mnóstwo rzeczy: aplikacja, karta sieciowa aplikacji, router i być może zapora ogniowa, następnie wewnętrzna karta sieciowa serwera http, następnie serwer http, następnie serwer poczty wychodzącej serwera HTTP, a następnie inna router, a na pewno zapora ogniowa. Następnie urządzenie buforujące i ewentualnie urządzenie SSL. Następnie przejdź do Internetu z większą liczbą routerów i serwerów buforujących, a następnie do przeglądarki użytkowników (i jej wewnętrznej pamięci podręcznej).
Zillion rzeczy może pójść nie tak, a jeśli nie masz wystarczającej wiedzy na temat sieci, protokołów sieciowych, systemów operacyjnych / sysadmin i architektury internetowej, będziesz zagubiony i na łasce swojego działu IT OPs (ponieważ większość programistów nie mają dostępu do infrastruktury ani nie wiedzą, gdzie szukać podczas rozwiązywania problemów). W najgorszym przypadku stanie się naprawdę kiepskim programistą.
Aspekt programistyczny tworzenia stron internetowych to tylko jeden aspekt. Jego pomyślne wykonanie opiera się na innych umiejętnościach (w szczególności na administrowaniu sieciami i systemach), których nie można uznać za coś oczywistego ani ślepo powierzonych operacjom informatycznym. Nie oznacza to, że musisz być odpowiedzialny za rozwiązywanie problemów z siecią / systemem operacyjnym, ale
za. Musisz wiedzieć, co może pójść nie tak na poziomie sieci / systemu operacyjnego, abyś mógł współpracować i poprowadzić IT OPS, który nigdy nie będzie w stanie dokładnie poznać Twojej aplikacji. b. Taka wiedza pozwala tak zaprojektować system, aby unikał, a przynajmniej poprawiał i z wdziękiem radził sobie z takimi błędami.
Programowanie to tylko jeden aspekt inżynierii i rozwoju. Nie może to być twoja podstawowa umiejętność i naprawdę odnieść sukces na dłuższą metę w rozwoju przedsiębiorstw w ogóle, a zwłaszcza w rozwoju sieci, to są rzeczy, o których musisz wiedzieć. I szczerze mówiąc, są to rzeczy, których należało się nauczyć (bardzo mocno) w szkole lub w drodze samokształcenia przed ukończeniem szkoły (lub bezpośrednio po wejściu na rynek pracy).
Powodzenia.