프로그래머의 책임 법안 [폐쇄]


40

우리는 모두 프로그래머 권리 장전 과 XP가 비슷한 개념을 가지고 있다고 들었습니다 .

요즘 우리는 사람들의 권리에 대해 많이 들지만 그들의 책임에 대해 많이 들지 않기 때문에 프로그래머가 책임을 져야한다는 것이 일반적인 불만입니다. 그것은 그들이해서는 안될 일이지만, 전문적이고 책임감있게 행동하는 프로그래머를 그렇지 않은 사람들과 분리시키는 것입니다.

나는 주로 불쾌한 것들과 일어나지 않는 것들에 관심이 있습니다. 그것은 프로그래머의 90 %가 실제로하고 싶어하는 것 (예를 들어 항상 리팩토링하고 소스 제어를 사용하는 것)보다는 프로그래머가 회피하고 회피하는 경향이있는 것입니다.

그렇다면 프로그래머의 책임 법안에 무엇이 있어야합니까?


4
또한 지침 1, 2, 4 및 6에 적합하다고 생각합니다.
Stephen Furlani

2
중요한 질문이라고 생각합니다.
HLGEM

1
중요한 후속 조치는 '책임 프로그래머가되도록 어떻게 훈련합니까?'입니다.
Stephen Furlani

2
이 질문은 항목 목록 만 생성하는 것으로 보입니다. 답변은 다소 인상적이지만 (시간과 노력을 게시물에 넣은 답변자를 칭찬하지만) 의견에 중점을두고 질문의 문구가 폴링으로 나옵니다.
Thomas Owens

5
@ThomasOwens는 "이 질문은 Q & A 형식에 적합하지 않습니다."라고 강력하게 동의하지 않습니다. 이로 인해 개발자 테스트, 개발 방법론, 프리 랜싱 및 비즈니스 문제, 품질 보증 및 소프트웨어 엔지니어링에 대한 답변이 이미 생성되었으며, 위와 같은 질문이 계속해서이 사이트를 보유하고있는 이유는 확실치 않습니다.
Joshua Drake

답변:


41
  • 프로그래머는 맹목적으로 구현하는 대신 열악한 요구 사항을 철회해야 할 책임이 있습니다. 여기에는 고객이 원하는 옵션이 다른 옵션보다 비싸거나 특정 위험이 있음을 알리는 것이 포함됩니다. 또한 비명을 지르지 말고 사람들을 바보라고 부르며 어리 석거나 다른 유치한 행동임을 암시하는 전문적인 방식으로 나쁜 소식을 전하는 것도 포함됩니다. 그가 뒤로 밀면, 그는 "SQL Server를 좋아하지 않아 사용하지 않을 것"이상의 이유와 대안을 제시해야합니다.

  • 그러나 프로그래머는 또한 결정을 수락하고 푸시 백이 승인되지 않으면 마음에 들지 않을 수있는 도구 나 디자인을 사용해야 할 책임이 있습니다. SSRS에서 보고서를 요청한 경우 클라이언트가 없을 수있는 Crystal Reports로 보고서를 전달할 수 없습니다. .net 솔루션이 필요한 경우 Haskell에 제공 할 수 없습니다. 팀의 다른 사람이 사용하려는 도구 나 언어를 사용하지 않는 경우 관리자가 특정 작업에 가장 적합한 도구라는 데 동의하지 않으면 전문가가 아닌 것입니다.

  • 프로그래머는 자신의 작업을 테스트 할 책임이 있습니다. (이것은 유일한 테스트는 아니지만, 전문 프로그래머는 테스트하지 않은 코드를 보내서는 안됩니다.) 여기에는 자주 발생하지 않을 것으로 예상되는 코드의 분기까지도 테스트하는 것이 포함됩니다. 중첩 된 IF 세트가있는 경우 가능한 모든 경로를 테스트하십시오.

  • 프로그래머는 오류와 예외를 정상적으로 처리하고 농담이나 모욕이 아닌 전문적이고 중립적 인 오류 메시지를 작성해야합니다.

  • 프로그래머는 개인 데이터를 보호하고, 회사를 위해 작성한 독점 코드를 보호하고, 응용 프로그램 사용으로 인한 재앙 (자기 적으로 치명적인 재앙)으로부터 사용자를 보호해야 할 책임이 있습니다.

  • 프로그래머는 자신의 코드가 유지 관리 가능하고 소스 제어 상태인지 확인해야 할 책임이 있습니다.

  • 프로그래머는 변경 사항이 수행중인 작업에 부정적인 영향을 미치지 않도록 다른 사람과 협력 할 책임이 있습니다.

  • 프로그래머는 놀고 배우고 자하는 도구 / 언어가 아니라 디자인 단계에서 도구 또는 언어 의 클라이언트위한 최상의 선택을 추천 할 책임이 있습니다.

  • 프로그래머는 자신이 싫어하는 프로젝트를 포함하여 프로젝트의 모든 적절한 담당자와 협력 할 책임이 있습니다. 사람들을 좋아하는 것은 당신의 일이 아닙니다. 그들과 함께 일하고 예의를 지키는 것이 당신의 일입니다.

  • 프로그래머는 합리적인 시간 내에 지정된 작업을 수행하는 제품을 생산할 책임이 있습니다. 일정이 충족되지 않을 경우, 알려진 즉시 그 사실을 경영진에게 통보 할 책임이 있습니다.

  • 프로그래머는 프로젝트 관리자에게 작업 수행에 대한 장애에 대해 알려야 할 책임이 있습니다. 그들은 자신이 모르는 것을 고칠 수 없습니다.

  • 프로그래머는 재미 있고 흥미로운 부분뿐만 아니라 모든 작업을 수행해야 할 책임이 있습니다. 모든 작업에는 지루한 부분이 있지만 여전히 완료해야합니다. 여기에는 작업 표와 프로젝트 관리 소프트웨어에 토론 항목 추가 등이 포함됩니다. 문서화, 코드 검토 등이 포함됩니다.

  • 프로그래머는 프로그래밍 개념뿐만 아니라 그가 지원하는 비즈니스 영역을 배워야 할 책임이 있습니다.

  • 프로그래머는 자신의 기술을 최신 상태로 유지할 책임이 있습니다.

  • 프로그래머가 엉망이되면, 가능한 빨리 문제를 해결하기 위해 모든 힘을 다할 책임이있다. 프로덕션 데이터베이스에서 중요한 테이블을 방금 삭제했음을 숨기지 않고 관리에 나쁜 소식을 전하는 것도 여기에 해당합니다.

  • 프로그래머는 다른 작업자와 동일한 책임을 가지고 있습니다. 정시에 출근하고, 계약 시간을 미리 보내고, 휴가 시간을 미리 요청하고, 전화 및 전자 메일 메시지에 답장하고 (이메일을 읽어야하는 경우) 필요한 양식을 작성합니다. HR 등


7
나는 사랑 농담 오류 메시지. 상황은 이미 충분히 나쁘고, 그보다 더 심각하게 할 필요는 없습니다. 적어도 오류로 나를 때리는 동안 나를 웃게 만드십시오!
Dr Hannibal Lecter

2
나는에 개발자에 대한 책임 질문 개인적으로이 내가 할 것을 바꿔 것 ... 모든 상황에서 자신의 코드를 테스트 자신의 코드가 테스트되도록 조직이 전문 테스터 (모두 자동화 및 인간)과 장소에서 고체 공정이있는 경우 ... 코드를 테스트하기 위해 개발자가 왜 개인적으로 코드를 작성해야하는지 모르겠습니다. 새로운 기능을 개발하거나 버그를 수정하는 경우 직접 테스트해야합니다. 그렇지 않으면 작업이 완료되었는지 알 수 없습니다. 그러나 큰 리팩토링을 수행하는 경우 전체 제품을 철저하게 회귀 테스트하는 것은 의미가 없습니다.
JoelFan

회귀 테스트는 말하지 않았지만 변경 사항이 의도 한대로 수행되는지 변경하려면 단위 테스트를 수행해야합니다.
HLGEM

2
에러 메시지에 느낌표가없는 것은 어떻습니까?
JoelFan

1
이들은 중립적이어야합니다. 예를 들어 "프로그래머는 자신의 작업을 테스트 할 책임이 있습니다."대신 "필요한 작업을 테스트해야합니다"대신 명령을 필수로 설정하면이를보다 쉽게 ​​만들 수 있습니다.
sigil

