프로그래밍 문제에 대한 가장 터무니없는 신화는 무엇입니까?


101

다시 말해서 ... 프로그래밍에 대해 가장 일반적으로 생각하고 좌절하는 오해는 무엇입니까?

프로그래머가 해체 / 수정하기 어려운 광범위한 신화 / 오해는 무엇입니까 ?

왜 이것이 신화인지 설명하십시오.


24
Mythbusters가이 중 일부를 취하는 것을보고 싶습니다.
spong

8
Mythbuggers YouTube 채널을 원하십니까? :-)
Tamara Wijsman

1
Ooooh, MythBusters 및 경쟁 조건! Meesa처럼!

@TomWij는 그런 이름을 가진 웹 사이트를 갖는 것이 좋을 것입니다!
Junior M

답변:


272

그것은 당신이 프로그래머이기 때문에 [person]의 바이러스 리딩 머신을 고치는 방법을 알고 있습니다.


34
자동차 유추 / 나가기 조항 : "나는 기계공이 아닌 레이싱 드라이버입니다."
Peter Boughton

15
이 만화는 관련이 있습니다 : theoatmeal.com/comics/computers
lunixbochs


21
@ 그녀가 요리를 할 수 있다면 친구 파티를 위해 자원 봉사를 시작하십시오
Steven A. Lowe

19
어떻게 해야할지 모르겠어요 ... 어쨌든 2 주 후에 고장날 기계를 수리하는 데 시간을 낭비하고 싶지는 않습니다.
ChaosPandion

267

구직 활동을 할 때 나를 괴롭히는 일반적인 HR : 모든 코딩 기술은 언어별로 다르며 명령 세트를 능가하는 소프트웨어 엔지니어링 전문 지식이 없다는 암시 적 가정. Java에서 10 년의 경험과 Perl에서 또 다른 5 년은 C #을 사용하는 프로젝트에서 완전히 쓸모가 없다는 것을 의미합니다.

"예, 학습 곡선이 있습니다. 그러나 이것보다 더 어려운 전환을했습니다. 거래를하겠습니다. 첫 달 동안 80 %를 지불하고 그 시간이 아닐 경우 ... 오 HR 원숭이가 단순히 내 응용 프로그램을 삭제했기 때문에 실제로는이 대화를하지 않습니다. "


91
HR 원숭이를위한 + INF.
Rusty

67
C #을 알고 있었기 때문에 HR 담당자가 역할을 거절하게했지만 dotNet으로 코딩 할 수있는 사람을 찾고있었습니다.
burnt_hand

11
@ burnt_hand : 그래, 나는 dotNet을 알고있다. 또한 Excel과 Internet Explorer도 알고 있습니다. 지금 계약 할 수 있습니까?
Alan Plum

Java와 C #간에 구문, 구조, SDLC 등이 겹치는 것에 동의하지만 인터뷰에서 합리적으로 까다로운 C # 테스트를 제공한다면 어떻게 할 것입니까?
JBR 윌킨슨

2
@Kyralessa-나는 이제 프로그래밍 언어에서 기본적인 오류를 일으키지 않기 위해 컴퓨터의 기본 이론과 컴퓨터 기능에 대해 충분히 알고 있다고 생각합니다. 설명서를 읽을 수 있습니다. 그러나, 엔지니어링 기술이 제한적일 수있는 언어 별 직원은 프로그램의 구조, 디자인, 정확성, 확장 성, 신뢰성 및 유지 관리성에 근본적인 오류가 발생하여 잠재적으로 수정 비용이 많이 듭니다. 그 동안 소프트웨어의 품질이 낮아서 모든 고객을 잃지 않는 경우 (프로젝트가 실제로 어느 곳이든 가정 할 경우)
flamingpenguin

261

입력하지 않으면 작동하지 않습니다.

나는 좀비 공백 응시와 커피 산책이 프로그래머가 머리에 물건을 정리하는 데 필수적이라고 생각합니다.


9
페이지 위로, 페이지 아래로 ... 페이지 위로, 페이지 아래로 ...
아돌프 마늘

139
나는 타입에 돈을 지불하지 않고, 생각하기에 돈을 지불합니다. 보너스로 타이핑을 제공합니다.
Kevin Laity


11
그렇기 때문에 스크린 그래버와 웹캠으로 "근무 시간"을 기록하는 온라인 프리 랜싱 시장에 대해서는 크게 생각하지 않습니다. 이런 씨발? 내 견적이 좋다고 생각하는 경우 왜 내가 청구 할 때 내가 정확히 하는 일에 관심이 있습니까?
Alan Plum

10
"코드 작성 시간이 더 많으면 더 적은 줄을 쓸 것입니다." -Abe Lincoln 견적을 받으십시오.
JeffO

158

더 많은 사람들을 던져서 늦게 프로젝트를 진행할 수 있습니다.


28

2
사실, 당신은 할 수 있습니다. -1 (그래, 신화의 캐리어를 보라!)
P Shved

63
우리는 화려한 말을 사용합니다. "한 달에 9 명의 여성을 한 방에 넣고 아기를 낳을 수 없습니다."
Walter

