"빠른"프로그래머가되는 방법?


142

마지막 직업 평가에는 적시성이라는 한 가지 약점이있었습니다. 나는 이미 이것을 개선하기 위해 할 수있는 일을 알고 있지만 내가 찾고있는 것은 더 있습니다.

품질을 희생하지 않고 출력 속도를 높이기 위해 무엇을해야하는지에 대한 조언이나 조언이 있습니까?

타임 라인을 어떻게 추정하고 고수합니까? 단기간에 더 많은 일을하려면 어떻게해야합니까?

모든 의견에 감사드립니다.


96
그렇게한다면 직장에서 더 적은 시간을 보내십시오.
San Jacinto

52
이 글을 읽고 있다면 이미 너무 늦었습니다

32
나는 "뚱뚱한 프로그래머가되는 법"을 읽었다. 나를 웃게 만들어
marcgg

13
후속 질문을하겠습니다. "빠른 프로그래머"가 되고자하는 자신의 열악한 성과 (AKA, 기술 연마, 집중력 및 집중력 제거 (예 : SO) 등)의 결과이거나 개발 계획이 부족한 경우 견해 (일명, 제정신이 알고있는 사람이 1 개월이 걸리는 일을하도록 1 주일이 주어졌다) 각 항목 마다 솔루션 이 매우 다릅니다.

3
정답은 하나도 없으므로 커뮤니티 위키 질문으로 만들거나 질문을 닫으십시오.
Donal Fellows

답변:


190

컴퓨터를 꺼라. 연필과 종이를 잡아라. 디자인을 스케치하십시오. 동료들과 함께 검토하십시오. 그런 다음 코드를 작성하십시오.


9
또는 컴퓨터를
켜고

208
연필과 종이 또는 화이트 보드는 내가 사용한 대부분의 응용 프로그램보다 빠릅니다.
Thomas Owens

24
종이에 그것을하는 것은 마음에 집중합니다.

100
왜 visio 주석을 다운로드 할 수 없습니까? visio를 사용하지 않는 것은 개발 속도를 높이는 확실한 방법입니다!

52
어 ... Visio. "디자인 문서에서 Visio를 사용"하라는 메시지가 표시 될 때마다 먼저 종이에 스케치 한 다음 Visio의 모든 라인을 올바르게 만들기 위해 다음 이틀 동안 싸 웁니다.
Robert Fraser

149

몇 가지 아이디어 ...

  • 금도금을 피하십시오-요구 사항 만 요구하십시오 (요구 사항 측면에서)
  • 비즈니스 요구 사항을 이해하고 처음부터 올바르게 수행
  • 환경과 도구를 철저히 이해
  • 환상적인 타이피스트가되어 마우스 대신 키보드 단축키를 사용하십시오.
  • 반복적 인 접근 방식을 취하고 올바른 검사를 받기 위해 위생 검사를 작성하십시오.
  • 바퀴를 재발 명하지 말고 과거 작업과 다른 사람들의 작업 재사용을 고려하십시오.
  • 방해 요소를 제거하고, 이메일을 계속 확인하고, 외부를보고, 동료와 대화하는 등의 작업을하지 마십시오.
  • 과로하지 말고 휴식을 취해야 할 때를 인식하십시오

7
바퀴를 재발 명하지 않은 경우 +1 재사용 가능한 코드를 생성하는 방법을 배우십시오.이 코드는 다른 코드에 플러그를 꽂을 수 있고 소규모로 재 작성할 수 있습니다. (예 : 하드 코딩 대신 매개 변수가있는 기능)

34
"금 도금을 피하십시오"+1-이것은 완벽 주의자 / 항신 유지 경향으로 인해 마감일이 너무 많이 누락 된 원인이었습니다.
Dinah

7
타이핑-중요한 포인트. 타이핑하는 법을 배우지 않은 만난 코더의 수에 항상 놀랐습니다.
Paddy

2
산만 제거 +1 내가 알다시피, 그들은 주요 시간 먹는 사람입니다.

2
계획 프로젝트 측면에서 거시 개선 대신에 미세 개선을위한 팁 +1

132

"빠른"프로그래머가 되려는 당신의 소망은 칭찬 할 만합니다. 그러나 정시에 납품하지 않는다고해서 속도가 느리다는 것은 아닙니다. 프로젝트가 제대로 계획되지 않았 음을 의미합니다. "빠른"프로그래머가되는 것은 도움이되지 않습니다. 그것은 단지 마감일을 더 빨리 지나친다는 것을 의미합니다.

