프로그래머로서의 능력을 어떻게 측정할 수 있나요?[닫은]

StackOverflow https://stackoverflow.com/questions/110522

  •  02-07-2019
  •  | 
  •  

문제

이전 인터뷰에서 저는 다음과 같은 질문을 받았습니다.'0에서 10까지, 프로그래머로서 자신을 어떻게 평가하시나요?'

내 실력이 얼마나 좋은지 측정할 수 있는 척도를 모르기 때문에 대답하기가 매우 어려운 질문이었습니다.더욱이, 당신이 얼마나 잘 수행하는지 아는 것은 더 나은 프로그래머가 되기 위해 개선해야 할 것이 무엇인지 이해하는 데 유용할 것입니다.

그럼 당신이 일을 얼마나 잘하는지 알 수 있는 방법이 있나요?

도움이 되었습니까?

해결책

이전 고용주에게 전화하여 이전 코드를 모두 물려받은 사람과 대화하세요.그들은 당신이 얼마나 훌륭한 프로그래머인지 말해 줄 것입니다.;)

다른 팁

어려운 질문이네요.순전히 자기 성찰적인 관점에서 볼 때 "훌륭한 프로그래밍 능력"의 가장 좋은 지표 중 하나는 다음과 같습니다.당신은 당신의 공예를 얼마나 즐기나요?저는 많은 개발자를 만났고 그중 일부는 매우 훌륭했지만 한 번도 알지 못했습니다. 누구나 그는 9-5 개발자였으며 ​​평범한 결과보다 더 나은 결과를 관리했습니다.

물론 내면을 들여다보는 것이 역량을 측정하는 최선의 방법은 아닙니다.나는 당신의 동료 프로그래머들이 당신에게 상당히 확실한 답을 줄 수 있을 것이라고 생각합니다.그러한 질문을 표현하는 데는 사회적 예절이 포함되어 있지만 그 가능성은 여전히 ​​존재합니다.내 경험에 따르면, 당신과 함께 일하는 사람들은 당신이 실수를 했을 때 그 혼란을 정리해야 하는 사람들이기 때문에 당신이 얼마나 잘하고 있는지 가장 잘 이해할 것입니다.:-)

마지막 소식:프로그래밍은 순수하고 단순한 문제 해결입니다.당신에게 다가오는 어려운 문제에 어떻게 접근하는지 생각해보십시오.첫째, 어려운 도전에 감정적으로 어떻게 반응합니까?둘째, 코드는 어떤 모습일까요?당신이 도착할 때까지 맹목적으로 정글을 헤쳐나가는 길을 해킹합니까? 일부 아니면 귀하의 접근 방식이 체계적이고, 잘 측정되었으며, (가장 중요한 것은) 집중적으로 연구되었습니까?정말 훌륭한 프로그래머는 모든 것을 아는 사람이나 Dijkstra의 알고리즘을 8개 언어로 구현할 수 있는 사람이 아니라, 우연히 발생한 아이디어의 아주 작은 덩어리를 찾기 위해 교과서와 잘 알려지지 않은 블로그를 뒤지는 데 몇 시간을 보내는 사람입니다. 당면한 문제에 결정적인 역할을 합니다.당신이 깊은 도전을 헤쳐나가는 인내심과 열정, 그리고 다른 사람들의 아이디어를 찾는 겸손함을 갖고 있다면, 당신은 그 "10"을 향해 잘 나아가고 있는 것입니다.

10 - 당신은 정말로 아무것도 모른다는 것을 모릅니다.