10
지난주 우리는 프로젝트 경험이없는 4 명을 추가하여 비현실적인 일정을 "도움"하도록했습니다. 이번 주 프로젝트 보고서에 따르면 "일정 미달 원인 : 새로운 팀원의 학습 곡선으로 인한 효율성 감소"및 "복구 계획 : 기회가있는 사람들을 계속 추가 할 것"이라는 상위 경영진 목록으로 이어졌습니다. 믿을 수 없다.
AShelly

7
@Walter, 그러나 9 개월 동안 9 명의 아기를, 7 년 내에 작은 리그 야구 팀을 가질 수 있습니다.
Huperniketes

132

필기 소프트웨어는 쉽습니다.

시간이 지남에 따라 실행되는 예산과 사람들 (정치인, 미디어 등)이 계속 놀란 모든 프로젝트에 대해 어떻게 설명하고 고객이 "소규모 웹 사이트"(또는 그 밖의 것)가 실제로 걸릴 것이라고 말할 때 고객은 불평합니다 개발 및 수천 달러 비용 (파운드, 유로, [선택 통화 삽입])

희미하고 변화하는 요구 사항으로 인해 때로는 모든 소프트웨어가 완성되는 것이 놀랍습니다.

나는 그것이 그것보다 조금 더 복잡하다는 것을 알고있다.)


11
그리고 그들이 더 저렴한 해외 대안으로 개발을 시도 할 때입니다. 나중에 훨씬 더 비싼 것으로 밝혀졌습니다. 그리고 개발 팀과 고객 간의 물리적 분리 및 통신 문제로 인해 실제로 필요한 것 중 적은 양입니다.
7wp

1
이것은 관리자들 사이의 문제 일뿐만 아니라 프로그래머들에게도 문제가됩니다. 실제 문제는 코드를 작성하는 데 소비하지 않는 시간이 종종 누락되는 경향이 있습니다 (LOC = 생산성 정량화 신화로 인해 아마도).
Alan Plum

3
요구 사항이 변경된 것이 아니라 원하는 것으로 생각한 것이 아닙니다.
JeffO

1
나는 누군가가 "단지 'if'문장"으로 프로그래밍을 기각했다. 아마 그럴 수도 있습니다.이 경우에,시는 "단순한 단어들"입니다. 영화 제작은 "단순한 장면들"입니다.
JoelFan

2
나는 프로그래밍 비트가 일의 쉬운 부분이라고 생각한 관리자 유형을 위해 일했습니다. 그리고 아니, 그는 프로그래밍 경험이 없었습니다.
Captain Sensible

114

앱의 복잡성은 UI의 복잡성과 직접 비례합니다. 이러한 추론을 통해 주말에 Google 또는 Twitter를 구축 할 수 있습니다.


2
사실, 주말에 트위터와 구글을 만들 수있었습니다. 복잡한 소프트웨어는 아닙니다. Google의 경우 검색 알고리즘 (코드 라이브러리 또는 데이터베이스 드라이버와 비교 가능)이며 트위터 (최근 1.5 년까지)는 확장 성과 데이터베이스 문제만으로 매우 간단했습니다. 이제는 직원이 더 필요한 복잡해 졌으므로 훨씬 더 복잡한 UI와 더 많은 UI가 있습니다.
orokusaki

3
필자는 Joel Spolsky의 블로그에서 읽은 것으로 생각하지만 백엔드 진행과 관련하여 GUI 진행률 만 표시한다고 언급했습니다. 그렇게하면 대부분의 프로그램이 아이 캔디보다 훨씬 더 많은 것을 이해하기에는 너무 멍청한 뾰족한 머리를 가진 남자에게 현실적인 진행 상황을 추정 할 수 있습니다.
Evan Plaice

3
1+ 이전 상사에게 SharePoint 관련 프로젝트 (다국어 추가 기능)를 시연하면서 복잡한 백엔드 코드 작업에 몇 시간을 소비 한 적이있었습니다. 최종 결과는 UI에서별로 이루어지지 않았기 때문에 상사는 프로젝트에서 많이 수행되지 않았다고 믿었습니다. 그것은 나를 화나게했다. 그는 텍스트 대체 논리뿐만 아니라 SharePoint의 이상한 문제를 해결하려고 몇 시간 동안 키보드에 앉아 있지 않았습니다.
Jason Evans

1
거대하고 거의 불가능한 요청이 "할 버튼을 추가 할 수 있습니까?"라는
문구가 나오는 것을 싫어

지난 몇 년 동안 내가 한 일이 궁금합니다. 내가 풀 타임으로 일한 모든 프로젝트는 전혀 UI가 없었기 때문에 완료되지 않았습니다. :-)
Bart van Ingen Schenau

95

모든 프로그래머는 수학에 능숙합니다. :-)


해설자 : 의견은 설명을 확대하기위한 것이지 확장 된 토론을위한 것이 아닙니다. 해결책이 있다면 답을 남기십시오. 솔루션이 이미 게시 된 경우 투표하십시오. 이 질문에 대해 다른 사람들과 논의하고 싶다면 chat을 사용하십시오 . 자세한 내용 은 FAQ 를 참조하십시오.