귀하 (및 귀하의 팀)는 다음 실수 중 하나 (또는 ​​모두)를 수행합니다.

  • 수행해야 할 작업을 과소 평가 ;
  • 계획하는 동안 큰 요구 사항 또는 아키텍처 부분이 누락되었습니다 .
  • 업무 견적과 캘린더 견적을 혼동 하고 회의 / 전화 / 기타 오버 헤드와 같은 것을 설명하지 않습니다.

위의 세 가지 중 하나를 해결할 수있는 여러 가지 방법이 있습니다. 그러나 당신이 그들 중 하나를 개선하기 전에, 일이 왜 진행되고 있는지 알아야합니다. 마지막 2 ~ 3 개의 프로젝트 추정값에 대한 사후 분석 을 수행하고 실제 소요 시간을 계산하고 추가 시간이 어디로 갔는지 파악하십시오.

다시 작성하겠습니다. 코드 작성 속도가 느려도 해당 사실을 고려하여 올바르게 계획 한 경우 마감일이 누락되지 않습니다 .


47
일부 개발자는 실제로 너무 느립니다. 문제가 될 수 있습니다.

12
예, 이것은 문제가 될 수 있지만 개인적인 문제입니다. 절대 프로젝트 나 팀 문제가되어서는 안됩니다. 다시 말해, 그것은 자신의 간병인에게 영향을 줄 수 있지만 프로젝트 일정에는 영향을 미치지 않아야합니다.
Franci Penov

12
'제 시간에 배달하지 않는다고해서 속도가 느리다는 것은 아닙니다. 프로젝트가 제대로 계획되지 않았다는 의미입니다.'-잘못된 인수에 대한 텍스트 상자 설명입니다. 정시에 인도하지 못하는 데에는 여러 가지 이유가 있습니다. 그 이유 중 하나는 느리기 때문일 수 있습니다.
육체

15
@flesh-느리다는 것을 알고 있다면 그 사실을 설명하기 위해 일정을 계획하지 않는 이유는 무엇입니까? 즉, Usain Bolt만큼 빨리 달릴 수 없다는 것을 알고 있다면 9.7 초에 100m를 달릴 계획입니까?
Franci Penov

5
@Kibbee-이 상황에서는 기능을 자릅니다. 당신은 그것이 불가능하다는 것을 알고 기적을 희망하는 특정 시간에 특정 일을하겠다고 약속 할 수 없습니다.
Franci Penov

89

실제로 편집자를 배우십시오. IDE를 사용하는 경우 IDE가 제공하는 모든 기능을 사용하고 있는지 확인하십시오. 선택한 편집자를위한 키보드 단축키를 배우려면 치트 시트를 받으십시오. 쉘을 사용하는 경우 일반적으로 사용되는 디렉토리에 대한 바로 가기 설정


3
이것은 참으로 때로는 극적으로 생산성을 높일 수
sshow

6
실제 코드 작성은 개발자 작업의 일부입니다. IDE를 완벽하게 배우는 데 시간을 보내는 것은 포인트 최적화입니다. 최적화에 대한 의견을 알고 있습니까? - "먼저 측정 한 후 병목 현상을 최적화하십시오".
Franci Penov

1
나는 이것을 전혀 보지 못한다. 입력 시간을 50 % 줄이면 하루에 얼마나 시간을 절약 할 수 있습니까? 내 경험상, 실제로 작성하는 것과 비교할 때 대부분의 시간을 생각하고 / 테스트 / 평가 / 약간 수정하는 등의 시간을 소비하고 있습니다.

4
생각하지 않고 IDE를 탐색 할 수 있습니다. 작은 회색 버튼으로 이동하는 것과 같이 다른 작은 회색 버튼 옆에있는 것과 같이 고의적 인 노력이 필요한 것은 생각을 방해하여 속도를 늦 춥니 다. 모션없이 내 손끝에서 ctrl-n을 사용하는 것이 큰 순이익입니다.
Paul McMillan

5
같은 줄을 따라 : 일반적인 '핫'키를 배우십시오. 예를 들어, 많은 Windows 프로그램에서 ... 복사 : Ctrl + c 잘라 내기 : Ctrl + x ( 'x'는 열린 가위처럼 보입니다) 붙여 넣기 : Ctrl + v (위의 'c'및 'x'바로 옆) 줄의 시작으로 이동 : 홈 줄의 끝으로 이동 : 종료 문자 (문자가 아님)로 커서 이동 : [Shift] + Ctrl + 왼쪽 또는 오른쪽 문서의 맨 위로 이동 : Ctrl + 홈 문서의 끝으로 이동 : Ctrl + End 등

38