42

모든 프로그래머는 다른 사람들이 자신의 코드를 읽을 수 있도록 만들어야합니다.


D @Kevin : 그건 입니다 책임. 사람이 읽을 수있는 코드를 생성 할 책임은 귀하에게 있습니다.
doppelgreener

1
@Axidos, 내가 한 일을 깨달았을 때 답변을 변경했기 때문입니다.
dan_waterworth

더 이상 관련이 없으므로 내 의견을 삭제하겠습니다.
Kevin D

1
누구에 의해 "읽을 수있는"? 내 "동료"(즉, 교육과 경험이 비슷한 사람)? 사람 정말 예술과 과학 분야에서 잘 교육? 아니면 다트머스 베이직보다 더 발전된 사업이없는 플라잉 코드 원숭이?
John R. Strohm

7
@John,이 맥락에서 다른 사람들은 다른 프로그래머들을 암시합니다. "기린은 다른 기린보다 컸습니다."라는 문장에서, 우리는 다른 사람들이 날아 다니는 원숭이를 의미하지는 않습니다. '기타'는 "아직 언급되지 않은 동일한 유형의 다른 것"을 의미합니다.
dan_waterworth

22

프로그래머는 모든 사용자 제공 데이터의 개인 정보 보호 및 보안을 책임집니다. 특히 비밀번호, 신용 카드 번호, 이메일 주소 및 실제 위치.


이것은 실제로 시스템 설계자의 영역에 속합니다. 많은 엔터프라이즈 시나리오에서 프로그래머는 데이터 저장소에 대해 말하거나 제어 할 수 없습니다. 내가하고있는 모든 작업이 해당 데이터베이스에 액세스하는 것이 아니라 데이터베이스에 액세스 할 때 데이터베이스의 전자 메일 주소를 어떻게 관리 할 수 ​​있습니까?
Neal Tibrewala

2
나는 위의 책임 대부분이 페이스 북 사람들에게 적용될 필요는 없다고 생각한다. :)
MetalMikester

4
-1 너무 큰 책임입니다.
피터 터너

6
아마도 대규모 시스템의 경우 한 프로그래머가 결정하기에는 너무 많은 것일 수 있습니다. 그러나 한 명 또는 소수의 프로그래머가 작업하는 대부분의 사이트에는 데이터를 올바르게 저장해야합니다. 해싱이 필요할 때 암호화가 필요하지 않으며, 사용자 지정 알고리즘이나 보안이 모호하지 않습니다. 실제 테스트 된 보안.
Malfist

@Neal : 시스템 아키텍트는 또 다른 프로그래머입니다. 물론 큰 프로젝트의 경우 프로그래밍을하지 않아도 프로그래머가 아니라는 의미는 아닙니다. 그리고 그것은 큰 프로젝트에만 적용됩니다. 2 인 또는 3 인 프로젝트에서 프로그래머는 일반적으로 데이터베이스의 일부 또는 전체를 책임집니다. 데이터를 안전하게 저장하는 것은 그의 책임입니다.
구성자

20

사용자가 일을 잃게하지 마십시오.

이것은 소리보다 어렵습니다. 작업은 "파일의 데이터"이상입니다 ... 사용자가 소프트웨어를 사용한 시간입니다.

예를 들어, 사용자가 30 개 필드 양식을 29 개의 유효 항목과 1 개의 유효하지 않은 항목으로 채운 경우 1 개의 유효하지 않은 항목에 대해 불만을 표시하기 위해 모든 유효 데이터를 지우지 마십시오 (허크, 유효하지 않은 항목도 지우지 마십시오). 아마 길고 약간의 수정이 필요하거나 사용자가 지우면 이전의 내용을 기억하지 못할 수 있습니다.)

명백하지는 않지만 중요한 예는 Windows와 실질적으로 다른 모든 "파일 관리자"소프트웨어가 잘못한 것입니다 .... 30 분을 조심스럽게 보내면 파일 세트를 선택하기 위해 Ctrl-Click'ing하고 실수로 클릭하는 대신 Ctrl- 클릭하면 이전에 선택한 모든 파일이 지워지지 않아 다시 시작할 수 있습니다.