수학의 능력은 프로그래밍 기술과 관련이 있다고 생각합니다.
Diego

@Diego : 그럼에도 불구하고 반드시 모든 프로그래머가 수학에 능숙하다는 의미는 아닙니다.
오메가

95

컴퓨터를 해킹하는 십대 자녀는 베테랑 일하는 프로그래머와 동등합니다.

14 살짜리 조카는 컴퓨터에 능숙하며 잔디를 깎는 데 시간당 10 달러를 지불하고 있습니다. 다음 페이스 북을 작성하려면 왜 6 자리 숫자를 지불해야합니까?


5
그들은 아마도 그들 자신의 환경에있는 것, 즉 그들 자신의 표준에 따라 일하는 것입니다. 의사 소통을해야하는 팀에 배치하십시오.
아돌프 마늘

36
반대의 질문은 "집을 짓기 위해 무엇을 지불하겠습니까?"입니다.

7
자격이 없지만 깔끔한 코드를 작성하는 어린이는 언제든지 스파게티 씨를 이길 수 있습니다.
Zaz

13
나는 할리우드를 비난합니다
MAK

6
처음 시작할 때, 제가 스스로 가르치고 uni에서 습득 한 것은 시작일 뿐이며, 더 나은 프로그래머와 지식이 풍부한 개발자 인 경험이 많은 사람들과 함께 일할 것입니다. 그들에게서 많이. 경험이 저에게 다른 것을 가르쳐주었습니다. 절대적으로 중요하지만 기술과 열정이 없으면 경험은 시간 낭비입니다.
Peter Boughton

69

실시간 은 빠른 것을 의미합니다.

알리는 "패킷들이 실시간으로 처리 될 필요가있다." 무가치하고 사악한 쌍둥이는 ... "X는 얼마나 빨리 일어나야합니까?" "실시간" 쓸모없는 것보다 가능성이 적습니다 ... 바보가 아니라 무지에 경계.

실시간 은 간단히 말해서 함수 Y는 항상 X 시간이 걸리고 편차가 심각한 오류를 나타냅니다. X의 지속 시간은 "실시간"을 정의하지 않으며 6 마이크로 초 또는 6 일이 될 수 있습니다. 함수 Y가 X 시간이 걸리는 것을 결정할 수 있다는 것은 "실시간"을 정의합니다. 실시간 시스템은이 정의에 의해 결정적입니다.

그러니까 ..


실시간 = 가까운
brian chandley

4
나는 항상 실시간이 무슨 일이 일어나고 있는지를 의미한다고 생각했습니다.
burnt_hand

14
이것은 아마도 이름이 잘못 지정된 개념이 혼란에 기여하는 경우 중 하나 일 것입니다.
JohnFx

2
@JohnFx 잘 넣어. 개념에는 컨텍스트가 필요합니다.
Rusty

2
@Richard : 사실, iTunes는 무언가를하기 전에 항상 몇 분이 걸립니다. 아, 그게 무슨 뜻이 아니야?
구성자

69

버그가 많은 코드를 입력 한 다음 나중에 버그를 찾으려고 코드를 읽는 대신 많은 시간을 소비하지 않고 처음으로 간단히 작성하는 것이 어떻습니까?

:-) :-) :-) :-)


34
솔직히 좋은 질문입니다. 코드를 작성하기 가장 쉬운 시간은 처음 코드를 작성할 때입니다.
DJClayworth

10
앱 설정에 <add Key = "Bugs"Value = "true"/>
burnt_hand 설정이 있습니다.

1
@DJClayworth-항상 작동하지는 않습니다. 어떤 경우에는 문제가 너무 크거나 잘못 정의되어 있거나 너무 단단해서 처음에 "올바른"상태에 도달하는 것도 너무 기대할 수 없습니다. 이러한 경우, 처음부터 제대로하기 위해 끊임없이 디자인하고 재 설계하는 데 며칠 / 주 / 월을 소비하는 것보다 완전히 잘못되지 않은 "첫 컷"을 작성하는 것이 좋습니다.
Stephen C

이것은 평신도의 버전 일 수 있습니다. "왜 TDD를하지 않습니까?" 현실 세계 발전을 위해 너무 단순하다면 공정하게 말하면, 대담한 좋은 질문입니다.
Dan Ray

1
@Stephen C : 그렇습니다. 그러나 완벽하게 옳은 것이 아니라 대부분 옳은 것이 아니라 제대로 작동하도록 왼쪽과 오른쪽으로하는 것은 차이가 있습니다. 나는 이것이 당신이 한 말이 아니라는 것을 알고 있지만 여전히 말해야한다고 생각합니다.
n1ckp

65

대학에 가지 않았다면, 직업에 적합하지 않습니다


27
또한 학위를 가진 프로그래머가없는 프로그래머보다 낫고 그에 따라 지불해야합니다. 아마 시대주의와 성 차별주의도 마찬가지입니다. 이런 종류의 말도 안되는 것은 나를 화나게한다. 만약 당신이 좋은 코드를 작성하는 방법을 모른다면, 나는 당신이 어디로 갔는지와 당신이 무엇을했는지 신경 쓰지 않았다. 이것은 프로그래머 / 너드 문화 (기술 == 권한)가 기업 문화 (순위 == 권한)와 충돌하는 또 다른 경우 일 수 있습니다.
Alan Plum

