전자 공학 대 컴퓨터 과학 : 개발자의 접근 방식, 스타일에 미치는 영향? [닫은]


11

컴퓨터 공학을 통해 직업에 들어간 사람들과 비교하여 전자 공학 또는 다른 공학적 배경을 가진 소프트웨어 개발자 (소프트웨어 엔지니어, 건축가, 직종에 관계없이) 사이에 체계적인 차이가 있습니까?

전자 분야의 배경으로, 나는 전자 공학 학위, 또는 자율 전자 공학 땜장이, 다른 유형의 엔지니어 및 실험 물리학자를 의미합니다.

플립 플롭, 3 상태 버퍼, 클럭 에지 상승 시간 등에 대한 강력한 지식으로 소프트웨어 제작 분야에 종사하는 것이 궁금합니다. 일반적으로 특정 전문 분야의 부족한 문제, 사고 방식 또는 우수한 기술에 대한 뚜렷한 접근 방식을 이끌어냅니다. 다른 데이터 기술, 객체 지향, 데이터베이스 정규화, 프로그래밍 언어에서 "클로저"를 말하는 컴퓨터 과학 유형과 비교할 때 다른 사람들의 기술-납땜 인두 군중에게는 거의 의미가없는 것 충분한 프로그래밍을 배우십시오.

실제 세계는 분명한 범위의 개별 예외를 제공하지만 대부분 전체적으로 차이가 있다고 말할 수 있습니까? "데이터베이스 디자인을 위해 전자 랭글러를 고용하지 마십시오"와 같은 고용 관계가 있습니까? 차이점을 알면 구직자들이보다 효과적으로 무언가를 찾는 데 도움이 될 수 있습니까? 아니면 특정 직무에서 부적합하다고 생각되는 사람들에게 깨달음이나 실용적인 조언을 제공합니까?

(Btw, 나는 컴퓨터 과학 수업을 본 적이 없다; 그들이 다루는 것에 대한 나의 인상은 희미하다. 나는 전자 / 물리 / 예술 유형이다.)

답변:


5

EE 부전공과 CS 전공을하면서 저는 두 그룹과 학문적으로 협력했습니다. 나는 EE 스타일의 제품을 디자인 한 일을 한 적이 없지만 PLC와 같은 회사에서 일하는 많은 일을 해왔 기 때문에 (교육적 배경에서) 무슨 일이 있었는지 잘 이해할 수 있었다 . 따라서 나는 직장 행동과 특성에 대해 100 % 알고 있다고 말할 수는 없지만 academic둘 사이의 차이점을 어느 정도 설명 할 수 있습니다 .

EE 사람들은 세부 사항에 집중하는 경향이 있으며 정확한 구현 방법을 알고있는 경향이 있습니다. 100 % 매핑 할 수 없으면 마음에 들지 않습니다. EE 직원은 필요에 따라 불필요한 세부 사항을 제거하도록 최적화합니다.

SE 사람들은 논리의 계층과 구획화를 좋아하는 경향이 있습니다. SE 사람들은 부풀린 프로젝트를 신경 쓰지 않습니다. SE 사람들은 매우 수학적인 경향이 있습니다. 그들은 방정식과 패턴 개념에서 문제를 해결하는 방법으로 생각하는 경향이 있습니다. 조인 은 데이터베이스 작업과 같이이 그룹에보다 직관적입니다. SE가 멀수록 Functional Programming과 같은 것에 유창한 사람들을 더 많이 보게됩니다. 그것은 EE 사람에게 안전한 근거가 아닙니다 .

두 사람 모두 Karnaugh지도와 같은 것들에 대해 알고 있으므로 그 지역에는 겹치는 부분이 많습니다. 논리 감소, 그런 종류의 것.

자, 이것이 주관적인 답변입니다. 도움이 되길 바랍니다.


이 답변을 통해 현재 프로젝트에 대한 통찰력을 얻을 수 있습니다. 경력을 바꿔야 해요!
DarenW

1
함수형 프로그래밍에 대한 부분을 제외하고는 거의 100 % 동의합니다. 예를 들어, 순수한 래더 로직은 거의 100 % 선언적 구문이라고 생각합니다. 기능 블록 다이어그램은 EE에서도 널리 사용되며 기능도 있습니다.
Scott Whitlock

@Scott W. ~ 2 생각 ... ;)그것은 주관적인 답변입니다, 나는 잘못 될 수 있습니다 ... 기능 논리와 관련 하여이 lisp 코드와 같은 의미 ((lambda (arg) (+ arg 1)) 5)... 그들은 실제로 "유사한"것을 사용하지만 논리는 EE와 동일합니까? 개인적인 경험이 아닙니다. 물론, 많은 전문 칩 설계 EE를 알지 못합니다. 제가 아는 대부분은 더 많은 서비스 요원입니다. 그리고 컴퓨터 터미널에 입력하는 래더 로직은 화면에서 문자 그대로의 사다리처럼 보입니다. 그림을 이동.
jcolebrand

1
나는 당신이 람다 등과 같은 기능적 구성에 대해 이야기하고 있다고 생각하며, 불변성과 선언적 구문과 같은 기능적 개념에 대해 생각하고 있습니다. 나는 모나드와 같은 것들이 매우 추상적이라는 것에 동의합니다. 나는 EE가 일반적으로 그런 것들을 겪을 것이라고 생각하지 않습니다.
Scott Whitlock

나는 EE가 SE 사람들보다 모나드에 더 자주 빠져 있다고 생각합니다. Haskell은 모나드 확장 기능 을 가지고있어 모나드 를 DSP 엔지니어의 핵심 요소 인 I / O 블록으로 모델링 할 수 있습니다.
Aditya

12