"품질을 떨어 뜨리지 않고 출력 속도를 높이기 위해 무엇을해야하는지에 대한 조언이나 조언이 있습니까?"

많은 사람들이 (a) 단순하고 (b) 신뢰할 수 있고 (c) 정확한 것을 희생하여 "궁극적 인"품질을 추구합니다.

개발 속도를 높이는 가장 중요한 방법은 작업을 단순화 하여 가능한 한 간단하게하는 것입니다.

정시 배송에 문제가있는 대부분의 사람들은 길을 너무 많이 전달하고 있습니다. 그리고 주어진 이유는 종종 바보입니다. 종종 실제 요구 사항이 아니라 인식 된 요구 사항 일뿐입니다.

많은 사람들이 고객이 "무엇을 기대하는지"말해 준다고 들었습니다. 이것은 잘못된 정책입니다.

가장 간단한 것을 만드십시오. 고객에게 더 많은 것이 필요하면 더 많이 구축하십시오. 그러나 가장 간단한 것을 먼저 빌드하십시오.


"많은 사람들이 (a) 단순하고 (b) 신뢰할 수 있고 (c) 정확한 것을 희생하면서"궁극적 인 "품질을 추구합니다." 당신은 그것에 그것을 떠날 수 있었고 나는 그것에 투표했을 것입니다.
corymathews

"간단하고 단순화하십시오." ~ 헨리 데이비드 소로

2
그렇다 ... 이것은 조기 추상화를 의미한다. 무언가 구현이 하나만있는 경우 인터페이스로 만들지 마십시오.
Robert Fraser

3
나의 마음에 드는 따옴표 중 하나는 ~ 의역, 알버트 아인슈타인 (Albert Einstein) "가능한 한 간단하지만 간단하게 뭔가를 만들어"이 상황에서 적절한
NEMI

많은 프로그래머조차도 제대로 이해하지 못하는 것은 단순함을 유지하십시오. "초기 최적화는 모든 악의 근원"이라는 함정에 빠지기 쉽습니다. 일반적으로 가장 간단한 프로그램이 가장 빠르거나 최고 품질의 프로그램입니다.

32

코드를 완벽하게 연마하지 말고 작동 시키십시오. 그것이 비즈니스가 기대하는 것입니다.

그러나 종종 속도를 높이면 품질이 저하됩니다.


10
나는 그것이 "작동하게"하고 시간이 허락한다면 그것을 완성시키는 것을 허락한다면 제안 할 것이다!
Preets September

28
-1 : 품질을 희생 할 이유가 없습니다. 언제든지 기능을 희생 할 수 있습니다.
S.Lott

6
나는 그것이 반복적으로 일어나는 것을 보았다. 개발자는 지정된 기능의 마지막 1 %에 매달린 다음 나머지 기능을 완료하려고 할 때 캐치 업을하고 뒤쳐집니다. 먼저 예상되는 것을 완료 한 다음 돌아가서 닦으십시오.

3
종종 품질 향상은 속도 향상을 의미합니다. 처음부터 제대로 이해하는 데 약간의 시간이 걸리면 테스트 및 디버깅에 더 많은 시간을 절약 할 수 있습니다.
David Thornley

2
하나의 기능에 갇힌 경우 다른 작업을 수행하십시오.

29

재사용-나는 이전 프로젝트에서 영리한 비트를 제거하려고 노력하므로 향후 벤처에서 다시 사용할 수 있습니다. "언젠가 다시 사용할 수 있을까요?"


처음에는 시간이 더 걸릴 수 있지만 장기적으로 더 빠른 프로그래밍을위한 완벽한 마인드 상태입니다.

8
+1 :하지만 다른 날 다시 사용할 수 있도록 무언가를 일반화하고 추상화하는 데주의를 기울였습니다. 그 날 마감일을 놓치거나 버그를 수정하는 데 걸리는 시간을 두 배로 늘 렸습니다. "아마도"나중에 시간을 절약하십시오.
Steven Evers

2
"트릭의 가방"을 갖는 것이 중요합니다. 이것이 당신을 위해 직업 문제가되고 있다면, 재사용 할 수있는 조각을 개발하는 데 자신의 시간을 투자 할 가치가 있습니다 (작업하는 도메인이 코드 재사용이 가능하다고 가정).

24

간단하게 유지하십시오.

TDD를 사용하는 경우 " 빨간색, 녹색, 리팩터링 "을 따라야합니다 .

  1. 실패한 테스트를 작성하십시오 ( 빨간색 ). (기능에 따라 아직 코드에없는 기능이 있습니다.)
  2. 끔찍한 코딩 범죄를 저지르면 테스트가 통과됩니다 ( 녹색 ). 필요한 경우 하드 코드.
  3. Refactor , 아마도 테스트를 잠시 중단하지만 전반적인 디자인 개선.

