내가 좋은 프로그래머인지 어떻게 알 수 있습니까?


301

대부분의 사람들과 마찬가지로, 나는 내 분야에서 평균보다 약간 높은 것으로 생각합니다. 나는 잘 지내고, 승진을 받았고, 좋은 레퍼런스를 얻거나 일자리를 얻는 데 실제로 문제가 없었습니다.

그러나 나는 함께 일한 최악의 프로그래머 중 다수가 그들이 최고라고 생각한다는 것을 알아 차리기 위해 주변에 있었다. 다른 나쁜 프로그래머들에 둘러싸여있는 나쁜 프로그래머들은 가장 자기 만족하는 것처럼 보입니다.

나는 완벽하지 않다. 나는 실수를한다. 마감일이 그립습니다. 그러나 나는 "다른 좋은 프로그래머"가하는 것과 같은 수의 뼈대 움직임을 만든다고 생각합니다. 문제는 "나를 좋아하는 사람들"을 의미하는 "다른 좋은 프로그래머"를 정의한다는 것입니다.

프로그래머가 합리적인 자기 평가를 할 수있는 방법이 있습니까? 우리가 직장에서 좋은지 나쁜지를 어떻게 알 수 있습니까?

같은 용어 경우 또는, 좋은나쁜이 너무 잘못 정의가 이전을 활용하고 후자를 개선하기 위해 작업 할 수 있도록, 어떻게 프로그래머는 정직하게 자신의 강점과 약점을 식별 할 수 있습니까?


왜 알고 싶어? 아무도 "좋은"것이 무엇인지 정의 할 수 없습니다. 예상대로 일을 끝내고 돈을 많이받는다면 충분합니다.
Mert Akcakaya

답변:


325

좋은 프로그래머는 계속 배우고 성장해야한다는 것을 이해합니다. 그들은 모든 노력에 최선을 다하고, 실패를 인정하고, 그들로부터 배우려고 노력합니다.

그들은 매우 의사 소통합니다. 그들은 평범한 사람에게 복잡한 기술 용어를 설명 할 수있을뿐만 아니라 자신의 아이디어에 대한 악마의 옹호자 역할을 수행하여 고객에게 최고의 옵션을 제공하고 있습니다.

최고의 프로그래머는 일을 할 수있는 방법이 두 개 이상이고 모든 문제가 해결법이 아니라는 점을 알고 있으며, 계획하는 방식보다 항상 무언가를 수행하는 더 좋은 방법이 있기 때문에 끊임없이 새로운 기술을 배우려고 노력합니다. , 기술 및 이해.

좋은 프로그래머는 프로그래밍을 좋아하고, 이미 일주일에 80 시간 이상을 프로그래밍하더라도 여가 시간에 그렇게 할 것입니다.

훌륭한 프로그래머는 자신이 훌륭한 프로그래머가 아니라는 것을 알고 있습니다. 정말 위대한 프로그래머는 존재하지 않으며, 위대한 사람이라고 주장하는 사람과 자신이 좋지 않은 사람 만 있습니다.


5
당신은 이것을 머리에 바로 붙입니다! 이모!

13
그리고 더 일반적인 결론은 당신이하는 일에 관심을 가질 때 당신이하는 일에 능숙하다는 것입니다.

7
잘했다. 자아 / 겸손과 관련하여 70 년대에 MIT AI 연구소를 방문했습니다. 최고의 코더들은 어느 정도 겸손한 확신을 가지고있었습니다. 당신이 중요한 일을하고 있다고 생각한다면, 당신은 틀렸을 수 있지만, 그렇지 않다면 아마 옳을 것입니다.
Mike Dunlavey

4
나는 파라 2 호에 부분적으로 동의한다. "그들은 평범한 사람에게 복잡한 기술 용어를 설명 할 수있을뿐 아니라 ..."나는 훌륭한 프로그래머를 알고있다. 그러나 그들은 자신의 서클 밖에서는 아무 것도 설명 할 수 없었습니다. 평신도의 말을 이해할 수도 없었습니다. 그들은 "헤드 라이트의 사슴"눈으로 서로를 본다. 나는 그들이 매우 의사 소통한다고 말할 것이다. 나머지 요점들에 대해서는 훌륭한 프로그래머가 겸손하다고 말하고 자신이 알고있는 최선의 방식으로 자신의 지식을 기꺼이 공유하겠다고 말함으로써 요약합니다.
IAbstract