내가 일반화해야한다면, 나의 경험은 다음과 같습니다.

  • 엔지니어 (또는 단지 EE)는 "작은 자의 완벽 함"에서 더 나은 경향이 있습니다. 작은 프로그래밍 작업이 주어지면 모든 최첨단 사례에 대해 매우 길고 열심히 생각하며 매우 강력한 소프트웨어를 만들 가능성이 높습니다. 일반적으로 하드웨어에서 익숙한 방식이므로 하향식 디자인의 전면적 접근 방식을 사용합니다. 일반적으로 상태 머신은 하드웨어 용으로 설계하는 데 사용되며 "큰 디자인"접근 방식에 적합하기 때문에 상태 머신을 사용합니다. 한편으로는 확장 성이나 유지 관리성에 대해 많이 생각하지 않습니다.

  • 기존의 개발자는 큰 복잡성을 관리하는 데 도움이됩니다. 주로 교육을 통해 문제를보다 관리하기 쉬운 비트로 분류 할 수 있기 때문입니다. 그들은 큰 디자인을 피하고 문제를 분리하고 테스트를 작성하며 테스트를 통과시키는 법을 배웁니다. 일반적으로 복잡성 및 시간으로 인해 누락 된 엣지 케이스가 많이 있지만 결국에는 커버되지 않습니다. 개발자는 소프트웨어 일뿐 아니라 변경하기 쉬워야한다는 사실을 활용하는 경향이 있습니다. EE가 하드웨어 작업을 할 때 이러한 이점이 없으므로 전환하는 데 시간이 걸린다고 생각합니다.

내가 말했듯이, 그것은 내 일반적인 경험입니다. 모든 경우에 해당되는 것은 아닙니다.


좋은 답변, 둘 사이의 대비. 이제 얼마나 많은 다른 사람들이 이것이 올바르거나 올바르다는 의견에 동의 하는지를 보려고합니다.
DarenW

3

내 경험상-EE 유형은 선형 프로그램을 설계하는 것으로 보이며 CS 유형이 익숙한 추상화 계층을 포함하지 않는 것 같습니다.

품질 차이 또는 부족에 대한 의견이 없습니다.


1

대부분의 사람들이 업무를 수행하는 일반적인 종류의 비즈니스 또는 웹 앱에서 많은 차이를 보았을 것입니다. "납땜 한 철 군중"과 혼동되는 것으로 열거 한 모든 것은 정상적인 프로그래밍 기술입니다. 본질적으로 당신은 자신의 질문에 대답하고 있습니다. 프로그래밍 배경이없는 사람은 프로그래밍을 배울 수는 있지만 프로그래머가 될 때까지 프로그래밍을 배울 수 있습니다. 논리적이고 분석적인 마음을 가진 사람은 그렇지 않은 사람보다 잘 프로그래밍하는 법을 배우기가 훨씬 쉽다는 것을 알게 될 것입니다.

컴퓨터 공학 (컴퓨터 공학과는 대조적으로)은 물리학과 같은 다른 여러 과학과 마찬가지로 (높은 수준에서) 주로 수학이지만 매우 다른 종류의 수학입니다. 다른 과학을 수행했다면 수학도했을 것이므로 수학 배경이없는 사람과 달리 속도를 높일 수 있어야합니다. 물론, 이론에 대한 지식, 큰 O 또는 다른 것에 대해 알아야 할 프로그래머는 거의 없습니다.


흥미로운 답변. 나는 전자 사람들의 프로그래밍 기술을 경시했을 수도 있습니다. 경험이 풍부한 사람들은 더미에서 록 스타에 이르기까지 어느 곳에서나 가능합니다. EE가 순수 소프트웨어 사용자가 전자 장치를 집어들 수있는 것보다 전문적으로 유능한 수준으로 프로그래밍을 배울 수 있다는 것이 사실입니까?
DarenW

1

나는 BSEE로 시작했고, 큰 전화 R & D 실험실을위한 논리 회로 설계 작업을했으며 (40 년 전), 내가 구축하고있는 대부분의 작업은 결국 컴퓨터 프로그램으로 수행 될 수 있다는 것을 깨달았습니다. 그래서 돌아가서 MSCS 학위를 받았습니다.

저는 항상 컴퓨터 아키텍처와 하드웨어 수준에서 일어나는 일에 관심이있었습니다. 내 경력의 대부분은 임베디드 마이크로 컨트롤러 시스템을 설계하는 데 소비되어 왔으며 하드웨어에서 수행되는 작업과 펌웨어에서 수행되는 작업 사이의 최상의 일치를 찾으려고 노력했습니다. 그러나 나는 꽤 많은 웹 프로그래밍과 일부 데이터베이스 디자인을 수행했습니다.

CS에 대한 배경 지식이 없으면 더 추상적 인 개념을 이해하는 데 훨씬 더 많은 어려움이 있다고 생각합니다. 많은 다른 어셈블러 언어 외에도 C, C ++, C #, Pascal, Delphi, Perl, PHP 및 일부 Lisp를 사용했습니다. 현재 루비와 파이썬을 배우려고합니다. OO 디자인 나는 꽤 편안합니다. 함수형 프로그래밍 (아직)은 아닙니다.

데이터베이스와 동일합니다. 정규화를 이해합니다. 좀 더 난해한 조인에 문제가있어서 피해야합니다. 나는 후드 아래에서 무슨 일이 일어나고 있는지 이해하지 않는 한 무언가에 익숙하지 않습니다.

컴퓨터가 어떻게 프로그램을 내 머리에서 실행하는지 "보고"싶습니다.


1
"내가 무슨 일이 일어나고 있는지 이해하지 않으면 나는 무언가에 정말 편하지 않다." 그것은 책임있는 엔지니어링의 마크입니다. 선생님 께 +1
luis.espinal
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.