9 - 당신은 단지 자랑하고 있을 뿐이고 아마도 당신이 생각하는 것만큼 훌륭하지 않을 것입니다.당신이 정말로 이렇게 훌륭하더라도 "9"를 선택하는 것이 당신에 대해 무엇을 의미하는지 볼 수 있는 정치적 능력이 부족합니다.또는 당신은 업계에서 꽤 유명하거나 존경받는 사람입니다(예:당신은 한 번 책을 썼고, 그 책에는 "The ______ Book"과 같은 별명이나 대부분의 개발자가 즉시 알아볼 수 있는 약어가 있습니다. 그리고 당신의 이름을 밝히는 것을 두려워하지 않습니다.

8 - 당신은 정말 훌륭하고 그것을 알고 있지만 9나 10을 선택하는 낙인을 깨달을 만큼 똑똑합니다.백업해 두시면 좋을 것 같습니다.

7 - 당신은 매우 훌륭하지만 배울 점이 많다는 것을 알고 있습니다.

6 - 당신은 유능하고 배울 것이 많지만 자신의 능력에 대해 그다지 자신감이 없습니다.당신이 7이 아닌 것이 확실합니까?

5 - 괜찮은 주니어 개발자.당신은 이제 막 학교를 졸업했고, 실제 프로그래밍에 대해 아무것도 모르지만 코드를 해킹하는 방법을 알고 있다는 것을 깨달을 만큼 똑똑합니다.

4 - 평범한 주니어 개발자.이제 막 학교를 졸업했지만 기본 코딩 기술에는 부족한 점이 있습니다.대부분의 프로그래밍 수업을 통과하는 데 어려움을 겪었지만 어떤 이유로 소프트웨어 개발 분야에서 경력을 쌓고 싶다고 결정했습니다.당신은 또한 자신을 정말로 믿지 않는데 왜 면접관이 그래야합니까?

3점 이하 - 프로그래밍 능력에 대한 자신감이 거의 없다면 프로그래밍 직업에 지원하는 이유는 무엇입니까?

따라서 "올바른" 대답은 인터뷰하는 직업 종류에 따라 아마도 5-7일 것입니다.8은 이 질문을 하지 않을 만큼 충분한 경험을 가지고 있습니다.

이 인터뷰 질문은 실제로 당신이 개발자로서 얼마나 좋은지에 관한 것이 아닙니다.그것은 당신이 얼마나 많은 자기 인식을 가지고 있는지, 그리고 당신이 제시한 수치를 (면접관에게) 얼마나 잘 정당화하는지에 관한 것입니다.

인터뷰 중 이 질문에 대답하는 올바른 방법(철학적인 대답과 반대)은 가장 강력한 영역을 선택하고 해당 특정 영역에서 상위 X% 개발자에 속한다는 좋은 증거를 제시하는 것입니다.

예를 들어, 신뢰할 수 있는 소프트웨어를 만드는 것이 전문 분야 중 하나이기 때문에 상위 Y%에 속한다고 말할 수 있습니다.그러면 몇 가지 예를 들 수 있습니다.또는 개발 기술을 판단하는 합리적인 방법은 얼마나 많은 돈을 버는가라고 말할 수도 있습니다.

당신이 해서는 안 되는 일은 질문을 문자 그대로 받아들이는 것입니다.그것은 일반적으로 면접관이 원하는 것이 아닙니다.

예비 개발자를 인터뷰하는 사람으로서 저는 6-8 사이가 그 질문에 대한 가장 안전한 대답이라고 말하고 싶습니다.평균 반응은 7 정도인 것 같아요.무능한 사람(0~5)이나 무식한 사람(9~10)을 걸러내는 것이 정말 더 중요한 것 같아요.9+로 답하기로 결정했다면 이를 증명할 준비를 하십시오.

만약 당신이 정말로 그 질문에 대해 진지하게 대답하고 싶다면, 나는 이렇게 말하고 싶습니다. 프로그래머 역량 매트릭스 등급이 포함되어야 하는 영역에 대한 훌륭한 출발점이 됩니다.

나는 그 인터뷰 질문을 수년 동안 사용한 사람을 알고 있습니다.그는 최고의 프로그래머는 자신을 7점 정도 평가하는 경향이 있다고 말했습니다.특히 자신을 10점으로 평가한 사람들은 대개 자신의 능력에 대해 그만큼 확신을 갖고 있었습니다. 만났다 정말 좋은 프로그래머.하지만 한 번도 만난 적이 없는데, 누구에게서 실제 기술을 배웠겠습니까?물론 예외도 있습니다.그러나 커뮤니티에 관심을 갖고 계시다면 아마도 예외가 누구인지 알게 될 것입니다.

그런데 이 현상은 프로그래밍에만 국한되지 않습니다.나는 여러 가지 일에서 그것이 사실임을 발견했습니다.스스로를 10점 만점에 10점으로 평가하는 사람들은 대개 별로 좋지 않습니다.X를 매우 잘하는 사람들은 X를 잘하는 다른 사람들을 찾았기 때문에 좋습니다. 따라서 자신을 더 어려운 동료 그룹과 비교하고 일반적으로 자체 평가를 10으로 평가하지 않습니다.나는 이것이 탁구나 체스를 하는 것만큼 멀리 있는 X 값에 대해서도 사실임을 발견했습니다.

모든 프로그래밍 언어에는 세 가지 수준의 숙련도가 있는 것 같습니다.

  1. 힘든 정신적 노력 없이 구문 오류를 즉시 수정합니다.
  2. 코드를 자연어(또는 다른 프로그래밍 언어)로 '번역'하지 않고도 다른 사람의 코드를 읽고 의도를 해결할 수 있습니다.
  3. 문제를 이해하면 언어에서 제공하는 구문(명령형, OO, 기능적 ...)으로 자연스럽게 표현할 수 있습니다.

내 생각엔 이것이 1 -> 10의 규모를 따라가는 것 같아요.

한 언어에 대한 깊은 지식이 다른 언어를 배우는 데 방해가 될 수 있다는 점은 주목할 가치가 있습니다.일단 언어 'A'의 관점에서 생각하면 언어 'B'를 배우기 위해 두뇌를 다시 연결해야 하기 때문입니다.분명히 이것은 완전히 다른 유형의 프로그래밍으로 이동할 때만 적용됩니다.C->C++, C#->F#, Java->Scala 등...그래서 저는 추상적으로 '완벽한 프로그래머'가 되는 것이 가능하지 않다고 생각합니다.

귀하의 프로젝트 오일러 등급은 다음과 같은 아이디어를 제공할 수 있습니다(귀하의 기술이 아니라 끝까지 포기하지 않으려는 열정).

http://projecteuler.net/index.php?section=problems

"1-10에서 어떻게 자신을 평가하겠습니까?"에 대한 완전히 유효한 접근 방식 중 하나입니다. 지적하는 것입니다 자기 평가의 본질적인 문제.이 흥미로운 논문의 실험 결과를 요약하면 다음과 같습니다.

  1. 거의 모든 사람들이 자신을 평균 이상이라고 평가했습니다.그 사람들 중 적어도 50%는 부정직하거나 속고 있었습니다.
  2. 사람들은 실제로 상위 25%는 자신을 50~75% 범위로 낮추는 경우가 많습니다(즉, 자신을 인위적으로 낮게 평가함).
  3. 50~75% 범위에 속하는 사람들은 자신을 가장 정확하게 평가하는 경향이 있었습니다.

자기 평가의 50%는 거짓말이고 나머지 25%는 틀렸다고 합리적으로 요약할 수 있습니다.그래서 당신은 ~할 수 있었다 인터뷰 드론이 당신의 시간을 낭비하고 있는지, 아니면 당신을 심리적으로 평가하고 있는지 물어보세요....

더욱이, 당신이 얼마나 잘 수행하는지 아는 것은 더 나은 프로그래머가 되기 위해 개선해야 할 것이 무엇인지 이해하는 데 유용할 것입니다.

실제로 무엇을 개선해야 하는지 아는 것은 자신이 얼마나 잘 수행하는지 이해하는 데 중요합니다.당신이 함께 일하거나 교류하는 사람들을 살펴보고, 당신이 더 잘하기를 바라는 그들의 면이 무엇인지 알아내려고 노력하십시오.그것은 천천히 당신이 더 나은 프로그래머가 되는 데 도움이 될 것입니다.성장함에 따라 다른 팀과 소스 코드(다른 오픈 소스 프로젝트)를 살펴보고 자신을 더욱 발전시키는 데 도움을 받으세요.

내 생각에 당신 자신을 평가하는 질문에 대답하는 더 좋은 방법은 내가 나 자신을 다음과 같이 평가한다고 말하는 것입니다. x 백분위수 내가 함께 일한 다른 모든 사람들도 마찬가지입니다.

간단히 대답하자면, 동료와 비교하여 자신을 평가한다는 것입니다.즉, 아무것도 모르는 사람에게 0점을 주고, 개인적으로 가장 잘 아는 프로그래머에게 10점을 주라. 이 두 사람에 비하면 당신은 어떤가?최고에 가깝나요?그것은 8이 될 것입니다.가운데?그것은 5가 될 것입니다.

0이나 10으로 답하지 말고 객관적이 되도록 노력하세요.질문의 요점은 당신을 프로그래머로 평가하는 것이 아니라 자기 평가 기술을 평가하는 것입니다.당신의 통찰력이 바로 그것이다.

훌륭한 프로그래머를 측정하는 기준은 단 하나뿐입니다.LOC/시간다른 모든 측정항목은 불필요합니다. :p

여러 소프트웨어 시스템이 생산되는 동안 사람들이 아무것도 가지고 있지 않다고 불평한다면 이는 단순히 시스템이 잘 설계되고 잘 코딩되었다는 의미이며 다른 회사 코드 원숭이와는 달리 6- 당신을 바쁘게 만드는 문제 티켓의 달 대기열.

그렇다면 등을 두드려보세요.당신은 좋은 일을합니다.

소프트웨어는 돈을 벌기 전에는 완성되지 않는다는 점을 기억하십시오.

면접관으로서 저는 후보자가 자신을 얼마나 잘 표현하는지 알아보기 위해 이 질문을 던지고 싶습니다.

또한 이는 그들이 얼마나 자기 비판적이며 자신과 동료 동료를 위해 어떤 종류의 표준을 설정하는지 보여줍니다.

이는 그들이 신/나쁜 프로그래밍에 대해 얼마나 알고 있는지를 알려줄 뿐만 아니라 요구 사항을 추출하기 위해 클라이언트와 얼마나 잘 상호 작용할 것인지, 나머지 팀과 얼마나 잘 일치하는지 알려줍니다.

실제 순위 0-10은 훨씬 덜 중요합니다.

저는 언어 지식의 중요성을 과대평가하지 않는 것이 중요하다고 생각합니다.

프로그래머가 가질 수 있는 가장 큰 기술은 문제 해결 및 디자인 분야에 있습니다.선택한 언어를 실제로 사용하게 되면 거의 타이핑만 하면 됩니다.(문제 해결 및 디자인 기술을 사용하기를 희망하는 영역 중 하나가 가독성 및 유지 관리 문제를 해결하기 위해 코드 레이아웃에 있다는 점을 인정)

따라서 프로그래머의 척도는 특정 문제를 해결하기 위해 서로 다른 범위의 아이디어나 문제를 얼마나 잘 통합할 수 있는지입니다.더 많은 기술은 잠재적으로 활용할 수 있는 지식 영역을 추가하는 것입니다.

물론 이 중 어느 것도 자신의 기술을 판단하는 척도로서 도움이 되지 않습니다. 그러나 다른 사람들은 이미 그것이 어쨌든 측정할 수 없는 질문이라고 말했습니다.:-)