1
그러나 대학에서 가르치는 사람들은 또한 팀을 구성 할 때 학생들이 어떻게 작동하는지 관찰함으로써 프로그래머와 프로젝트의 행동을 일반화 할 수 있다고 생각하는 것 같습니다. ACM의 커뮤니케이션은 매년 4-6 건의 기사에 적합합니다.
MIA

1
@ 빌리 대학 졸업장에서 잭을 의미하는 곳은 어떻습니까?하지만 대학 졸업장은 모든 것을 부여합니까? 둘 다 학교에 다니는데 둘 다 다른 것보다 낫지 만 사회 학적 차이가 있습니다
Tarka

4
@ 빌리 : 캐나다에서는 대학에서 학위를 수여하고 대학에서 학위를 수여합니다. 대학은 "실용적인 것을 배우는 학교"와 비슷합니다. 미국의 커뮤니티 칼리지와 일반 대학 / 대학을 비교해보십시오. 여기에는 일반적으로 2 년의 전문화 된 응용 프로그램이 있습니다. 대학에서 학사 (석사 등)를 취득 할 수 없습니다. 기본적으로, 대학에 가서 소프트웨어 작성 방법을 공부하고 컴퓨터 과학을 공부하기 위해 대학에갑니다. 대학 학위는 채용에서 훨씬 더 선호됩니다.
Adam Lear

4
대학은 최소한 하나의 중요한 것, 사고 방식을 가르칩니다 . 이것은 매우 중요하지만, 그 사실을 모르는 사람들은 ... 잘 모르겠습니다.

61

조기 최적화는 전혀 최적화하지 않아야 함을 의미합니다. 나는 다른 데이터베이스 디자인 문제보다 조기에 최적화 된 디자인에서 성능 (데이터베이스 시스템에 중요한)을 고려하고 싶지 않았기 때문에 더 나쁜 데이터베이스를 보았습니다. 쓰레기, 알려진 성능 킬러가 있습니다, 당신의 첫 번째 선택으로 그 사용을 중지하십시오.

또 다른 신화는 데이터베이스를 리팩토링하기가 너무 어렵다. 그러나 디자인 단계에서 리팩토링을 효과적으로 수행하는 방법을 고려해야합니다. 그리고 BTW는 성가신 디자인 기반 성능 문제를 해결하기 위해 더 오래 기다릴수록 해결하기가 더 어려워집니다.

또 다른 나쁜 신화 인 데이터베이스 디자인은 OOP 원칙을 반영해야합니다. 아니요, 데이터베이스는 OOP 원칙이 아닌 세트와 함께 작동하도록 설계되었습니다. 일부 OOP 항목은 끔찍한 성능 문제를 유발하고 다른 항목은 데이터베이스 용어로는 어리 석습니다.

마지막으로 응용 프로그램에서 데이터 무결성을 강화해야합니다. 데이터베이스는 응용 프로그램을 마지막으로 통과하고 응용 프로그램을 교체하고 여러 응용 프로그램이 데이터베이스에 액세스하려고 할 때 규칙을 잃게되며 응용 프로그램을 거치지 않는 것들을 수정하기 위해 직접 쿼리를 실행해야하는 경우가 종종 있습니다. 좋은 데이터가있는 datbase에서 데이터 무결성을 거부하는 데이터베이스를 본 적이 없습니다.


특히 데이터베이스 무결성 검사 관련 의견에 +1하십시오.
Frank Shearar

+1 마지막 단락에서 특히 그렇습니다. 나는 그 드럼을 두 번 이상 때렸다.
이진 걱정

5
첫 번째 단락에 +1 조기 최적화는 모든 악의 근원입니다. 피의 이유없이 나쁜 코드를 작성하는 것은 훨씬 더 나쁘다.
구성자

3
"일부 OOP로 인해 끔찍한 성능 문제가 발생하고 일부는 데이터베이스 측면에서 어리석은 일입니다." 나는 OOP에 대해 알고 있지만 데이터베이스에 대해서는별로 알지 못하며 아이디어를 양측에서 다른쪽으로 얼마나 멀리 전달할 수 있는지에 관심이 있습니다.
Tom Anderson

@HLGEM 나는 또한 @Tom이 궁금해하는 예제에 관심을 가질 것이다.
Armand

53

절대적인 모범 사례의 신화적인 출처가 있다는 것.

어떤 편차도 정당화 될 수 없습니다.

모범 사례로 무언가를 정의한다고 주장하는 문서는 의문의 여지가 없습니다.


1
관리자보다 팀원이 더 나은 ...
Bill

5
그 문서를 나에게 전달할 수 있습니까?
AShelly

1
전적으로 동의합니다. 파이썬 코드에서 탭과 공백을 혼합하면 누가 신경 쓰나요?
Zaz

4
@Josh-탭 위치의 위치가 다른 툴 체인을 사용하여 소스 코드를보아야하는 사람.
Stephen C

