답변:
그것은 당신이하는 일에 달려 있습니다.
임베디드 개발자이고 매우 작은 장치에서 금속 근처에 글을 쓰는 경우 시스템의 모든 구성 요소를 안팎으로 알아야합니다.
시스템 개발자이고 운영 체제 나 장치 드라이버 또는 데이터베이스를 작성하는 경우 저수준 하드웨어 인터페이스에 대한 모든 정보를 알아야합니다.
게임 개발자이고 프로젝트를 늦게하는 경우 (최적화 대상), 사용할 CPU 캐시 및 그래픽 아키텍처에 대한 정보를 알아야합니다.
응용 프로그램 개발자 인 경우 메모리 사용을 적절한 수준으로 유지하는 것 외에는이 중 어떤 것도 알 필요가 없습니다.
웹 개발자라면 인터넷 프로토콜을 아는 것이 편리하지만 메모리 문제를 처리하는 방법을 제외하고는이 외에 다른 것은 필요하지 않습니다.
응용 프로그램 개발자와 웹 개발자에 대한 의견이 잘못되었다고 생각합니다.
예를 들어 누군가가 ssh 또는 다른 암호화 알고리즘과 같은 많은 보안 관련 내용을 포함하는 웹 응용 프로그램을 개발하는 경우 컴퓨터에서 실제로 처리 할 수 있는지 확인할 수 있도록 실행중인 하드웨어 유형을 알고 있어야합니다. 작업 부하. 다른 예로는 일종의 다운로드 된 콘텐츠를 호스팅하는 서버가 있습니다. 상당히 많은 양의 요청을 예상 할 경우 디스크 드라이브의 기능과 연결된 버스 인터페이스 유형에 대해 잘 알고 있어야합니다.
응용 프로그램의 관점에서 볼 때 일종의 CAD 프로그램 또는 3D 렌더링을 수행하는 응용 프로그램은 이러한 응용 프로그램이 알고리즘 및 그래픽으로 계산 집약적 일 것으로 예상 할 수 있습니다. 응용 프로그램이 응답하고 사용 가능하도록 하드웨어를 이해하는 것이 현명합니다.
PCI 프로토콜과 같은 기능을 이해하는 데까지 갈 필요는 없지만 인터페이스와 하드웨어가 무엇을 할 수 있는지 이해하는 것이 좋습니다.
궁극적으로 개발 유형에 관계없이 중요합니다. 당신이 이해하는 데 필요한 세부 수준은 논쟁의 여지가 있습니다.
전문 프로그래머를 들어, 나는 그것을보고 전체적인 전체를 이해하는 방법 시스템을 ,보다는 주어진 프로그래밍 언어의 문법을 알고 금일를 . 프로그래머 (및 분석가)가 현명한 디자인 결정을 내리고 더 많은 정보를 제공하는 알고리즘 및 데이터 구조를 선택하는 데 도움이됩니다.
내 자신의 경험에서 최고의 프로그래머는 대상 플랫폼에 대한 기본 조립 지침 세트 를 이해하는지 , 학교의 초급 컴퓨터 조직 과정, 기초 디지털 전자 기기 를 이해 하는지 또는 세부적인 내용 을 이해할 수 있는지 여부에 관계없이 내부 작업에 대해 다양한 정도를 알고있는 경향이 있습니다. 최신 모델의 CPU 및 GPU 코어에 대한 설명 은 별이 덜한 동료보다 완벽한 지식을 갖추고 있습니다.
나는 제목에서 요구 되는대로 이것에 대답 할 것입니다 :
예, 개발자 는 하드웨어의 내부 작동을 알아야합니다. 개발자의 유형과 목표, 사용 가능한 시간 및 개인적인 관심사에 따라 달라집니다. 물론 우선 순위는 그들이 해당 분야에서 사용하는 즉각적인 도구, 기술 등에 중점을 두어야합니다. 이 견해는 잘 다듬어 진 개인의 선을 따른 것입니다. 공예품을 희생하지 않고 공예품 이외의 것을 더 많이 알수록 좋습니다.
그렇다고 치즈 위즈에 열광해야한다는 의미는 아닙니다. 하드웨어, 조각의 상호 작용 방식, 운영 체제가 하드웨어를 사용하는 방식에 대해 잘 살펴보십시오. 이러한 내용과 함께 모든 개발자를위한 운영 체제 개념 책을 읽는 것이 좋습니다.
이 모든 것을 알고 있습니까? 지옥 없음. SCSI에 관한 쓸모없는 정보를 잊어 버린 것도 재미 있지도 않습니다. 그러나 그것에 대해 배우는 것은 귀중한 경험이었습니다. 또한 다른 하드웨어 관련 세부 사항을 많이 잊어 버렸지 만 그 지식에서 배운 중요한 개념을 상기하십시오.
따라서 하드웨어에 대해 배우는 것이 좋습니다. 필요에 따라 합리적인 속도로 수행하십시오. 합리적으로 가능한 많은 세부 사항을 배우고 개념에 초점을 맞추십시오.