답변에 대한 사운드 바이트를 원하는 경우:

제가 전문적으로 일을 시작했을 때는 아마도 2살 정도 되었을 것입니다. 지금은 7살 정도라고 말하고 싶지만 매일 10살이 되기 위해 일하고 있습니다.

분당 단어 수입니다.

제 생각에는 이것은 어려운 일입니다(인터뷰의 맥락에서 보면 불공정) 질문!저는 지금까지 세 개의 다른 회사에서 일해왔습니다.나는 어디에서나 아주 소수의 훌륭한 프로그래머(나보다 훨씬 나은), 많은 좋은 프로그래머, 그리고 더 나은 방향으로 변화해야 할 소수의 프로그래머를 만났습니다.하지만 0부터 10까지 카테고리로 분류하는 것은 불가능합니다!

프로그래머가 되는 것에는 많은 "선함의 차원"이 있습니다.평가 과정은 귀하가 관심 있는 분야에 따라 달라질 수 있습니다.다음은 몇 가지 아이디어입니다.

  1. 기술 숙련도:당신이 주로 사용하는 언어에 대한 좋은 "요리책" 스타일의 참고 자료를 구입하십시오.책에서 논의된 각 작업에 대해 먼저 자신만의 솔루션을 작성한 다음 책에서 제공하는 솔루션과 비교하세요.
  2. 개발 속도:다음에서 가입하세요 탑코더 저장된 문제를 해결하거나 실시간 경쟁에 참여합니다.
  3. 개발팀에 참여:믿을 수 있는 동료에게 점심을 사주고 팀 구성원으로서 자신에 대한 솔직한 평가를 요청하세요(예:"우리 팀 구성원으로서 나의 주요 강점과 약점은 무엇이라고 생각하시나요?개선하기 위해 무엇을 제안하시겠습니까?") [당신의 팀에 그러한 토론을 위해 갈 수 있는 사람이 없다면 아마도 그 사람일 것입니다. 저것 이 문제에 대해 알려줍니다.]
  4. 의사 소통 능력:같이 일하는 동료와 함께 앉으세요. ~ 아니다 개발자에게 현재 프로젝트에 대한 견해를 물어보세요.주의하세요.그 사람의 인식이 당신의 인식과 얼마나 일치하는지 고려하십시오.
  5. 추정:매일 아침 메모를 하세요(당신의 눈에만) 그날 달성할 것으로 예상되는 작업과 예상되는 시간에 대해 설명합니다.하루가 끝나면 그 메모를 실제로 일어난 일과 비교하여 얼마나 멀리 떨어져 있는지 확인하십시오.이 영역을 개선하려면 차이가 발생한 이유와 추측을 더 정확하게 만들기 위해 고려할 수 있는 사항에 대해 생각해 보세요.