3
TDD를 수행 할 때는 테스트 당 빨간색 / 녹색 보고서를 생성하여 테스트 통과 여부를 나타내는 테스트 실행자가 있습니다.

2
@ Konstantin : TDD를 사용하여 일부 코드를 작성하면 20 % 더 오래 걸릴 수 있지만 더 나은 코드를 생성하고 장기적으로 시스템이 커지면 변경 속도는 거의 동일합니다. TDD는 기술 부채를 피하여 속도를 늦추는 데 도움이됩니다.

3
타이핑은 프로그래밍에서 결코 느리지 않았습니다. TDD로 더 많이 입력해야하더라도 속도가 느려지지는 않습니다. 테스트를 먼저 작성하면 구현 방법 을 생각하기 전에 필요한 것에 집중할 수 있으므로 속도가 빨라질 수도 있습니다 .

1
경영진이 핵심 개념을 이해하지 못하면 설명해야합니다. 예를 들어 martinfowler.com/bliki/TechnicalDebt.html

3
@Konstantin, "개발"을 코드 설명을 작성하는 행위로 간주하면 동의합니다. 그러나 패키징, 빌드 노트 준비, 배포, 테스트, 결함 보고서 생성, 결함 검토 및 우선 순위 지정, 작업 할당, 조사, 디버깅 및 수정 및 프로세스 다시 시작을 포함하는 "개발"을 고려하는 경우 15 분 쓰기 단위 테스트는 하루 1000 배 이상의 고객 신뢰 상실을 능가합니다.

22

모든 언어 / 라이브러리 설명서를 컴퓨터에 로컬로 다운로드 한 다음 네트워크 케이블을 분리하거나 Wi-Fi를 끄십시오 .

여기서 웃기려고하지 않습니다. 이것은 정말 나를 도와줍니다!


저도 그렇게 해요.

온라인 문서 및 문제 해결 검색은 어쨌든 과대 평가되었습니다.

방화벽을 설치하고 거의 모든 웹 액세스를 차단하도록 구성하십시오 (MSDN과 같은 일부 도메인은 예외)
finnw

나는 이것을 정말로 고려하고있다 (이 코멘트 증거를 충분히 남겨둔 사실)
Ikke

그리고 잃어? 지옥 아니

20

스택 오버플로를 너무 오랫동안 읽었을 때 주목하십시오. "컴파일"변명은 오래 동안 만 작동합니다. :)


15
컴파일러의 속도에 따라 다릅니다. 아마도 "솔루션"은 더 느린 컴파일러를 찾아 128MB 메모리가있는 Pentium 2에서 실행하는 것입니까? :-)
Franci Penov

@Franci, 아마 플로피 디스크에 스왑 공간을두기도합니다. 또는 2 개는 RAID입니다.

20

작업을 너무 자주 전환하지 마십시오. Mylyn 과 같은 도구 를 사용하여 작업을 관리 하더라도 산만 함과 작업 전환으로 인해 하루가 걸릴 수 있습니다.

세분성 (예 : 30 분)을 파악하고 해당 작업과 관련된 작업 만 수행하십시오. 다른 것 (새로운 버그 보고서, 다른 문제에 관한 이메일, 관련없는 절차 문제)은 적어도 "다음 체크 포인트"까지 지연됩니다. 당신이 빨려 들어 가지 않도록 이메일 알림 팝업을 비활성화하십시오.

팀에 친구가있는 경우, 실제로 일이 녹아 내고 즉각적인주의가 필요한지 알려주는 친구에게 특히 효과적입니다.


10 분 내에 전자 메일에 대한 응답을 기대하는 보스가있는 경우 작동하지 않습니다.
finnw

이것은 실제로 매우 관련이 있습니다. 합리적으로 가능한 한, 자신이 이기적인주의를 끄는 사람이되어 원래의 임무를 수행하지 않도록하십시오. 자신이 다른 방향으로 끌리게된다면, 결과는 무언가 대신 아무것도 달성하지 못하는 것입니다.
AndyUK

14

가장 좋은 방법은 처음입니다. 그것이 시작하기 전에 잠시 멈추고 그것에 대해 생각해야한다는 것을 의미한다면, 그렇게하십시오. 시간의 90 %를 작동합니다.


2
+1 이것은 사실입니다. "완벽"해야한다는 의미는 아닙니다. 우리 모두 실수를 할 것입니다. 그러나 우리가 처음으로 최선의 방법으로 일을하면 그러한 실수의 결과는 훨씬 작아 질 것입니다.

