Come sviluppatore di software, lavorando principalmente su applicazioni Web, devo avere una conoscenza approfondita del TCP / IP e di come i router gestiscono le richieste o è solo una conoscenza della scatola nera per me?
IMO, il fatto che tu sia uno sviluppatore di software (presumo con un background CS) dovrebbe conoscere queste cose. In particolare se fai sviluppo web. Come ho accennato in uno dei miei commenti, ho fatto un grosso carico nelle commissioni di consulenza, risolvendo 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 visualizzate, per favore!
* ZOMG, i profili delle persone vengono incrociati perché le sessioni vengono memorizzate nella cache da qualche parte, per favore! *
ZOMG, abbiamo contenuti sicuri per gli utenti autenticati, ma le persone possono raggiungerli con un segnalibro e la schermata di autenticazione sanguinosa viene visualizzata, per favore Aiuto! "
... e così via e così via ... purtroppo ...
C'è un sacco di roba tra l'app Web e il browser dell'utente: l'app, la scheda NIC dell'app, un router e possibilmente un firewall, quindi la scheda NIC interna del server http, quindi il server http, quindi la scheda NIC in uscita del server http, quindi un'altra router e sicuramente un firewall. Quindi un dispositivo di memorizzazione nella cache e possibilmente un dispositivo SSL. Poi su Internet con più router e server di cache, infine sul browser degli utenti (e sulla sua cache interna).
Un milione di cose possono andare storte e, se non si dispone di una vasta gamma di conoscenze sulla rete, i protocolli di rete, i sistemi operativi / l'amministratore di sistema e l'architettura di Internet, sarete persi e in balia del reparto OP IT (poiché la maggior parte degli sviluppatori né avere accesso all'infrastruttura né sapere dove cercare durante la risoluzione dei problemi). Nel peggiore dei casi, ti renderà uno sviluppatore web davvero schifoso.
L'aspetto di programmazione dello sviluppo web è proprio questo, un aspetto. La sua corretta esecuzione si colloca esattamente al di sopra di altre competenze (in particolare reti e amministrazione di sistemi) che non possono essere date per scontate né delegate alla cieca alle operazioni IT. Non significa che devi essere responsabile della risoluzione dei problemi di rete / SO, ma
un. Devi sapere cosa può andare storto a livello di rete / sistema operativo in modo da poter collaborare e guidare l'IT OPS che non può mai avere una conoscenza intima della tua applicazione. b. Tale conoscenza ti consente di progettare il tuo sistema in modo da evitare, o almeno migliorare e gestire con grazia 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 aziendale in generale, e nello sviluppo web in particolare, queste sono cose che devi sapere. E onestamente, queste sono cose che avrebbero dovuto essere apprese (con fermezza) a scuola o attraverso l'autoapprendimento prima della laurea (o immediatamente dopo l'ingresso nel mercato del lavoro).
In bocca al lupo.