1
나는 "우수 사례"를 "나는 이것을 정당화 할 수 없다"고 해석한다 나는 그것을 스스로 그렇게 사용합니다.
Tom Anderson

51

마케팅에서 많은 작은 기능을 추가하는 것이 단일 기능이 아닌 무거운 기능을 추가하는 것보다 작업이 적다고 생각하는 것 같습니다. 아마도 "작업 전환에는 오버 헤드가 없다"는 오해의 더 구체적인 사례 일 것입니다.


12
그리고 더 재미있는 기능은 어떤 기능이 쉽고 어떤 기능이 불가능한지 전혀 모르는 것입니다.
derobert

4
@derobert 정확히, 나는 종종 더 사려 깊은 마케팅 담당자 중 일부가 실제로 구현하기가 어렵다고 생각한 간단하고 쉬운 기능에 대해 묻는 것을 두려워하는 경험을했습니다. 그 반대의 경우가 훨씬 더 자주 발생하지만 다음과 같이 고객에게 이미 판매 한 X "쉬운"기능은 다음과 같습니다.
Giel

50

해당 주석 코드는 필요하지 않거나 "좋은 코드에는 주석이 필요하지 않습니다". 때로는 복잡한 코드가 무엇인지 설명해야합니다. 또한 코드 섹션에 주석을 달면 훨씬 더 효과적으로 읽을 수 있습니다.


14
@DisgruntledGoad-사실입니다. 이 "신화"에 대한 오해는 너무 많은 프로그래머가 모 놀리 식 혼동 코드를 "좋은"것으로 간주한다는 사실에서 비롯됩니다. if user.is_logged_in: print('Welcome')의견이 필요하지 않습니다.
orokusaki

3
@orokusaki 모든 알고리즘이 그렇게 간단한 것은 아닙니다.
Jouke van der Maas

25
@orokusaki 당신은 "간단한 코드에는 주석이 필요하지 않습니다"라는 "좋은 코드에는 주석이 필요하지 않습니다"라고 착각하고 있습니다. 좋은 코드가 항상 간단한 것은 아닙니다.
DisgruntledGoat

3
@Jouke van der Mass : 물론입니다. 그러나 알고리즘이 얼마나 복잡한지는 중요하지 않지만 목표는 알고리즘을 간단히 표현하는 것입니다. 즉, 좋은 코드는 복잡한 알고리즘, 규칙, 최적화를 간단하고 명확하게 이해할 수있는 방식으로 표현합니다. 간단한 것을 표현하는 것은 비교적 쉽습니다. 복잡한 것을 표현하는 것은 단순히 기술이있는 곳입니다.
flamingpenguin

2
@orokuskai : 좋은 코드는 간단합니다. 그것이하는 일은 복잡 할 수 있지만 코드의 단순성 (우아함)이 내 의견에 좋을 것입니다! 물론 코드는 다른 많은 작업을 수행하며 쓰레기 코드는 많은 돈을 벌 수 있습니다. 그러나 저의 목표는 복잡한 상황에서도 간단한 코드를 작성하는 것입니다.
flamingpenguin

50

최악의 오해 : 오랫동안 프로그래밍하는 경우 프로젝트 관리자가 될 수 있습니다.

그리고 오랫동안 프로그래밍을하고 있다면 프로젝트 관리자가되어야합니다.


3
또는 프로그래밍 프로젝트를 프로그래밍하거나 관리 한 적이 없다면 몇 권의 책을 읽고 마술처럼 소프트웨어를 만들 수 있습니다. 이전 PM으로 그 길을 갔고 내가 사는 한 반복하지 않아도됩니다.
Evan Plaice

4
더 나쁜 것은 : 팀의 모든 위대한 프로그래머가 보고서 작성보다 코드 작성을 선호하기 때문에 평범한 프로그래머를 프로젝트 관리자에게 홍보해야합니다. 생각은 그가 "기술적으로"충분할 것입니다. 사실 그는 팀과 상위 관리 사이의 정보 유출 필터가되었습니다.
AShelly

2
또한 : 최고의 프로그래머라면 분명히 프로젝트 관리자가되어야하며 그 시점부터 실제 프로그래밍을 스스로 중단하십시오! 아뇨, 정말 고마워요하지만 여전히 인상 할게요 참고 : 저는 리드 프로그래머 가되는 것에 대해 말하는 것이 아니라 , 모든 사람을 충분한 무능 수준으로 승격시키는 것이 영리한 아이디어라고 생각하는 관리자에 대해 이야기하고 있습니다.
Alan Plum

1
Peter Principle이라고도합니다. en.wikipedia.org/wiki/Peter_Principle
Spoike

잘 말했다
마이클 부활절

50

프로젝트에서 Java, C # 및 C ++ 이외의 것을 사용하는 경우이를 지원할 프로그래머가 없습니다.


나는 그것에 대해 들어 본 적이 없지만 유효합니다. 물론 모호한 언어를 사용하면 발생할 수 있습니다.
Maniero

