Là một nhà phát triển phần mềm, chủ yếu làm việc trên các ứng dụng web, tôi có cần phải có kiến thức sâu rộng về TCP / IP không và cách các bộ định tuyến quản lý các yêu cầu hoặc đó chỉ là kiến thức hộp đen đối với tôi?
IMO, thực tế là bạn là một nhà phát triển phần mềm (tôi giả sử có nền tảng CS) nên biết về những điều này. Đặc biệt nếu bạn làm phát triển web. Như tôi đã đề cập trong một trong những bình luận của mình, tôi đã thực hiện một khoản phí tư vấn chỉ bằng cách sửa các lỗi thực sự ngu ngốc được thực hiện bởi những người không biết về những điều cơ bản của kiến trúc mạng / Internet.
ZOMG, những thay đổi tôi đã thực hiện cho trang web của mình không hiển thị, xin hãy giúp đỡ!
* ZOMG, hồ sơ của người dân đang nhận được vượt qua bởi vì phiên đang được lưu trữ ở đâu đó, plz teh giúp đỡ! *
ZOMG, chúng tôi có nội dung an toàn cho người sử dụng xác thực, nhưng mọi người có thể cho họ với một bookmark và Nevers màn hình xác thực đẫm máu đi lên, plz teh Cứu giúp! "
... vân vân và vân vân ... thật đáng buồn ...
Có rất nhiều thứ giữa ứng dụng web của bạn và trình duyệt của người dùng: ứng dụng của bạn, NIC của ứng dụng, bộ định tuyến và có thể là tường lửa, sau đó là máy chủ http của máy chủ http, sau đó là máy chủ http của bạn, sau đó là máy chủ http của bạn, sau đó là máy chủ http của bạn bộ định tuyến và chắc chắn là một tường lửa. Sau đó, một thiết bị lưu trữ, và có thể là một thiết bị SSL. Sau đó ra internet với nhiều bộ định tuyến và máy chủ bộ đệm hơn, cuối cùng đến trình duyệt của người dùng của bạn (và bộ đệm trong của nó.)
Hàng trăm thứ có thể sai và nếu bạn không có kiến thức về mạng, giao thức mạng, hệ điều hành / sysadmin và kiến trúc internet, bạn sẽ bị lạc và phải chịu trách nhiệm của bộ phận IT OP của bạn (vì hầu hết các nhà phát triển không có quyền truy cập vào cơ sở hạ tầng cũng như không biết tìm ở đâu khi xử lý sự cố). Tệ nhất, nó sẽ làm cho bạn trở thành một nhà phát triển web thực sự nhảm nhí.
Khía cạnh lập trình của phát triển web chỉ là một khía cạnh. Việc thực hiện thành công nó nằm trên các kỹ năng khác (đặc biệt là quản trị hệ thống và mạng) mà không thể được cấp cho cũng như không được ủy quyền một cách mù quáng cho các hoạt động CNTT. Điều đó không có nghĩa là bạn phải chịu trách nhiệm cho việc khắc phục sự cố mạng / HĐH, nhưng
a. Bạn phải biết những gì có thể sai ở cấp độ mạng / hệ điều hành để bạn có thể hợp tác và hướng dẫn IT OPS, những người không bao giờ có thể có kiến thức sâu sắc về ứng dụng của bạn. b. Kiến thức như vậy cho phép bạn thiết kế hệ thống của mình sao cho nó tránh được, hoặc ít nhất là cải thiện và cảnh sát duyên dáng với các lỗi như vậy.
Lập trình chỉ là một khía cạnh của kỹ thuật và phát triển. Nó không thể là kỹ năng chính của bạn và thực sự thành công về lâu dài trong phát triển doanh nghiệp nói chung và phát triển web nói riêng, đây là những điều bạn cần biết. Và thành thật mà nói, đây là những điều nên được học (rất chắc chắn) ở trường hoặc thông qua việc tự học trước khi tốt nghiệp (hoặc ngay khi tham gia vào thị trường việc làm.)
Chúc may mắn.