당신은 항상 동료 프로그래머들과 경쟁하고 당신의 사고 능력이 얼마나 좋은지 확인할 수 있습니다.www.topcoder.com 또는 www.spoj.pl 또는 www.codechef.com과 같은 사이트를 사용해 볼 수 있으며 순위를 제공하며 얼마나 잘 수행하는지 알 수 있습니다.그러나 이는 순전히 알고리즘 두뇌를 테스트하는 것이지 코딩 방식을 테스트하는 것은 아닙니다.만약 내가 이 질문을 받는다면 나는 끊임없이 배우는 사람이고 실수를 저지르고 바로잡는 것을 믿는다고 말할 것입니다. 나는 내 코드를 스스로 비판하는 것을 두려워하지 않으며 다른 사람에게 내 실수를 지적하도록 요청하는 것을 주저하지 않습니다. 그 규모가 어느 정도인지 결정할 수 있습니다.

100%의 배율을 정의합니다.

100.0 표시에 머물고 있음을 확인하십시오.

다른 개발자의 위치와 유명 IT 인물의 위치를 ​​확인하세요.

당신이 얼마나 나아졌는지 계산해 보세요.

나는 그 질문을 몇 번이나 받았습니다.방금 대표팀에서 나왔을 때 7/8이라고 했어요.이제 몇 년 동안 일해왔으니 지금은 무한히 나아졌다고 생각하지만 4라고 말합니다.