101
"일주일에 프로그래밍에 80 시간 이상을 소비하더라도 여가 시간에 그렇게 할 것입니다." 이 바보 같은 진술을 제거하고 나머지에 완전히 동의합니다. 진정한 '좋은 프로그래머'는 80 시간 이상 일할 때 프로그래밍 이외의 다른 일을하는 것이 신체적, 정신적 건강과 직장에서의 생산성에 필수적이라는 것을 알고 있습니다.

91

포드 캐스트 에서 Paul Graham이 설득력있게 지적한 것처럼 할 수 없습니다. 동료 만 말할 수 있습니다.


4
이 답변은 허용 된 답변보다 훨씬 낫습니다.

125
동료가 유능한 지 여부를 동료가 알 수 없습니다. 그들은 당신이 이상한 의견을 가지고 있다고 생각하고 관계없는 주제에 대해 열정적으로 논쟁합니다.

2
동의합니다. 그런 다음 아무도 당신에게 말할 수 없으며 새로운 동료를 얻지 않으면 절대 알 수 없습니다. 유능한 사람과 함께 일하는 것이 장기적으로 보람이 없다고 생각합니다.

1
@keysersoze, 그러나 내가 실제로 무능한 경우 내 동료는 유능 할 수 있고 그것을 깨닫기에는 너무 바보입니다.)

1
Paul Graham은 또한 위대한 프로그래머에 대한 에세이를 작성했습니다. 리처드 스톨만, 리누스 토발즈 등의 명백한 선택을 실제로 한 적이 없기 때문에 위대한 프로그래머의 이름을 잃어 가고 있다고 지적했습니다.
David Thornley

59

저는 항상 두 가지 일을 수행하여 실적을 판단하는 것이 가장 쉬운 것으로 나타났습니다.

  1. 다른 좋은 프로그래머와 함께하십시오
  2. 그들이 작성한 코드에 대해 얼마나 많은 불평을하는지보십시오.

물론 문제는 좋은 프로그래머를 찾는 것입니다. 그리고 좋은 프로그래머가되는 것도 코딩에 관한 것이 아닙니다. 그룹 내에서 잘 일할 수 있어야하지만 혼자서도 잘 일해야합니다.

이제 주제를 벗어나기 위해 Robert A. Heinlein과 주제에 대한 그의 견해를 인용하겠습니다.

"[발 차기 프로그래머]는 기저귀를 바꾸고, 침략을 계획하고, 돼지를 정육점으로 돌리고, 배를 설계하고, 건물을 설계하고, 소네트를 쓰고, 계좌를 만들고, 벽을 세우고, 뼈를 만들고, 죽어가는 것을 위로 할 수 있어야한다 , 명령을 내리고, 주문하고, 협조하고, 혼자 행동하고, 방정식을 풀고, 새로운 문제를 분석하고, 비료를 던지고, 컴퓨터를 프로그래밍하고, 맛있는 식사를 요리하고, 효율적으로 싸우고, 맹렬하게 죽습니다.
-나사로 롱 노트에서


12
"저는 현명한 사람들이 똑똑한 사람들로 자신을 둘러싸고 있습니다. 똑똑한 사람들은 자신이 동의하지 않는 똑똑한 사람들로 자신을 둘러싸고 있습니다."
Sam Hasler

나는 이것이 Heinlein의 가장 좋은 인용이라고 말합니다.

1
문제는 다른 프로그래머가 당신의 레벨에 있거나 그렇지 않을 수도 있지만, 당신을 모욕하고 싶지 않을 수도 있다는 것입니다. 나는 함께 일한 3 명의 프로그래머로부터 피드백을 많이받지 못했고 다른 2 명으로부터 최소한으로 "최소"라고 생각하는 사람들로부터 피드백을받지 못했다 ...

4
... 우리가 반 사회적으로 협박을 받았지만 다른 프로그래머는 코드 문제에 대한 피드백을 제공하지 않으면 서 코드 방어를 선점 할 수 있습니다. 사회적 문제를 일으키지 않기 위해 실제로 코드 실제 ​​문제를 간과 할 수 있습니다.