그들이 잘못한 또 다른 것 ... 우연히 Ctrl-A 대신 (옆집에 Ctrl-S 대신), 파일에서 내 자리를 잃지 않아야하고 커서를 처음에 놓지 않아야합니다. 프로그램이 "잃어버린" "work"파일의 올바른 위치.

또 다른 : TortoiseSVN의 "커밋"대화 상자에는 긴 파일 목록이 있습니다. "커밋"을 누르기 전에 파일 목록을 내려 가서 각 파일을 두 번 클릭하여 두 번째 대화 상자에서 변경 사항을 볼 수 있습니다. 이 작업을 신속하게 수행하기 위해 때로는 키보드 만 사용 <Esc>하여 두 번째 대화 상자를 닫고 첫 번째 대화 상자로 돌아갑니다. 실수로 <Esc> 두 번 두드리면 첫 번째 대화 상자가 닫히므로 내가 어느 파일인지 잊어 버렸습니다.


5
서로 바로 옆에 키에 할당 된 것들에 반대되는 키보드 단축키를 만들지 마십시오 (예 : CTRL-C 및 CTRL-V, 붙여 넣을 때 복사 한 경우 또는 그 반대의 경우)
HLGEM

5
역설적으로 @HLGEM은 이것을 디자인 한 사람은 아마도 서로 옆에 두어 우리에게 호의를 베풀 었다고 생각합니다
JoelFan

4
그리고 그는 아니었다? 내 말은, 당신은 이맥스 나 그 밖의 모든 힘을 가지고 있지는 않지만, 손을 많이 움직이지 않고도 복사하여 붙여 넣을 수 있습니다.
compman

1
총 사령관을 사용하십시오. 마우스 오른쪽 단추를 클릭하여 선택하고 마우스 오른쪽 단추를 클릭하여 선택을 취소하십시오. 현재보고있는 폴더가 변경되는 동안 다른 곳을 탐색하거나 오랫동안 초점을 잃지 않으면 선택 항목을 잃지 않습니다.
구성자

1
마지막 예제 (Ctrl-A가 파일에서 내 자리를 잃어 버림)의 경우 최근에 많은 프로그램에서 작동하는 부분 해결 방법을 발견했습니다 ... Ctrl-Z, Ctrl-Y. .... 파일 내용을 입력 한 다음 "다시 실행"하면 내용이 이전과 동일하며 편집 위치에 있습니다. 이것은 내 커서가 실수로 Ctrl-A 바로 앞에있는 장소와 반드시 같지는 않지만 종종 충분히 가깝습니다 ... 물론 Ctrl-A에서 프로그램의 나쁜 행동을 변명하지는 않습니다 ... 일부 해결 방법 일뿐입니다
때리기

15

프로그래머는 자신의 프로그램이 실행될 시스템을 존중할 책임이 있습니다. 개발 및 테스트가 완료되면 프로그램은 의도 된 목적으로 사용되도록 배포되며 일반적으로 다른 사람들이 자신의 컴퓨터에서 프로그램을 실행해야합니다. 프로그래머는이 점을 명심해야합니다. 그의 프로그램은 다른 사람의 소유물이 아닌 다른 사람의 소유물 에서 실행되고 있으며 , 집을 소유하는 것처럼 참여하는 대신 집에서 손님으로 행동해야합니다.

예를 들어, 그의 프로그램은 :

  • 사용자의 동의없이 전체 설정을 변경하십시오. ( 공유 라이브러리 관리 문제 포함 )
  • 사용자의 동의없이 사용자 또는 다른 프로그램에 속한 데이터를 삭제하거나 수정합니다.
  • 사용자의 동의없이 자체적으로 업데이트됩니다.
  • 제거하기가 어렵습니다.
  • 스스로를 끄는 것을 어렵게 만듭니다.
  • 프로그램이 잘못된 라이센스 확인을 통과 할 수없는 경우 자체적으로 비활성화하거나 컴퓨터의 올바른 기능을 방해 합니다.
  • 시스템에서 실행되는 유일한 중요한 프로그램이라고 가정하고 그에 따라 시스템 리소스를 사용합니다. (물론 실제 단일 태스킹 머신이나 사용자가 무거운 풀 스크린 게임과 같이 합리적으로 실행될 것으로 예상되는 프로그램은 예외입니다.)
  • 사용자가 다른 프로그램에서 다른 작업을 수행하는 동안 팝업 창을 사용하여 사용자 앞에 뛰십시오. (저는 야후 메신저보고 있습니다!)