0-10은 직선 그래프로 표시되지 않습니다.나는 그것을 지수 그래프로 본다.물론 나는 여전히 10점 만점에 4점이라고 말하고 있지만, 나는 거기 있는 코더의 90%보다 낫다고 믿습니다.나는 그들의 작품 중 일부를 보았고 그것은 나를 두려워했습니다.저는 뱅킹 소프트웨어 SSL 소프트웨어 작업을 해왔는데 실제로 작동한다는 게 무섭습니다.그래서 나보다 훨씬 더 나은 코더 중 10%가 있습니다.내가 그들을 따라잡을 수 있을지 확신할 수 없습니다.제 생각에는 4까지 가는 것이 쉽습니다.5까지 가는게 더 어렵습니다.5시부터 6시까지는 정말 무섭습니다.

8, 9, 10점에 걸맞는 훌륭한 코더.

경험.경험의 폭이 넓을수록 "더 좋습니다".경험해 본 것만 알 수 있습니다.

개발한(또는 손상 없이 성공적으로 작업한) 시스템의 크기 및 복잡성.

여기서 꽤 귀중한 토론이 이루어졌습니다.그것을 사랑.저는 인터뷰 대상자로서 이에 대해 다음과 같이 대답하고 싶습니다.

먼저 질문을 분석하고 싶습니다.

분석은 언어, 프레임 워크, 문제의 특성과 같은 몇 가지에 달려 있습니다 (나는 PHP와 WordPress Guy이므로 대답은이 맥락에서입니다) 1.플러그인 패치 작업, 2.처음부터 건물, 3.API의 사용법

나의 일반적인 접근법은 (대부분의 경우) 1입니다.기능의 주어진 (또는 이미 구축 된) 범위를 이해합니다 (현재 문제 설명과 관련하여) 2.해결하는 가장 좋은 방법 중 하나를 고려합니다 (매번 분명히 여러 가지 방법이 있습니다…) 3.코딩 4.실시간 시나리오에서 테스트 (성능 튜닝 용) 5.프로그래머의 초기 단계에서는 최종 솔루션을 얻을 때까지 네 단계가 모두 재귀적이지만 경험이 쌓이면 1 2 단계가 재귀적이 됩니다.

모든 언어의 기본 철학을 이해하는 능력은 임프입니다.휴식은 문제해결 태도이다.

그리고 PHP에서는 6.5라고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top