5
@bigown, "불분명"? 모호한가? TCL이 모호합니까? 하스켈? 파스칼 (델파이)? 파이썬? 나는 그들이 모호하지 않다고 생각합니다. 많은 사람들이 자신이 있다고 생각하며 "심각한"개발에는 매우 좁은 언어 세트 (C ++, C # 및 Java) 만 허용됩니다.
P Shved

5
@bigown : 아, COBOL처럼 모호한가요? : p
AnonJr

2
한때 Linux에서 Objective-C 코드를 작성하는 소규모 회사에서 일했습니다. 엔지니어는 아니지만 기술 지식이있는 CEO는 주변에 ObjC 프로그래머가 있거나 다른 사람이 사용했다고 믿을 수 없었습니다. 사실 그들은 훌륭한 개발자를 고용하는 데 아무런 문제가 없었습니다.

4
나는 정반대가 맞다는 주장을 읽었습니다. 모호하거나 (적어도 상업적으로 중요하지는 않지만) 시원하고 재미 있고 흥미있는 언어 (그 맥락에서 파이썬과 루비를 의미)에는 직업보다 프로그래머가 더 많습니다. 게다가 그들은 모두 시원하고 재미 있고 흥미로운 언어를 사용하는 사람들이므로 똑똑해야합니다. 실제로 파이썬에서 일한다는 것은 자바에서 일하는 것보다 똑똑한 프로그래머를 고용하는 것이 더 쉽다는 것을 의미합니다. 내가 그것을 믿는지 모르겠지만, 그것은 정통 아이디어만큼이나 그럴듯합니다!
Tom Anderson

42

Java는 클래스가 다른 C ++입니다.


57
+1 한 인터뷰에서 "C ++과 Java의 차이점은 무엇입니까?" 그래서 몇 가지 차이점을 나열했습니다. 네이티브 컴파일러 대 JVM, ANSI 표준 대 독점, 가비지 수집, 클래스 로더 등 그는 "정말! 차이가 없습니다! 동일합니다!" 그는 학생이 아니었고 엔지니어링 관리자였습니다.
Bill Karwin

11
@Bill, 내 대답은 "그러면 왜 완전히 다른 이름으로 그들을 참조합니까?"
Jesse C. Slicer

2
@Bill, 시험에 실패하여 고용 되었습니까?

20
내 답변은 "안녕"입니다.
Foole

6
@Foole System.exit (1)을 의미합니까?
Barry Brown


33

아마도 내가 본 가장 위험한 것은 아마도 쉽게 받아 들여지기 때문에 코드를 빠르게 작성할 수 있다는 것이 좋기 때문에 주어진 언어로 코드를 빨리 삽입 할 수 있다는 것입니다. 입니다.

이는 코드를 작성하는 것보다 코드 를 유지 보수하는 작업이 훨씬 많기 때문에 조기 최적화의 심각한 예입니다 . 즉, 빠르게 작성하기 쉬운 코드보다 읽기, 이해 및 디버그하기 쉬운 코드를 작성하는 것이 훨씬 중요하며, 읽기 쉬운 코드를 용이하게하는 것이 언어 품질을 측정하는 데 훨씬 유용합니다.


14
이것은 내가 회사에서 일하는 제품 중 하나에서 일어난 일입니다. 급격한 개발은 훌륭한 것으로 여겨졌다. 제품은 괜찮 았고 개발자는 고위 경영진에게 높은 평가를 받았습니다. 또 다른 주니어 개발자는 "작은"버그를 수정하는 일을 맡았고, 일주일 동안 코드를 이해하려고 노력한 후 선배의지도를 포기하고 찾았습니다. 상층 경영진은 2 년 동안 주요 이슈로 받아 들여지지 않았다. 그 후 결국 쓰레기 더미에 합의하고 처음부터 다시 코딩해야한다고 동의했다
Sk93

4
기술 관리자에게는 숙련 된 개발자가 비 숙련 개발자보다 생산성이 10 배 높다는 신화가 있습니다. 이 신화의 직접적인 결과는 버그가 많거나 유지 관리가 어려울지라도 코드를 빠르게 생성 할 수있는 개발자라면 누구나 칭찬과 홍보를 얻는다는 것입니다.
rtperson

3
당신 은 강력한 언어가 필요 합니다. 언어에 대한 Paul Grahams 토론과 수행 할 수있는 작업을 참조하십시오. paulgraham.com/power.html

4
@ Thorbjørn : 나는 그 기사를 읽었으며 Paul Graham이 잘못했습니다. 그는 Lisp 옹호자이므로 Lisp를보기 좋게 만들기 위해 사실을 자기 서빙 주장으로 왜곡합니다. 실제로 많은 왜곡을하지 않기 때문에 고의적으로도 아닐 수도 있습니다. 기사의 끝 부분에서 지적한 것처럼 가독성과 간결함 사이에는 많은 중복이 있습니다. 그러나 그가 도출 한 결론은 실제 소프트웨어 개발 상태와 완전히 일치하지 않는다. 그렇습니다, 당신은 강력한 언어가 필요하지만, 그는 잘못된 기준에 의해 힘을 측정하고 있으며, 그가 말하는 것을 믿는 것은 해 롭습니다.
메이슨 휠러

3
@rtperson : 생산성은 10 배나 다를 수 있다는 것은 신화가 아닙니다. 빨리 끝내는 사람들은 반드시 더 생산적입니다.
David Thornley

31

제조 수업은 소프트웨어 개발 프로세스에 적용될 수 있습니다.


6
수업에 따라 다릅니다. 매트리스 공장에서 일할 때 작업 전환이 생산에 해롭다는 것을 알게되었습니다. 우리가 시간당이 아닌 매트리스의 수에 의해 지불 된 이후로 중요한 것은 ... 여기에도 같은 이유로 여기에 적용되는 교훈입니다.
AnonJr

이것은 주로 하드웨어를 만드는 곳에서 일할 때의 지속적인 신화입니다. 우리가 소프트웨어 '빌드'를 하드웨어 '부품'과 동일한 모델에 맞추기 위해 뛰어든 후프는 놀랍습니다.
AShelly

5
소프트웨어 제조는 사소한 일입니다. 쉽게 복사 할 수 있으며 수백만 부를 만드는 데 많은 비용이 들지 않습니다. 이로 인해 사람들은 제조 부품을 완전히 무시하고 제조 공정을 제조 공정에 적용하려고합니다.
David Thornley

이를 위해 +100, 특히 경제학을 공부 한 사람들은 이것을 생각합니다
Kugel

1
모두가 잭 리브스을 읽어야 할 사람 : developerdotstar.com/mag/articles/reeves_design_main.html를 -이 소스 코드는이라는 생각의 기원 (또는 적어도 초기 강력한 문)는 디자인 이 아닌 제품 . 프로그래머는 공장 현장의 기계 기술자가 아닌 제도실의 디자이너와 비슷하며 프로그래밍 관리는 제조가 아닌 다른 종류의 엔지니어링 설계 관리와 같아야합니다.
Tom Anderson

31

프로그래머로서 여러분은 최신 하드웨어 트렌드, 오버 클로킹, 케이스 모드 등에 관한 모든 것을 알고 있습니다. 친구와 친척은 기어를 구입할 때 상담합니다.


5
나는 고등학교에서 이러한 것들 중 일부를 다시 사용했지만 요즘에는 일반적으로 내가하는 일과 관련이 없으며 일부는 깔끔한 반면, 자신의 물건을 아는 사람에게 돈을 지불하고 시간을 사용합니다. 내가 좋아하는 것을 저장하십시오 (예 : 코드 작성). 어쩌면 다른 "컴퓨터에 좋은"오해일지도 모릅니다.
Alan Plum

2
+1 또는 약간 떨어져있는 접선-프로그래머이기 때문에 케이스가 릴리스되기 전에 제조 공장에서 새로 출시 된 브랜드의 최고 듀퍼 수냉식 300 LED 팬 회전 깜박임이 있습니다. 정말 아니에요! 상당히 빠른 기계이며 검은 매우 저렴한 케이스입니다. 그 이상으로 신경 쓰지 마십시오!
외과 코더

웃음, 집에 신의 전능 한 게임 장비를 가지고있는 PM 어시스턴트가 있는데, 항상 관련 영역에서 (제품 A) 또는 (제품 B)를 사야하는지 묻기 위해 개발자 영역으로 롤오버합니다. 또한 개발팀을 가정 모두 (그가 실제로 않는다.), 4Chan에 놀러 - 한숨
ocodo

+1 단어. 이 자리에 있습니다. 저는 소프트웨어 개발자이며 다른 사람의 인터넷을 여러 번 구성하라는 요청을 받았으며 기본적으로 시험 및 오류와 Google 검색 만 수행하면됩니다. 나는 당신이 누군가에게 호의를 베풀고 나서 당신의 잘못이 된 후 완전히 무관 한 것이 깨지는 것이 가장 좋습니다.
Anne Schuessler

30

프로그래머가 수행하기가 매우 어렵다고 말하면 HR은 그들이 게으르고 동기가 없다고 생각합니다.


2
관리도 포함
Prasham

당신이 '아니오'라고 말하면 그들은 당신이 단순히 일하기 어려운 사람이라고 생각합니다.
Captain Sensible

+100, 그리고 "동기 부여"가 충분하면 답변을 변경할 수 있습니다. 또는 다른 경험이 적은 개발자에게 가서 의도적으로 세부 사항의 절반을 남겨서 예라고 말하십시오.
wildpeaks

28

내 비즈니스를위한 오픈 소스 프로그램이 있어야합니다. 그냥 다운로드하여 내 요구 사항을 조정할 수는 없습니다.


2
+1. 예, 우리가해야 할 일은 이미 오픈 소스에 있어야합니다.
sharptooth

7
웹 개발에 있어서는 적어도 사실입니다.
WalterJ89

@ WalterJ89 : 거기에있을 수는 있지만 그것을 사용하는 것이 좋습니다. 오픈 소스가 자동으로 좋은 코드를 의미하는 것은 아닙니다.
Alan Plum

사실 .. 그러나 Wordpress, Drupal, jQuery의 경우, 전자 상거래와 같이 자유롭지 않은 영역이있을 수 있지만 웹이 열리지 않은 영역보다 더 빈번한 영역이있을 수 있습니다. 개인 헬프 데스크 이상의 오픈 소스 커뮤니티.
WalterJ89

7
그 반대도 신화입니다. 비즈니스 요구를 충족시키기 위해 FOSS를 사용할 수 없습니다.
terminus

27

한 사람 이상이 실제로 대화를 통해 중도를 실현하기 위해 프로그래밍하는 것이 어떤지 물어 보았습니다. 실제로 대화를 통해 바이너리 또는 수학 기호를 사용하여 직접 프로그래밍한다고 생각합니다.

나는 그 신화를 풀고 싶은지 모르겠다.


6
그것은 대부분의 사람들이 프로그래밍이 실제로 무엇인지조차 모르는 데 도움이되지 않습니다 ... 소프트웨어를 만들고 있다는 모호한 아이디어를 가지고 있지만 소프트웨어가 무엇인지 분명하게 알지
못합니다

7
"우리는 뜨개질 요리법을 쓴다". 할머니는 그것을 이해하는 경향이 있습니다.

C로 프로그램을 작성한 다음 Assembly에서 가장 성능이 중요한 부분을 다시 실행하는 사람들을 알고 있습니다.
Zaz

1
@ 조쉬-성능 문제가 없다면 시간 낭비처럼 보입니다.
JohnFx

1
@oosterwal-어셈블리는 바이너리가 아니며 수학 기호도 사용하지 않습니다.
JohnFx

26

가장 큰 오해는 코드를 읽고 이해하는 것보다 쉽게 ​​코드를 작성하는 것이 더 중요하다는 것입니다.


5
* v (int) (void) ++
Rusty

1
@ Russty : 구문 적으로 정확하지 않아도 훨씬 더 나쁜 예를 생각해 낼 수 있습니다 .

4
Ahh, yes, "Write only"코드 ...
Paddyslacker

24

프로그래밍은 조립 라인 작업과 같습니다. 특정 시간 동안 (동료와 함께) 제품을 작업하고 있으며 최종적으로 배송합니다. 벽돌집을 짓는 것과 같습니다.

대조 : 프로그래밍에는 많은 창의성과 계획이 포함됩니다. 예술입니다. 메이슨과 마찬가지로 프로그래머도 벽돌을 만들고 전체 성당을 계획하는 것의 차이점을 알고 있습니다.


6
조립 라인 작업과의 차이점에 대해 동의하지만 여러면에서 집을 짓는 것과 크게 다르지 않다고 생각합니다.
Billy ONeal

24

프로그램을 C ++로 이식하면 자동으로 더 빠르게 실행됩니다.


다른 저급 언어로 확장 할 것입니다. 프로그래머가 무엇을하고 있는지 알지 못하면 반대가 될 수 있습니다.
Maniero

2
또 다른 일반적인 변형은 클라이언트-서버 아키텍처로 전환하는 것입니다. "SQL로 업그레이드하면 앱이 훨씬 빨라집니다!" 반드시 그런 것은 아닙니다.
JohnFx

예, 그것은 여러 번 반대입니다. SQL 종류의 데이터베이스는 ACID 또는 그와 거의 비슷하며 가격과 함께 제공됩니다. 최악의 경우 SQL 기술에 대한 잘못된 생각은 성능에 해로울 수 있습니다.
Maniero

6
Python / Perl / Ruby / etc로 작성된 것들을 위해 C ++ / C로 포팅. C / C ++ : P로 작성된 것들을 asm으로 포팅 당신이 무엇을 포트 할까 궁금 하신가요? 하드웨어에 그것을 디자인?
MAK


21

비주얼 디자이너가있는 프로그래밍 환경은 비즈니스 사용자가 프로그램을 "쓰기"할 수 있도록하며 실제 프로그래머는 필요하지 않습니다.


9
아. 넵. 어떤 회사가 프로그래머를 불필요하게하기 위해 새로운 저작 도구를 만든 다음,이를 채택한 모든 사람이 앞서 가서 실제로 그것을 사용하기 위해 고액의 <저작 도구> 전문가를 고용 할 때 항상 재미 있습니다. 적절한 예 : Joomla! 그 말도 안되는 말이야
Alan Plum

HA HA HA HA HA HA HAAA HA +1 :)
Billy ONeal

코볼은 이미 그것을 시도했다 :)
Carra

20

OOP 재사용. 프로그래밍 시장에서 가장 큰 오류입니다.


1
잘. HP XL WESM은 Symbol WS5100과 거의 85 % 동일합니다 (OEMming 진행 중). 버그가 두 배나 많도록 모니터링 및 구성 코드의 백분율을 복사하여 붙여 넣을 수 있습니까, 아니면 처음부터 다시 작성하여 40 배나 길고 5 배나 많은 것을 선호합니까? 아니면 어리석은 경영진에게 압력을 가해 프로젝트를 더 빨리 만드는 마법의 만병 통치약 중 하나라고 생각하십니까?

1
작은 곳에서의 재사용은 40 년 전에 해결되었습니다. 대규모 재사용은 어렵고 아직 해결되지 않은 IMHO. Robert Glass 가 소프트웨어 엔지니어링의 사실과 오류에서 언급 한
MarkJ
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.