Як розробник програмного забезпечення, який працює в основному над веб-додатками, чи потрібно мені володіти широкими знаннями TCP / IP та як маршрутизатори керувати запитами чи це для мене просто знання чорної скриньки?
IMO, той факт, що ви розробник програмного забезпечення (я маю на увазі, що це CS), повинен знати про ці речі. Зокрема, якщо ви займаєтеся веб-розробкою. Як я вже згадував в одному зі своїх коментарів, я зробив велике навантаження в оплаті консультацій, просто виправляючи дійсно дурні помилки, які роблять люди, які не знають про основи мережевої / інтернет-архітектури.
ZOMG, зміни, які я внесла на свій веб-сайт, не відображаються, довідка!
* ZOMG, профілі людей перетинаються через те, що десь кешуються сеанси, допомогайте! *
ZOMG, у нас є захищений контент для аутентифікованих користувачів, але люди можуть дістатися до них із закладкою, і кривавий екран аутентифікації з'являється, з'являється допомогти! "
... і так далі, і так далі ... сумно ...
Між Вашим веб-додатком та веб-переглядачем користувача є багато речей: ваш додаток, NIC програми, маршрутизатор і, можливо, брандмауер, потім ваш внутрішній NIC-сервер http, потім ваш http-сервер, потім ваш http-сервер, вихідний NIC, потім ще один маршрутизатор і, безумовно, брандмауер. Потім пристрій кешування, а можливо і пристрій SSL. Потім вийдіть до Інтернету з більшою кількістю маршрутизаторів і кешуючих серверів, а потім нарешті до браузера своїх користувачів (та його внутрішнього кеша.)
Зільйон речей може піти не так, і якщо ви не володієте іотою знань про мережу, мережеві протоколи, операційні системи / sysadmin та архітектуру Інтернету, ви будете загублені та на волі вашого відділу ІТ-операторів (оскільки більшість розробників не мають доступу до інфраструктури і не знають, де їх шукати під час усунення неполадок). У гіршому випадку, це зробить вас справді хитрим веб-розробником.
Програмовий аспект веб-розробки - це саме той, один аспект. Успішне його виконання прямо відповідає іншим навичкам (зокрема, мережам та адмініструванню систем), які не можна сприймати як належне, ні сліпо делегувати ІТ-операціям. Це не означає, що ви повинні нести відповідальність за усунення несправностей у мережі / ОС, але
а. Ви повинні знати, що може піти не так на рівні мережі / ОС, щоб ви могли співпрацювати та керувати IT OPS, які ніколи не можуть мати інтимних знань щодо вашої програми. б. Такі знання дозволяють сконструювати вашу систему, щоб вона уникала або хоча б покращувалась і витончено справлялася з такими помилками.
Програмування - лише один із аспектів інженерії та розробки. Це не може бути вашим основним вмінням, і справді ви можете бути успішними в довгостроковій перспективі в розвитку підприємства в цілому, а також у веб-розробці, зокрема, це вам потрібно знати. І якщо чесно, це речі, які слід було б вивчити (дуже твердо) або в школі, або через самонавчання до закінчення навчання (або відразу після виходу на ринок роботи.)
Удачі.