55

이것은 당신을위한 프로그래머 역량 매트릭스입니다 : http://www.indiangeek.net/wp-content/uploads/Programmer%20competency%20matrix.htm


나는 그 아이템의 90 %와 같은 3-4이고 똥을 코딩 할 수 없습니다. 적어도 너무 빠르지는 않습니다.

쇼핑 목록의 경우 -1입니다.

6
알고리즘에 대한 지식은 훌륭하지만 누군가가 당신을 인터뷰 할 때 모든 것이 머릿속에 저장 될 방법은 없습니다. 이것이 바로 위키피디아, 구글, 스택 오버 플로우입니다.

1
그 목록이 대부분 쓸모 없다는 데 동의합니다. 당신이 운동을 찾고 있다면 그것은 좋은 아이디어의 원천이지만, 당신이 "좋은 프로그래머"라는 결정을 내리는 한별로 유용하지 않습니다. "좋은 프로그래머"는 임의의 목록보다 더 많은 태도입니다.

2
+1. 위에서 언급 한 내용에 동의하지 않지만 여전히 이것이 좋은 목록이라고 생각합니다. 게시 해 주셔서 감사합니다. 이것들은 분명히 직업을 신청하는 프로그래머를 평가할 일종의 기준입니다. 그리고 @macnnicken은 레벨 3으로 만 넘어갑니다. :)
EMP

38

Jeff는이 주제에 대해 내가 가장 좋아하는 블로그 게시물 중 하나를 가지고 있습니다. 왜 내가 세계 최고의 프로그래머입니까?

"... 우리의 직업은 다른 누구보다 나은 것이 아닙니다. 우리는 1 년 전보다 더 나아 져야합니다."


3
나는 그 인용문을 매우 좋아한다. 그리고 프로그래밍에 관한 것입니다. "당신이하는 일을 더 잘하고 매일 매일 아십시오."

1
지난 12 년 동안 매년, 나는 1 년 전에 작성한 코드를 되돌아 보았고 그것이 완전히 망할 것이라고 생각했습니다. 어쩌면 내가 옳은 일을하고있을 것입니다! 정체 된 프로그래머보다 더 나쁜 것은 없습니다.

28

나는 당신이 질문을하고 있다는 사실은 당신이 나쁜 프로그래머가 아니라는 것을 증명한다고 생각합니다. 그래서 제 생각에는 반쯤 있습니다. :)

나쁜 프로그래머는 항상 내 경험상 자신이 훌륭한 프로그래머라고 생각합니다.


당신은 얼마나 많은 경험을 가지고 있습니까?

1
내 경험은 당신의 경험에 동의합니다. 그래서 내가 좋다고 생각하기 시작할 때마다 걱정됩니다.
Kristopher Johnson

21

@ 닉의 문 "나쁜 프로그래머는 항상 훌륭한 프로그래머 생각 ..."에 의해 설명 독촉 크루거 효과 추정을 통해 종종 주제에 대해 조금 아는 사람들이 실제로 얼마나 알고 있는지 것이 일반화된다.

조금 뻔뻔 스럽지만 .. 당신이 더 많이 알고 있다고 생각할수록, 아마도 당신은 정말로 자각하는 바보가 아니라면 말입니다.

원래 질문에 대답하지만, 일반적으로 당신이 가진 영향력이 클수록 (제어가 아닌) 좋은 지표라고 생각하는 경향이 있습니다. 다른 사람이 당신의 리드를 따르거나 관행을 고르는 것을 보게되면 올바른 길을 가고있는 것입니다.


독촉-크루거 효과는 정말 겸손합니다. 나는 내가 한 일에 대해 기분이 좋을 때마다 명심하려고 노력하고 있습니다!

훌륭한 프로그래머는 질문을하지 않고 싫어하는 답변에 투표합니다. 그들은 새로운 주제의 모든 것을 아는 것처럼 행동하지 않으며 전문가가 질문에 대답 할 때 그들이 원하는 것이 아니기 때문에 투표하지 않습니다.