1
저는 사용자와 프로그래머 모두를 정말 좋아합니다. 도크에서 수신 거부 아이콘은 내가 만난 적이없는 사람들을 향한 가장 큰 분노의 원인입니다.
Agos

7
"사용자 동의없이 자체 업데이트"를 제외한 모든 것을 좋아합니다. Chrome이 새로 고침되는 방식을 찾았습니다. 새로운 기능 만 찾는 것이 좋습니다. 그러나 다른 프로그램이하는 방식은 혐오합니다. 당신, Java, 그리고 Acrobat Anything을보고 있습니다. 마 하지 내가 매일 당신을 업데이트하려면 나 한테 물어. 나는 한 번도 말하지 않았다.
구성자

2
프로그램이 자동으로 업데이트되는 경우 최소한 사용자에게 처음 동의를 요청해야합니다.
gablin

TortoiseSVN에 의한 또 다른 위반은 ... 그것으로 무엇이든했을 때 시스템이 멈추게됩니다
JoelFan

@SpashHit : 흠? 나는 매일 TortoiseSVN을 사용하고 나는 결코 눈치 채지 못했다 ...
Mason Wheeler

8

로부터 소프트웨어 장인을위한 선언 :

주목받는 소프트웨어 공예가로서 우리는 전문 소프트웨어 개발의 기준을 높이고 다른 사람들이 공예를 배우도록 돕고 있습니다. 이 사업을 통해 우리는 가치를 얻게되었습니다.

  • 작동하는 소프트웨어뿐만 아니라 잘 만들어진 소프트웨어

  • 변화에 대응할뿐만 아니라 꾸준한 가치 창출

  • 개인 및 상호 작용뿐만 아니라 전문가 커뮤니티

  • 고객 협업뿐만 아니라 생산적인 파트너십

즉, 왼쪽에있는 항목을 추구하면서 오른쪽에있는 항목이 반드시 필요하다는 것을 알았습니다.


8

거울을 들여다보고 프로그래머 자신의 최악의 특성을 인식하십시오. 그런 다음 매일 제거하십시오.

  1. 새로운 것을 배우지 않음
  2. 기술을 확장하려고하지
  3. 오래된 습관을 고수하면서 새로운 것을 위해 열려 있지 않음
  4. 업무의 질에 신경 쓰지 않음
  5. 업무의 질을 향상 시키려고하지 않음
  6. 열정이없는 9-5 인 근로자
  7. 사물에 대한 자신의 의견이 없음
  8. 의심없이 다른 사람들의 의견을 받아들이는 것
  9. 모든 것을 배웠다고 믿는
  10. 비판을 용납하지 않음
  11. 외부 입력을 듣지 않음
  12. 자아 중심적이고 모든 것을 알고있는 개인
  13. 부정적인 성격을 가지고 다른 사람들을 비판

+1이지만 이런 식으로 표현하면 상당히 부정적입니다.
dan_waterworth

1
나는 일반적으로 비록 당신이 여기서하고있는 것이기 때문에 # 13은 매우 아이러니하다는 것을 안다.
Dustin Rasener

6
  • 프로그래머의 책임은 프로그래머와 클라이언트 간의 계약에서 설정 한 요구 사항, 분석, 설계 및 사양의 요구를 충족시키는 소프트웨어를 만드는 것입니다.
  • 프로그래머의 책임은 경제적이고 신뢰할 수 있으며 실제 컴퓨터에서 효율적으로 작동하는 소프트웨어를 만드는 것입니다.
  • 프로그래머의 책임은 가능한 한 효율적이고 윤리적이며 최대한 정직하게 일하고 최대한의 전문성으로 행동하는 것입니다.

그 중 일부는 "프로그래밍 회사 "의 책임에 적용됩니다 .


4
  • 프로그래머는 사용 된 핵심 라이브러리 및 플랫폼을 알고 사용해야합니다.