+1-좋은 프로그래머와 나쁜 프로그래머의 차이가 빠르지 않은 곳을 읽는 것을 기억합니다. 차이점은 훌륭한 프로그래머가 더 많은 코드를 유지한다는 것입니다.
Jason Baker

그것이 나의 좌우명입니다. 처음에 올바른 방법으로하십시오. 사양에 따라 올바르게 코드를 작성하지 않았으므로 항상 코드를 수정하고 수정해야하는 습관을 들지 마십시오.

"올바른 시간이 없다면 어떻게 할 시간이 있습니까?"
Alex Feinman

당신은 결정 할 수 있도록 실제 소프트웨어에서 경험을해야 할 수도 있습니다 가장 좋은 방법. 이 경우 처음에는 제대로 얻을 수 없습니다.

14

2
이것은 좋은 보너스입니다 ...하지만 전반적으로 많은 영향을 미칠 것이라고는 생각하지 않습니다. 코드를 입력하는 것이 시간이 가장 적게 소요될 수 있습니다. (예, 따라 가서 링크를 읽었습니다. 나는 그에게 동의하지 않습니다.)

코딩의 제한 요소가 입력 속도가 빠르면 잘못된 추상화 수준에서 작업하고있을 것입니다.
Pete Kirkham '10

+1. 좋은 링크, 끝까지 읽어 사람들을 위해 좋은 기사) 내가 잘 입력했지만, 그것은 프로그래머 드보락 자판 배열로 전환 내게 영감을 en.wikipedia.org/wiki/Dvorak_Simplified_Keyboard (하지만 전환 ' "와 -_ 키를 Microsoft 키보드 레이아웃 작성자와 함께 사용할 수 있음) 곧 입력이 훨씬 빨라질 것입니다. : 참조 : typematrix.com/dvorak
Roman Boiko

12

나는 내일한다 .

완료 하기도 매우 도움이됩니다.

어쨌든 짧은 관심을 가지고 있기 때문에이 책들은 내 초점을 유지하는 데 도움이됩니다.


12

연습과 노력.

시간과 노력을 들여야합니다. 사용하는 도구, 속도 및 창의력에 따라 더 편안하고 자신감을 가지게됩니다.

특정 기술을 향상 시키려면 연습을 디자인하는 데 도움이 될 수 있습니다. 속도가 디자인 단계에있는 경우 온라인에서 작동 할 디자인 문제를 찾으십시오. 같은 운동을 다시 실행하면 더 빨리 연습하고 연습 할 수 있습니다. 나는 개인적으로 순전히 프로그래밍 속도를 연습하는 TopCoder의 알고리즘 연습 을 좋아 합니다. 그들은 디자인 과제도 있지만 시도하지 않았습니다.


연습은 종종 프로그래밍에서 과소 평가됩니다. 이것은 상위 5 개 답변 중 하나 였을 것입니다.

와. 왜 더 높지 않은지 모르겠습니다. 나는 이것을 시도하지 않았습니다. 나는 그것을 줄 것이다!
David

11

The Zone에 대해 배우고, 자신을 받아들이는 방법을 배우고, 없을 때 인식하는 방법을 배우십시오.

일단 "영역 내"에 있으면 매우 생산성이 높고 코드가 나옵니다. 종종 하루나 이틀 또는 3 일 동안 코딩을 수행 할 수 있습니다. 그러나 나는 종종 그 장소에 가기가 어렵다는 것을 알았습니다. 나는 다른 것들에 의해 정신이 산만 해져 있습니다 (예 : 스택 오버플로).

어떤 영역 에서 할 일할 수 있는지를 인용 하십시오.


존에 있다면 점심을 건너 뛰거나 늦게까지 .. MMMmm. 침 흘리기

10

IDE와 프레임 워크를 잘 알고 있습니다. 모든 작은 일에 대해 Google을 사용하려면 시간이 걸립니다.


그러나 Google에 필요할 때를 빨리 파악할 수 있어야한다는 점도 중요합니다.

9

1
내가 그것을 표명하기 위해 이것을 편집하십시오, 그것은 현재 "너무 오래되었습니다".
kmarsh

1
그래도 그것을 사용해야하는 것에 크게 의존합니다.

8

개발을 시작하기 전에 :

  • 사서함에서 로그 아웃
  • 모든 IM 클라이언트 끄기
  • 정중하게 동료에게 집중할 시간을달라고 요청하십시오
  • 물론 인터넷 서핑을 중단하십시오

당신이 중단 될 때마다, 당신의 생각으로 다시 돌아 오는 데 시간이 걸리므로 속도가 느려집니다. 나는 각 중단마다 인간의 마음이 중단 이전의 사고 과정으로 되돌아가는 데 5-10 분이 걸린다는 수치를 들었습니다. 중단 당 많은 시간이 걸리므로 하루 종일 낭비하는 데 많은 시간이 걸리지 않습니다.

우리 회사의 직원들은 실제로 일정에서 시간을 차단 한 다음 매일 두 시간 동안 빈 회의실로 옮겼습니다.


7

개발 IDE를 안팎으로 배우십시오. 단축키를 배우십시오. 마우스 사용을 줄이십시오. 나는 이것이 나를 위해 많은 시간을 절약한다는 것을 알았습니다.


7

동료보다 느리거나 추정치가 더 낙관적입니까?


7

소프트웨어를 더 빨리 생산하기 위해 최선의 방법은 런타임 API를 최대한 배우는 것입니다. LINQ 확장이 수행 할 때 목록 논리를 입력하지 마십시오. 바인딩이 작동 할 때 이벤트 리스너를 많이 만들지 마십시오.

추정에 이르기까지, 그것은 경험과 함께 제공됩니다. 더 나은 견적을 찾는 데 도움이되도록 견적 소프트웨어를 사용할 수 있습니다.

개인적으로 저는 주니어 레벨 개발자와 함께 초기 추정치에 관계없이 2를 곱한 다음 두 배로 늘 렸습니다. 이것은 모든 학습, 회의, 낭비 된 시간 등을 설명 할 것입니다. 상급 레벨의 개발자는 추정치보다 2 배 정도 일하는 경향이 있습니다.

종종, 당신의 추정이 틀렸다면 질문은 아닙니다. 당신의 견적이 모든 올바른 것들을 설명했습니까? 코딩 노력 또는 일정 시간 측면에서 예상치와 타임 라인을 제공합니까? 하루 중 항상, 그리고 실제, 생산적인 코딩 대 회의, 학습, 디버깅 등의 양을 생각하십시오.


3
"... 2를 곱한 다음 두 배로 늘리십시오." 시간을 절약하는 데 관심이

LOL-- 당신이 무슨 말을하는지 알아요. 그러나 "곱하기 4"라고 말하는 것과는 달리,이 미끄럼이없는 경우가 종종 있습니다.

7

암시 될 수있는 두 가지 사항이 있지만 여기에 나와있는 답변 중 아직 보지 못한 생산성 향상은 다음과 같습니다.

  • 일종의 빌드 및 배포 스크립트를 사용하십시오. 응용 프로그램 서버를 컴파일, 배포, 다시 시작하면 시간이나 집중력이 떨어지지 않으며 한 번 클릭하면됩니다.

  • 일종의 버전 관리가 필요합니다. 변경 사항을 롤백하지 않고 코드를 작성하는 것은 계란을 밟는 것과 같습니다


7

몇 가지 아이디어가 떠 오릅니다.

  1. 추정치에 대한 다른 의견 얻기- "이 시간대에 이런 종류의 기능을 수행 할 수 있다고 생각하십니까?"와 같은 질문을 할 수있는 다른 개발자가 있습니까? 다른 사람의 의견은 누군가가 견적을 내릴 때 놓친 많은 것들을 주목할 수 있기 때문에 어떤 경우에는 정확성에 도움이 될 수 있습니다.

  2. 견적 기술 연마-견적에서 벗어난 이유와 왜 벗어난 이유를 추적합니다. 다른 작업 항목으로 인해 마감일이 지났습니까? 무언가가 얼마나 복잡한 지 일관되게 과소 평가하고 있습니까? 실용적이지 않을 때 전체 타임 라인을 제공합니까? 예를 들어, 프로토 타입을 만드는 데 몇 주가 걸리고 다른 작업을 다시 평가해야하는 것은 모호합니다. 이 작업을 수행하면 해당 기술을 구축하는 데 가장 도움이 될 수 있으므로 x 시간이 걸릴 것이라고 말하면 반복해서 반복했기 때문에 자신감을 가질 수 있습니다. 이것을 나타내는 다른 방법은 단지 연습, 연습, 연습입니다.

아마도 당신이 이미 이것들을 고려 했음에도 불구하고, 나는이 아이디어를 고려하지 않았을지도 모르는 다른 사람들을 위해 이것을 언급하는 것이 가치 있다고 생각했습니다.


7
  1. 내부와 외부의 기술을 알고 있습니다.
  2. 중지! 생각한다! 가다!
  3. 발생할 수있는 모든 것을 설계하지만 실제로 요청 된 사항 만 구현하십시오.
  4. 키스-간단한 바보 유지
  5. 너무 복잡해지면 아마도 잘 생각되지 않습니다. (2와 4로 돌아가십시오)
  6. 5에 갇히지 마십시오. 처음부터 시작하여 지불하는 경우가 많습니다 (2 및 4로 돌아 가기).
  7. 1로 돌아갑니다.

7

여기서 핵심 단어는 "적시"라고 생각합니다. 그들은 당신이 너무 느리다고 말하지 않았고, 당신이 적시에 아니었다 고 말하였습니다.

프로젝트 관리에서 관리자는 작업 항목이 언제 정확하게 완료 될지 추정 할 수 있어야합니다. 귀하의 노력이 적시에 이루어지지 않은 주된 이유는 일정에 따라 배송되지 않고 예정보다 훨씬 늦게 배송 된 품목이 많기 때문입니다.

적시성을 향상시키기 위해 기술, 경험 및 도메인에 따라 특정 작업 항목을 완료하는 데 걸리는 시간을 이해하는 데 더 많은 시간을 할애 할 수 있습니다. 이를 통해 프로젝트 관리자에게 더 나은 견적을 제공 할 수 있습니다. 여기서 핵심은 "더 나은"것입니다. 퍼지 팩터로 모든 것을 채우면 더 자주 제 시간에 제공 할 수 있지만 실제로 노력하고 싶은 것은보다 정확한 추정치입니다.

이것이 실제로 문제인지 확인하기 위해 관리자와 논의 할 것입니다. 그렇지 않으면, 예전보다 절반으로 유망한 것을 두 배나 빠르게 프로그래밍 할 수 있고, 추정치에는 여전히 같은 오류 요소가 있기 때문에 적시성에 대한 비판을받을 수 있습니다.


"... 기술, 경험 및 영역을 고려하여 특정 작업 항목을 완료하는 데 걸리는 시간을 이해하는 데 더 많은 시간을 소비하십시오." -> 맞습니다. 그러면 범위를 조정하고 더 많은 시간을 절약 할 수 있습니다.
Jim G.

또한 관리자가 주변 사람들에게 잘 어울리는 데 도움이됩니다. 또한 프로젝트와 동기화하여 마케팅과 같은 지원 자료를 완성 할 수 있습니다.
Tom leys

7

안정을 유지하십시오.

약간의 기능을 구현하고 엔드 투 엔드가 작동하는지 확인하십시오. 그런 다음 새로운 기능을 추가 할 때 작동 상태를 유지하십시오. 예, 이것은 부분적으로 TDD 연습이지만 TDD를하지 않더라도 의미가 있습니다.

근거는 내가 안정적 적이 코드의 이주와 함께 사람을 본 적이 때마다, 항상 다른 이주 소요입니다 얻을 이 안정적.

안정 을 유지 한다면 , 그 불확실성을 제거하고 필요에 따라 마감 기한을 좁힐 수있는 방법을 제공하십시오.

명백한 반박 론은 최종 작업이 아닌 코드를 안정화하는 추가 작업을 수행하므로이 작업을 한 번만 쓰는 것보다 시간이 더 걸린다는 것입니다. 나는 이것을 잠시 사지 않는다. 작동하는 코드가 있으면 5 줄을 변경하고 무언가가 끊어 지면 중단이 발생한 위치를 정확히 있습니다.

작동하지 않은 10,000 줄의 코드가 있고 중단을 찾아야하는 경우 검색 할 코드가 많이 있습니다.

지속적으로 안정적인 FTW 인 시스템의 작은 증분 변경. 빨리 가려면 천천히 가십시오.


7

저에게있어 생산성을 높이려면 달성하려는 목표와 목표 달성 방법에 대한 명확한 아이디어가 필요합니다.


1
노르웨이의 시골을 통과하는 30 분의 자전거 타기는 마음을 깨끗이하고 창의적인 과정을 진행하는 데 꽤 좋습니다.

6

여기저기서 많은 곳에서 거의 모든 대답이 죽었다고합니다. 또는 적어도 나는 그것을 들었다고 들었다. IDE를 배우고, 더 빨리 타이핑하고, 프레임 워크를 사용하고, 코드 생성 등을 배우십시오. 물론 이런 것들이 도움이 될 것입니다. 그러나 이러한 질문을하고 스택 오버플로와 같은 사이트를 자주 방문하는 프로그래머 유형은 이미 알고있었습니다 . 당신은 단지 여기에 반복하고 싶었습니까, 아니면 조금 환기시키고 싶습니까?

그러나 우리가 그 상태에 도달 할 수 있다면 어떨까요? 이 모든 제안을 마스터한다는 의미입니까? 그러면 어떻게 될까요? 잘. 타임 라인이 더 줄어드는 것 같습니다. 그리고 다시 품질에 대한 인식으로 돌아갑니다. 우리의 기술은 확실히 수십 년에 걸쳐 발전하고 점점 더 생산적이되었습니다. 그러나이시기에 품질이 향상 되었습니까 (물론 초기 단계는 제외)?

제 대답은 간단합니다. 고품질 소프트웨어는 시간이 걸립니다 ! 하나만 다른 것 (품질 / 속도)으로 교환 할 수 있습니다. 그러나 그렇습니다. 그러나 우리는 그 절충이 종종 규모의 속도로 끝나는 정도에 대해 정직하지 않다는 것을 알고 있습니다. 그리고 우리는 프로젝트 초기에 더 큰 거짓말 쟁이입니다!

나는 당신이 여기에 잘못이 없다고 말합니다 . 문제는 사람들이 품질 소프트웨어가 얼마나 오래 걸리는지에 대한 인식 입니다. 우리는 관리자 나 심지어 우리가 추측하는 타임 라인의 유형으로 양질의 소프트웨어를 만들 수 있다고 믿습니다. 우리는 양질의 소프트웨어를 만들지 않습니다 . 우리는 응용 프로그램의 특정 구석에서 작동하지만 때로는 품질이 떨어지는 소프트웨어를 작성합니다.

그래서 우리는 이것에 대해 무엇을 할 수 있습니까? 우리는 각 프로젝트에 대한 투자를 두 배 또는 세 배로 늘려야한다는 것을 상사에게 설득시킬 수는 없습니다. 나는 예를 들어 리드를 말한다. 부수적 인 프로젝트로 진정으로 훌륭한 소프트웨어를 만듭니다. 자신의 시간을 투자하고 타협하지 마십시오. 항상 당신이 진행하는 방법에주의를 기울이십시오. 예상치 못한 시간을 들여야했던 분명히 관련없는 작업을 기록하고 정당화 할 수 있는지 확인하십시오. 이 작업을 다른 모든 프로젝트와 대조하십시오. 수 잔인하게 정직자신과이 분석의 모든 측면에서 "실제"프로젝트에서 품질 소프트웨어로 수행 한 추가 작업을 무시할 수 있습니까? 그러나 아마도 당신의 시도는 실패했을 것입니다. 이유가 무엇입니까? 핵심 기능을 수행하기 위해 지루해하고 서두르셨습니까? 나는 아직 나 자신과 같은 일을하고 있기 때문에 의심의 여지 없이이 생각을 끝내야합니다. 그러나 나는 그것을 실제로 시도하려고합니다. 계속 게시하겠습니다 :).