나는 스펙트럼의 한쪽 끝의 훌륭한 예 였을 때 대학에서 DK에 대한 단서가 있었으면 좋겠다.
DarenW

18

가장 많은 표를 얻은 답변은 정말 고민입니다. 기본적으로 프로그래밍 이외의 삶은 없다고 말합니다. 가족은 어떻습니까? 커뮤니티? 취미? 당신이 단지 "좋은"것으로 간주되기 위해 강박 관념에 사로 잡혀 있어야하는 어떤 직업이 있습니까? 우리는 여기에 약간의 관점이 필요하다고 생각합니다.


2
동의한다. 우리는 위대한 프로그래머가되기 전에 위대한 사람이되기 위해 노력해야합니다.

좋은 장소는 용어 (501) 프로그래머를 참조하십시오 : hanselman.com/blog/...
ChrisFletcher


9

난 완벽하지 않아. 나는 실수를한다. 마감일이 그립습니다. 그러나 나는 "다른 좋은 프로그래머"가하는 것과 같은 수의 뼈대 움직임을 만든다고 생각합니다.

그 실현만으로도 대부분의 나쁜 프로그래머보다 더 나은 프로그래머가됩니다.

최악의 프로그래머 중 다수는 이미 알아야 할 모든 것을 알고 있고 자신의 한계를 인식하지 못한다고 생각하는 경향이 있습니다. 결과적으로, 그들은 기술을 향상시키지 않습니다.


9

1 년 전에 말한 코드를보고 Jeez, 내가 훨씬 더 잘했을 수 있다고 생각한다면 아마도 좋을 것입니다 :).


방금 나의 hello world 프로그램을 보았는데 이제 훨씬 더 효율적이라고 생각합니다. jks jks

9

다음은 나쁜 프로그래밍의 실제 예입니다. 물론 100여 곳에서 비슷한 코드가 복사 / 붙여 넣기되었습니다. 가이가 해고 당했지만 다시 좋은 직장을 얻었다 고 들었습니다. 즐겨:

에이)

if (! TableObject.loadList("sql condition").isEmpty()) {  
    List<TableObject> myList = TableObject.loadList("sql condition");  
    ...  
}

비)

public static Type getInstance() {  
    if (instance == null) {  
        return new Type();  
    }  
    return instance;  
}

씨)

getForeignKeyObjectProperty1() {  
    return ForeignKeyObject.loadByPrimaryKey(foreignId).getProperty1();  
}  

getForeignKeyObjectProperty2() {  
    return ForeignKeyObject.loadByPrimaryKey(foreignId).getProperty2();  
}  

...

getForeignKeyObjectPropertyN() {
    return ForeignKeyObject.loadByPrimaryKey(foreignId).getPropertyN();
}

디)

public boolean isHasImage() throws SQLException {
    StringBuilder query = new StringBuilder();
    query.append("select user_name");
    query.append(" from user");
    query.append(" where has_image = 1");
    query.append(" and user_name ='"+getUserName()+"' and user_image is not null");
    Connection c = Database.getInstance().getConnection();
    Statement st = c.createStatement();

    try {
        ResultSet rs = st.executeQuery(query.toString());
        if (rs.hasNext()) {
            return true;
        } else {
            return false;
        }
    } finally {
        st.close();
    }
}

이런 종류의 코드를 만들면 프로그래밍을 중지하십시오. 이 코드에 이상한 것이 없으면 프로그래밍을 중지하십시오. 그렇지 않으면 나쁘지 않아서 좋을 수도 있습니다 :)

편집 : 의견에 대답하기 : 졸업하기 전에 직업을 얻었고이 사람은 이미 몇 년 동안 프로그래밍 경험을 가지고있었습니다. 그는 내가 고용 된 지 몇 달 만에 해고되었으므로 다른 사람을지도 할 수있는 위치에 있지 않았습니다. 위 예제는 머릿속에서 나온 것입니다. 그가 만지는 모든 코드의 평화는 다양하고 상상력있는 방식으로 결함이있었습니다. 그가 회사를 떠난 후 대부분의 물건이 나오기 시작했습니다. 다른 사람들만이 코드의 일부를 보았 기 때문입니다. 그는 일반적으로 좋은 사람이고, 대화하기에 유쾌합니다. 그러나 나는 결코 훌륭한 화가나 작가가 될 수없는 것처럼 훌륭한 프로그래머가 될 수 없습니다.

