As a software developer, mainly
working on web applications, do i need
to have extensive knowledge of TCP/IP
and how routers manage requests or
it's just black box knowledge to me?
IMO, il fatto che tu sia uno sviluppatore di software (presumo con uno sfondo di CS) dovrebbe sapere su queste cose. In particolare se fai lo sviluppo web. Come ho accennato in uno dei miei commenti, ho fatto un carico di lavoro sulle spese di consulenza, semplicemente correggendo errori davvero stupidi fatti da persone che non conoscono le basi dell'architettura di rete / Internet.
ZOMG, le modifiche che ho apportato al mio sito web non vengono mostrate, per favore!
* ZOMG, i profili delle persone vengono incrociati perché le sessioni vengono memorizzate nella cache da qualche parte, per favore! *
ZOMG, abbiamo un contenuto sicuro per gli utenti autenticati, ma le persone possono raggiungerli con un segnalibro e la schermata di autenticazione sanguinosa non viene visualizzata, per favore! "
... e così via e così via ... purtroppo ...
C'è un sacco di cose tra la tua app web e il browser dell'utente: la tua app, la scheda NIC della tua app, un router e possibilmente un firewall, la scheda NIC interna del server http, il tuo server http, la tua scheda NIC in uscita sul server http , quindi un altro router e sicuramente un firewall. Quindi un dispositivo di memorizzazione nella cache e possibilmente un dispositivo SSL. Poi verso Internet con più router e server di memorizzazione nella cache, infine sul browser degli utenti (e sulla cache interna).
Un miliardo di cose possono andare storto e se non hai un briciolo di conoscenza su networking, protocolli di rete, sistemi operativi / sysadmin e architettura di Internet, sarai perso e in balia del tuo dipartimento IT OP ( dal momento che la maggior parte degli sviluppatori non ha accesso all'infrastruttura e non sa dove cercare quando risolve i problemi). Nel peggiore dei casi, ti renderà uno sviluppatore web davvero schifoso.
L'aspetto della programmazione dello sviluppo web è proprio questo, un aspetto. L'esecuzione riuscita di esso si basa direttamente su altre competenze (in particolare sul networking e sull'amministrazione di sistemi) che non possono essere date per scontate né delegate ciecamente alle operazioni IT. Ciò non significa che deve essere responsabile della risoluzione dei problemi di rete / OS, ma
a. È necessario sapere cosa può andare storto a livello di rete / sistema operativo in modo da poter collaborare e guidare IT OPS che non può mai avere una conoscenza approfondita della propria applicazione.
b. Tale conoscenza ti consente di progettare il tuo sistema in modo da evitare, o almeno migliorare e gestire con garbo tali errori.
La programmazione è solo un aspetto dell'ingegneria e dello sviluppo. Non può essere la tua abilità principale, e avere davvero successo a lungo termine nello sviluppo delle imprese in generale, e nello sviluppo del web in particolare, queste sono cose che devi sapere. E onestamente, queste sono cose che dovrebbero essere apprese (molto fermamente) a scuola o attraverso l'autoapprendimento prima della laurea (o immediatamente dopo essere entrati nel mercato del lavoro).
Buona fortuna.