마지막으로, 나는 (모두는 아니지만) 대부분의 성능 평가가 왜곡되고 특별하게 조작된다고 생각합니다. 품질과 속도를 100 %로 조절할 수 없습니다. 상사는 조직이 정한 표준에 따라 점수를 매겨 야합니다. 품질과 속도의 균형에 대한 조직의 표준. OrangeSoft Inc.는 33 %의 품질과 66 %의 속도를 기대한다고 상상해보십시오. 따라서 단위 테스트의 3 분의 1을 가진 코드를 작성하는 경우 속도가 빠르고 배달 시간이 단축되는 코드를 작성하면 리뷰에서 거의 100 %의 점수를 받아야합니다! (이것은 꽤 거친 비유이지만 요점을 얻습니다). 그러나 대신 밥은 코드를 매우 빠르게 작성하지만 악명 높은 버그입니다. 그의 성능 검토에서 그는 품질에 대해 3/5, 속도에 대해 5/5를 얻습니다. 반면에 Carol은 코드를 훨씬 느리게 작성하지만 훨씬 적은 버그를 생성합니다. 그녀는 품질은 5/5, 속도는 3/5입니다. 밥과 캐롤은 자신의 인상에 도킹됩니다. 모든 직원이 완벽한 점수를받을 수 있습니까? 이건 공정한가요?


5

내가 사용하는 기술은 진화 적 프로토 타입입니다

더 많은 정보를 얻으려면 Google을 사용할 수 있지만 무언가를 빨리 생산해야하는 경우 갈 수있는 유일한 방법입니다. 또한 사용자가 자신이 좋아한다고 말하면 완료됩니다 (... 및 문서 작성을 시작할 수 있음).

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