이것을 다른 예와 대조하기 위해 그를 대체하기 위해 온 사람도 당시 등급이 낮았습니다. 그는 경영학보다 프로그래밍으로 유명한 대학을 공부했습니다. 그는 재미를 위해 무언가를 프로그래밍하거나 집에 앉아서 Java 또는 프로그래밍에 대해 읽을 것이라는 점에서 너무 괴짜가 아닙니다. 그러나 그는 잘하고 있습니다. 그는 신속하게 조정하여 유용하고 유지 보수가 쉬운 코드를 생산하기 시작했습니다. 어떤 사람들은 그렇게 할 수 있고 다른 사람들은 그렇게 할 수 없습니다-dailywtf에게 물어보십시오.


11
누구나 임의의 코드를 게시하고 이해하지 못하는 사람들은 바보라고 주장 할 수 있습니다. 나는 멍청한 줄에 서있을 것이다.

20
좋은 프로그래머는 동료에게이 같은 코드의 문제점을 설명하는 데 시간이 걸렸을 것입니다 (2 분?).

4
좋은 프로그래머는이 코드가 왜 '나쁜'지 지적하고 그의 동료가 그를 조롱하는 대신 더 나아지게하는 데 도움이되었을 것이라고 동의했습니다.

7
나는 동료가 그를 속이지 않고 성장하도록 도와주는 직업을 찾았기를 바랍니다.
Robert S.

8
@Morph : instance필드는 할당되지 않습니다 Type인스턴스를 그래서 항상 유지 null=)
missingfaktor

8

쌓아 올리는 방법을 더 잘 파악하기 위해 시도 할 수있는 몇 가지가 있습니다.

  • 코드 리뷰를 비교하십시오. 누구의 리뷰가 더 많은 문제를 드러 냈는지 확인하십시오.
  • 그들이 정상적인 학습 과정의 말초였던 책을 마지막으로 읽은 시간은 언제 였는지 묻는다. 그런 다음 자신에게 같은 것을 물어보십시오.
  • 회사에 새로운 아이디어를 제공하는 사람과 자신이 얼마나 잘 작동하는지 자문 해보십시오.
  • 마지막으로, 어떤 형태의 회사 인정이 있습니까?

(나는 그가 코드를 개발했다. 그가 떠난 후, 우리는 적어도 20 TDWTF 가치있는 코드 조각을 발견했다. 3 년 동안 두 번 마지막 마지막 회사의 한 프로그래머는 "올해의 개발자"를 받았기 때문에 것을 넣어 빨리 , 그러나 반드시 잘 경영진은 그 차이를 몰랐습니다.)


1
"코드 리뷰 비교"+1 그것은 참신하고 실용적인 일처럼 보입니다.
j_random_hacker

6

당신이 존경하는 다른 개발자들이 코드를 다루거나 볼 수 있도록 허용하십시오.

사람들이 실제로 당신이 좋아하는 것을 사용하고 그들이 생각하는 것을 보게하십시오.

-케빈 페어차일드


6

이거 이해해?

if(rp->p_flag&SSWAP) {
	rp->p_flag =& ~SSWAP;
	aretu(u.u_ssav);
}

:-)


다운!?! ??!?! 누군가는 그들의 역사를 모른다. :-)
Iain Holder

5
당신은 이것을 이해할 것으로 예상되지 않습니다

이것이 무언가에 대한 언급입니까? 어쨌든 C / C ++ 코드 인 경우 아마도 두 번째 줄에서 "= &"대신 "& ="를 의미했을 것입니다. (C ++에서 operator ~ ()를 오버로드하여 위의 컴파일을 할 수 있기 때문에 "아마도"라고 말합니다. 그러나 이것이 여러분이 의도 한 것이 아니라고 확신합니다.)
j_random_hacker

1
@j_random_hacker이 코드가 Dennis Ritchie가 작성한 것처럼 = &가 올바른 것 같습니다. 참조 cm.bell-labs.com/who/dmr/odd.html
이안 홀더