특히 프로그래머가 다른 플랫폼 / 언어에서 온 경우. 핵심 라이브러리가 제공하는 무언가에 어려움을 겪고 있거나 무지로 인해 플랫폼 이점을 오용하려는 프로그래머를 찾는 것이 끔찍합니다.

  • 프로그래머는 자체 문서화 코드를 작성해야합니다

다른 사람이 사용할 수 있도록 코드를 문서화하는 것이 매우 중요하지만 유지 관리 측면에서 자체 문서화 코드는 문자 그대로 시간과 시간을 절약 할 수 있습니다.

예를 들어 다음을 비교하십시오.

// validates if is leap year
if(  year % 4 == 0 && (year % 100 != 0 || year % 400 == 0) ) { 
     doSomethingWithFebruary();
}

if( isLeapYear( year ) ) { 
    doSomethingWithFebruary();
}

4

프로그래밍은 기술이 아닌 직업입니다. 이것은 프로그래머가 자신의 분야에서 최신 도구, 기술 및 기술에 대한 최신 정보를 유지할 책임이 있음을 의미합니다.

이는 지속적인 학습과 훈련을 받거나 자신의 시간에 할 수 있도록 시간을 내기 위해 관리자에게 되돌아가는 것을 의미 할 수 있습니다.


2

1) 어떤 문제에 대한 해결책이 성능, 비용, 시간 및 품질 사이에서 균형을 이루게 될 것이라고 분명히 설명하십시오.

2) 노트 또는 테스트 계획을 발표하므로 관련 문서를 작성하십시오. (회사 유형 및 규모에 따라 문서가 다름)

3) 직무에 맞는 올바른 도구를 요청하십시오.

... 따라야 할 다른 사람들.


2

무엇이든 질문하십시오-프로그래머는 시스템이 수행하거나 처리해야 할 모든 것에 대해 문의 할 책임이 있습니다. 여기에는 사용자가 수행 할 수있는 작업 만 보여주는 다양한 사이트가 있기 때문에 사용자가 무엇을 바보 같은 질문으로 보는지 묻는 것이 포함될 수 있습니다. 매일 WTFSharkTank 는 다른 몇 가지 예가 있지만 확실합니다.


1

프로그래머는 제품 백 로그의 사용자 스토리를 작동 가능하고 선적 가능한 소프트웨어 증분으로 변환해야합니다.

그렇기 때문에 관리자는 모든 목표를 달성 할 수 있어야합니다.


1

여기 내 제안이 있습니다.

  1. 프로그래머는 직책의 기준을 낮추지 않기 위해 프로그래머의 권리 장전에 노출 된 근무 조건을 요구해야합니다.

( "프로그래머"의 경우 "주말 해커"가 아니라 "프로그래머"를 의미하므로 프로그래머가해야하는 모든 표준 사항이 암시됩니다.)


-1. 나는 책임이 권리를 "필요"하는 것이라고 생각하지 않습니다.
Craige

1

프로그래머 길드의 5 가지 교훈

1.) 매주 및 공휴일에 코드를 확인하십시오.

2.) 프로그래밍 커뮤니티의 요구를 제공합니다.

3.) 매년 적어도 하나의 프로그래밍 북을 읽는다.

4.) 매년 최소 한 번의 프로그래밍 회의에 참석하십시오.

5.) 실수에 대한 책임.


"매주 및 휴일 코드를 확인하십시오"? 당신은 매시간을 의미합니까?
구성자

@configurator 나는 이것을 프로그래머라고 부르는 최소한의 의미입니다. 그러나 더 많은 체크인은 메리
피터 터너

1

나는 목록에 "항상 모든 가정을 문서화"할 것입니다. :-)


아니면 ... 절대 가정하지 않습니까?
Stephen Furlani

2
@Stephen Furlani-불행히도 어떤 크기의 프로젝트에서도 불가능합니다.
John Parker

0

프로그래머는 바이러스를 쓰거나 다른 사람의 시스템을 해킹하는 것과 같이 비 윤리적이거나 불법적 인 것을 수행하거나 구현해서는 안됩니다 (보안상의 허점을 발견 한 후 피해자 에게이를 알리고이를 피하기 위해 할 수있는 일이 아닌 한) 악의적 인 해커가 악용하는 경우).

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