1
@IainMH, dmr도 버그가 있음을 인정합니다.

4

자기 평가가 필요하다고 생각하는 것만으로도 나머지를 능가 할 수 있습니다.

항상 자신을 판단하는 한 가지 방법은 동료가 나에 대해하는 말을 듣는 것입니다. 트릭은 올바른 사람들을 찾는 중입니다.


4

좋은 프로그래머는 항상 주관적입니다. 나는 질문을하는 것이 올바른 방향으로 나아가는 것임을 Nick에게 동의합니다. 더 많은 것을 배우고 개선하려는 끊임없는 욕구는 훌륭한 프로그래머를 만드는 것입니다.


4

저에게 최고의 프로그래머는 결코 일자리를 찾지 않습니다. 그들은 그들의 명성에 근거하여 새로운 직책을 제안합니다. 따라서 좋은 프로그래머는 원하는 경우 이전 고용주로부터 귀환 제안을 할 수 있습니다. 또는 좋은 프로그래머가 전직 동료들로부터 새로운 회사에서 일하기 위해 질문을 받았을 것입니다.

강점 / 약점 측면에서 이미 알고있을 것입니다. 그렇지 않은 경우 팀의 상급자에게 문의하십시오. 개발자 일 필요는 없습니다. 훌륭한 프로젝트 관리자는 프로그래머의 강점 / 약점을 알고 있습니다. 또한 훌륭한 프로그래머를 정의하는 특성은 코드에만 국한되지 않습니다. 비즈니스, 커뮤니케이션 기술, 판단 등의 이해는 모두 IDE 외부에서 수행됩니다.


2
당신은 훌륭한 프로그래머와 끔찍한 사람이 될 수 있습니다. 그다지 잘 모르지만 기꺼이 배우고 자하는 훌륭한 사람이나 모든면에서 환상적인 프로그래머 인 완전한 저크와 함께 일 하시겠습니까? 그래서 당신이 묘사하는 것은 좋은 프로그래머가 아닌 좋은 직원이됩니다. ;)

2
이 의견이 어디에서 왔는지 이해할 수 없습니다. 내가 다루고있는 두 가지 주요 질문은 '좋은 프로그래머인지 어떻게 알 수 있습니까?'입니다. 그리고 '내 장점 / 약점을 어떻게 알 수 있습니까?' 저크와 끔찍한 사람들에 대한이 모든 이야기는 무엇입니까? 나는 이것에 대한 의견을 가지고 있지만, 그들이 나의 반응과 관련이 있다고 생각하지 않습니다.

2
명성을 얻는 것은 종종 실제 능력보다 PR과 자신감의 문제입니다.
David Thornley

"능력"이 기술적 능력이라고 가정하면 좋은 프로그래머가되는 것은 "실제 능력"이상입니다. 기술 적성은 퍼즐의 일부일뿐입니다.

3

나는 이것이 당신이 좋은 사람인지 어떻게 알 수 있는지 궁금해하는 것과 같습니다.

불행히도 그 대답은 다른 믿을만한 사람들 만이 당신에게 말할 수 있다고 생각합니다. 나는 그것이 당신이 정확하게 스스로 결정할 수있는 것이라고 생각하지 않습니다 (적어도 매우 어렵지만 불가능하다고 생각합니다).


3

나는 단순히 말할 것입니다 : 당신이하는 일에 열정적이라면 (정말 열정적 인 경우), 당신이 유연하다면 (다른 언어, 새로운 기술, 오래된 프로젝트의 완전한 리메이크-하자!), 계속 배우면 그리고 당신의 기술을 향상시키고 결코 당신이 멈출만큼 충분히 좋다고 생각하지 마십시오 – 그러면 당신은 좋은 프로그래머입니다!


3

모든 프로그래머의 95 %는 자신이 상위 5 % 프로그래머 중 하나라고 생각하고 나머지 5 %는 관리자입니다. 당신이 관리자라면 아마 당신은 좋은 프로그래머가 아닐 것입니다.


... 그리고 25 % 그들이 상위 1 %에 있음을 안다.)

3

프로그래밍 기술을 사용하는 것이 더 중요하다고 생각합니다. 훌륭한 프로그래머가되는 것은 좋지만 하루 종일 은행 소프트웨어를 코딩하는 경우 문제가되지 않습니다. 그냥 합치 지 않습니다.

당신이 좋은 프로그래머라는 것을 스스로에게 증명하기 위해, 흥미로운 어려운 프로젝트를 시작하십시오. 여기에는 몇 가지 사항이 있습니다. 자유 시간에 프로그래밍에 관심이 있고 진정으로 주제를 즐기십시오. 이는 훌륭한 프로그래머가되기 위해 필수적입니다. 작업 환경에서 수행하는 것 이상의 기술을 확장 할 수 있다는 점에서 다양성을 보여줍니다. 동기 부여와 창의력도 보여줍니다. 스스로 문제를 정의하고 해결을위한 조치를 취하고 있습니다.

이 모든 측면은 저에게 훌륭한 프로그래머를 정의합니다.


3

나의 대답은 정치적으로 틀릴 것이다. 그러나 저는 실제로 창업 창업자이며 저의 직업은 최고의 프로그래머를 고용하는 것입니다.

어떤 사람들이 좋은 프로그래머가되거나 좋은 프로그래머가 될 수 있는지 어떻게 알 수 있습니까?

한마디 : IQ.

IQ는 높이가 바스켓 볼 플레이어와 같으므로 프로그래밍을위한 것입니다.

저는 수학 기술을 정치적으로 올바른 또 다른 지표로 삼을 것입니다. 컴퓨터 과학 교사들은 프로그래밍 과정에서 누가 성공할 것인지 정확하게 예측할 수있는 기준이 하나 있다고 말했습니다. 고등학교 수학 점수. 어쨌든 효과적으로 IQ입니다.

이것은 놀라운 일이 될 수 있습니다. 우리는 프로그래밍이 대학 학위 직업이라고 들었습니다. 내가 신경 쓰지 않는 것 같아 나는 단지 3 가지에 관심이있다.

  1. 프로그래밍 기술 (테스트 가능).
  2. 적성.
  3. 상식 (너무 낮지 않은) 사람들의 기술.

불행하게도 IQ는 한 가지만 측정합니다. 그래서 몇 가지 테스트를 수행합니다.

나는 사람들에게 질문을한다. 간단한 질문 초등학교 어린이가 대답 할 수있을 것으로 기대합니다.

나는 다음과 같은 질문을한다.

  1. 7:35에 시계의 짧은 손과 긴 손의 거리는 얼마입니까?
  2. 자카르타에서 세마 랑으로 가면 시속 60km를 유지하고 싶습니다. 그런 다음 처음 2 시간에 100km / 시간을 운전합니다. 평균 주행 속도가 시간당 60km가되도록 나머지 여정을 얼마나 빨리 가야합니까?

주의 깊게 살펴보면 이러한 질문에는 전혀 창의성이 필요하지 않습니다. 상식 만. IQ를 가진 모든 초등학교 어린이들은 그 대답을 할 수 있습니다.

대부분의 대학 졸업생은 할 수 없습니다. 이제 누군가가 대답 할 수 없다고 상상해보십시오. 그는 프로그램을 할 수 있습니까? 생각 해봐 그가해야 할 일을 얼마나 자주 지정해야합니까?

창의성이 필요한 Microsoft와 같은 질문을 할 수도 있습니다. 어떤 저울이 가장 무거운 지 알기 위해 저울 저울에서 8 구의 무게를 측정하는 방법에 대한 질문을 할 수 있습니다. 그러한 질문의 문제는 운이 포함된다는 것입니다. 그러나 일부는 최소한의 요구 사항이어야합니다.

멋진 프로그래머를 얻는 것은 다른 프로그래머의 사기를 향상시킬 수 있습니다. 한 명의 법률 프로그래머를 확보하면 다른 사람의 사기를 낮출 수 있습니다.

사람들이 그런 질문에 대답 할 수있게되면 매우 쉽습니다. 구글 잼 코드를 작성하도록하겠습니다.

좋은 프로그래머는 Google 잼 코드를 해결하고 어떤 문제가 더 쉬운 지 예측할 수 있습니다.


2

imho 당신은 좋은 프로그래머라면

-당신은 소리 이론적 배경을 가지고 있습니다. 알고리즘이나 프레임 워크뿐만 아니라 휠을 재창조하는 것은 대부분 시간 낭비입니다.

-때때로 비스듬한 관점에서 사물과 문제를 볼 수 있습니다. 혁신적인 솔루션을 찾을 수 있습니다.

최고의 도구와 최고의 기술을 업데이트하기 위해 많은 시간과 노력을 들이고 있습니다.

-코드를 쉽게 수정할 수 있습니다. 깨끗하고 우아하고 이해하기 쉬운 코드를 디자인하면 수정하지 않아도됩니다.

-코드 / 버그 속도가 상당히 높은 경우 나는 이것이 사소한 것처럼 보이지만 그럼에도 불구하고 사소한 버그를 일으키는 경향이있는 많은 창의적이고 숙련 된 개발자를 알고 있습니다. 이것은 그들의 효과와 유용성을 크게 손상시킵니다.

주변 사람들은 당신이 무엇을해야할지 결정하는 데 도움이된다는 것을 알고

다른 도구를 사용하여 문제를 해결할 수 있습니다. 나쁜 프로그래머는 문제에 관계없이 동일한 도구 (언어, 기술 또는 아키텍처 등)를 계속 사용합니다.

-계속 배우고 궁금합니다.

-여러분은 재미있는 프로그래밍을 해왔습니다.


2

"선생님, 저는 알파에서 오마하까지이 과정을 겪어 왔으며, 사람이 알지 못하는 사람이 자신이하는 소음이 더 크고 명령이 더 높은 급여를받는다고 말합니다." 마크 트웨인

... 내 결론은 좋은 프로그래머가 저임금을 명령하고 소음을 거의 내지 않는다는 것입니다 ... :)


2

최고의 프로그래머 : 적시에 가장 적은 수의 코드 문으로 작업을 완료하십시오.


1

일부 메트릭 당 코드에 몇 개의 버그가 있습니까? (즉, 줄당 버그) 새로운 기능을 추가해야 할 때 얼마나 많은 코드를 다시 코딩해야합니까? 동료에게 코드 수정에 문제가 있습니까?

"품질 코드 란 무엇인가"라는 질문이이 세월이 지나도 여전히 논쟁의 여지가 많다는 점을 감안할 때 궁극적으로 그 질문에 대한 대답은 불가능합니다.


1

나는 Adam V가 위에서 말한 것을 정말 좋아합니다.

다른 사람들이 말한 것 외에도 작업의 유지 관리 및 지원 기록을 살펴보십시오. 코드에 유지 관리 요구 사항이 많고 지속적으로 수정 중이거나 변경하기 어려운 경우 품질에 대한 지표가 될 수 있습니다. 그러나 이는 요구 사항이 열악하다는 지표 일 수도 있습니다.


1
"그러나 이것들은 또한 열악한 요구 사항을 나타내는 지표 일 수 있습니다." 아마도 우리의 경우는 여기에 있습니다. 열악한 요구 사항으로 인해 전체 모듈을 다시 작성했습니다.

1

자기 평가는 매우 어렵습니다. 무능한 사람들은 자신의 능력에 대해 격렬하게 팽창 한 경향이 있습니다.

좋은 척도는 프로그래머로서 자신을 존중하는 다른 사람들이 작성한 코드로 작업하기를 원하는지 여부입니다. 직접 작업하거나 작성한 코드를 상속받을 수있는 기회가 주어진다면 코드를 낮추겠습니까? 탐욕스럽게 동의하십니까? 아니면 당신의 일에서 배울 수있는 기회에 뛰어? 이 기술은 동료이거나, 미성년자가 아니거나 기분이 좋아 져서 도움이 될 수 있다고 생각하는 사람이라면 더 잘 작동합니다.


1

실제로 찾으려면 동료에게 코드를 제출하고 (구성 적) 코드 검토를 요청하십시오. 최악의 경우, 당신은 무언가를 배웁니다. 깨달음을 추구하는이 사이트에 있다는 사실은 이미 씻지 않은 대중과 구별됩니다. (자아 쓰다듬 기 위해 여기에 있지 않으면 :-)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.