마감 시간이 길더라도 효율적인 코드를 작성하는 방법


28

결과물에 대한 마감일이 엄격한 많은 프로젝트가있는 환경에서 일하고 있습니다. 우리는 고객과 직접 대화하기 때문에 작업을 신속하고 빠르게 수행하는 것이 필수적입니다.

내 문제는 항상 내 마음에 오는 첫 번째 솔루션의 코드를 작성한다는 것입니다. 물론 그 순간 가장 좋았습니다. 그것은 항상 추악하게 끝나고 나중에 더 좋은 방법이 있지만 시간 제한으로 인해 바꿀 여유가 없다는 것을 알게되었습니다.

코드를 효율적으로 작성하고 정시에 제공 할 수있는 팁이 있습니까?


11
효율적인 코드 에 초점을 맞추지 말고 올바른 코드 에 집중 하십시오 . 그것은 더 많은 마일을 간다. 후속 릴리스의 효율성을 저장하십시오.
Jesse C. Slicer

답변:


23

코드를 유지 관리해야하는 경우 코드를 유지 관리하기 쉽게하려면 시간이 더 필요하므로 백엔드 비용이 절약됩니다. 즉, 유지 관리 가능한 코드를 요구 사항으로 만듭니다.

그들이 그것에 대해 신경 쓰지 않는다면, 나는 항상 더 나아지고 가능한 한 모범 사례를 통합하기 위해 최선을 다하는 것 외에 다른 것을 할 필요가 없다고 생각합니다.


3
그렇습니다. 실제로는 거의 작동하지 않는 것을 제외하고는 모든 것에 동의합니다. 당신의 상사는 X 날짜에 의해 무언가를 원하고 버지 않습니까? 너무 나쁘다, 당신은 여전히 ​​그것을 끝내야하거나, 아마도 다른 곳에서 일을 찾을 수 있습니다. 종종 옵션이 아닙니다.
Ed S.

4
@EdS. 다른 곳에서 일자리를 찾는 것은 항상 선택 사항입니다. "직업 유지"라고하며 시간과 노력이 필요합니다.
Spoike

17

좋아, 이것은 약간 미친 소리로 들릴지 모르지만 나는 그것이 작동한다고 맹세한다. 프로그래밍뿐만 아니라 창의성, 집중력 및 기억력 향상을위한 레시피입니다.

  • 잘 먹고
  • 꾀하다
  • 충분한 수면 (사람에 따라 7-9 시간)
  • 뇌가 흐릴 때마다 낮잠
  • 해결되지 않은 문제로 잠을 자십시오. 모든 것이 완성되어 하루를 끝내지 마십시오. 하나의 어려운 과제를 보류하십시오-잠재 의식은 놀랍도록 효과적입니다.
  • 편안한 옷을 입으십시오
  • 운동
  • 스도쿠 (프로그래밍되지 않음), 십자말 풀림, 수학 연습, 공간 퍼즐 등 심리적 운동을 할 시간을 가지십시오
  • 어떤 행동이 성능에 영향을 미치는지 알아보기 위해 객관적인 실험을 수행하십시오 (이 작업을 수행하려면 성능을 테스트하는 신뢰할 수있는 방법이 필요합니다).
  • 당신의 영적 건강에 참석하십시오
  • 코튼 팬츠
  • 당신의 성 건강에 참석
  • 가족과 친구들을위한 시간 만들기
  • 직업 이외의 분야 (음악, 요리, 스포츠 등)에 능숙하고 같은 일을하는 다른 사람들과 사귀기
  • 어떤 사람들에게는 애완 동물이 필수입니다

알기 전에 프로그래밍 생산성과 솔루션 품질이 크게 향상됩니다 (다른 영역의 개선은 말할 것도 없습니다).

출처 :

  1. 기적의 두뇌 : 두뇌 능력을 극대화하고, 기억력을 높이고, 기분을 높이고, IQ와 창의력을 향상시키고, 정신 노화를 예방하고 반전하십시오
  2. 정량화 된 자아
  3. 세스 로버츠 - 과학 미국에서

6
당신은 잊었다 : 카페인 없음.
Christopher Mahan

당신은 잊어 버렸습니다 : 코딩하는 동안 PORN을 보지 마십시오! 고맙습니다!
AmirHossein

9

반 직관적이지만 속도를 늦추어 야 할 수도 있습니다. 생각 나는 첫 번째 솔루션을 구현할 때 길을 따라 많은 추가 작업을해야합니다. "길 아래로"라는 말은 그날 오후 늦게까지 의미합니다. 자신을 위해 만든 문제는 개발하는 데 몇 달이 걸리지 않습니다. 당신의 선택권을 고려하십시오. 적게 입력하고 더 많이 숙고하십시오. 짧은 프로젝트 일지라도 코딩이 적을수록 실제로 속도가 빨라질 수 있습니다.

고객이 특정 산업에 클러스터 된 경우 재사용 가능한 구성 요소가있는 프로젝트를 빌드하십시오. 코드를 작성하지 않으면 코드를 작성하는 것보다 빠릅니다.

고객의 입장에서 볼 때, 이것은 " 빠르고 좋고 저렴하며 두 가지를 선택하십시오 " 같은 냄새가납니다 . 물론, 우리 모두는 즉시 원하는 것을 원하지만 고객이 장기적으로 가장 좋은지 고려해야합니다. 트레이드 오프를 설명하고 그들이 올바른 결정을 내 리도록 도와주십시오.


동의합니다. 코딩을 시작하기 전에 두세 가지의 가능한 접근법을 고려하십시오. 그런 다음 구현 용이성, 테스트 용이성, 효율성 및 확장 성의 조합을 바탕으로 선택하십시오.
Omega Centauri

8

다른 직업을 찾으십시오.

약 6 개월 후에 찾을 수 있습니다. 당신이 한 일에 자부심을 갖지 않는 해로. 또한 새로운 기술, 기술 또는 프레임 워크에 대해 배우는 데 시간을 소비하지 않았으므로 1 년 후에는 새로운 기술을 따라갈 수 없었습니다. 당신은 시작보다 1 년 후 시장에 비해 더 나쁜 프로그래머가 될 것입니다.

너무 많은 시간이 지나면 (예를 들어 2 년 이상) 품질 코드가 인정되지 않고 속도 만 빨라지는 이런 종류의 빠르게 진행되는 직업을 제외하고는 어디에서나 고용하기가 매우 어려울 것입니다.

즉, "실제 세계"학습 경험으로, 빠르게 진행되는 환경에 대해 이야기 할 것이 있지만 약 6 개월이라고 말할 것입니다. 충분하다. 그 외에도 몇 명의 채용 담당자를 만나고 더 나은 곳을 찾아야합니다. 당신은 훨씬 더 행복하고 정직 할 것입니다.


2
"모"는 무슨 뜻입니까? ?
다리우스.

이끼 = 개월. 두 문자 더 ...
gnasher729

나는 당신을 모르지만 페르시아어로 "mos"는 나쁜 의미를 가지고 있습니다. 엉덩이를 의미합니다. ;)
AmirHossein

3

고객의 관점에서 볼 때 코드 효율성은 그다지 중요하지 않으며 매우 비쌀 수 있습니다. 요즘 코드를 작성하는 데 소요되는 시간은 시간을 정당화하기 위해 CPU 시간을 절약해야합니다. 대부분의 프로그램에서 효율성은 그렇게 중요하지 않습니다. 그것이있는 사람들조차도 대부분의 코드가 그렇게 효율적일 필요는 없습니다. 선택의 여지가 있다면 코드를 유지 관리하기가 더 효율적이지 않고 솔루션을 쉽게 유지 관리하는 것이 좋습니다.

시작하기 전에 코딩 계획을 세우는 데 시간이 걸리면 솔루션을 평가하고 다른 방법을 고려할 시간이 생길 수 있습니다. 이를 통해 코딩 및 테스트 시간을 절약 할 수 있습니다. 종종 간단한 코드가 더 효율적이라는 것을 알았습니다.

필요한만큼 많은 행을 사용하여 코드를 깔끔하게 배치하십시오. 복잡한 코드는 옵티 마이저를 혼동시킬 수 있으며 코드가 느려질 수 있습니다. 최신 컴파일러는 코드를 최적화하는 데 매우 능숙합니다.

충분하면 충분하다는 것을 인정하십시오. 보다 효율적인 접근 방법을 찾으면 스스로 메모하십시오. 시간이 좀 걸리면 더 효율적인 디자인 몇 가지를 구현 한 디자인과 비교하십시오. 작은 것 (영향을받는 코드)과 큰 것 (그것들을 사용하는 프로그램)으로 시도하십시오. 이를 통해보다 효율적인 접근 방식이 적절한시기를 느끼게됩니다.

많은 사람들이 조기 최적화를 나쁜 접근 방식으로 생각합니다. 구현 비용이 많이들 수 있습니다. 불행히도 많은 조기 최적화는 실제로 최적화 한 코드만큼 효율적이지 않습니다. 코드를 올바르게 최적화하려면 변경 전후에 코드를 계측하여 효율성이 실제로 향상되었는지 확인해야합니다.

낮은 커플 링과 높은 응집력으로보다 깨끗한 코드를 작성하는 데 도움이되는 기술을 연구하십시오. 많은 경우 복잡성을 줄이면 효율성이 향상됩니다. 개발 중에 수정해야하는 버그를 최소화하는 데 도움이되는 기술을 사용하면 더 빨리 제공 할 수 있습니다. 이를 통해 대체 방법을 테스트 할 시간을 확보 할 수 있습니다.


1

Robert는 가장 중요한 측면을 다루었습니다.

코드가 6 개월 이상 살 수없는 환경에서 일했습니다. 내가 생각할 수있는 몇 가지 엄지 손가락 규칙이 있습니다.

  1. 오픈 소스 라이브러리, 타사 솔루션 등을 사용하십시오. 유지 관리 및 디버깅 작업이 줄어듦에 따라 학습에 도움이됩니다. 그러나 버그가 많은 라이브러리에 갇혀 있으면 운명입니다.
  2. 설계가 확장 가능한지 확인하십시오. 필수 요구 사항 : 대부분의 작업은 새로운 기능을 구축하지 않고 개선 사항으로 제공됩니다.
  3. 엄격한 테스트 계획을 세우십시오. 회귀 테스트를 보장하기 위해 QA를 받거나 테스트를 자동화하십시오.
  4. 스마트 도구-IDE, 코드 생성 유틸리티 등을 사용하십시오.
  5. 가능한 한 구성 가능하게 유지하십시오. (플립 쪽은 테스트 노력이 증가합니다)
  6. 타이핑 속도 향상 :-)

1

디자인 단계에서 동료대화하십시오 .

디자인과 디자인 방법에 대해 토론하고 결정을 면밀히 조사하도록하십시오. 똑똑한 것에 모두 동의하면 훨씬 더 건전한 디자인입니다.


1

연습. 좋은 코드를 작성하는 것이 제 2의 본성이 될 때까지 연습하십시오. 그런 다음 코딩을 더 빠르게 연습하십시오. 그런 다음 코딩을 더 잘 연습하십시오. 그리고 당신이 끝나면 ... 좀 더 연습하십시오.


0

내 문제는 항상 내 마음에 오는 첫 번째 솔루션의 코드를 작성한다는 것입니다. 물론 그 순간 가장 좋았습니다.

아니요, 그건 당신의 문제가 아닙니다. 미덕입니다. 가능한 가장 간단한 일을하고 있습니다. 그러나 리팩토링과 결합 된 경우에만 작동합니다. 시스템은 항상 솔루션 공간에 대한 현재의 이해를 표현하기 위해 지속적으로 수행 될 수 있습니다.

문제는 소프트웨어 시스템의 실제 수명주기 비용을 이해하지 못하는 경영진이 있다는 것입니다. 이 비용의 90 %는 초기 구현이 아니라 유지 보수 입니다. 테스트 및 리팩토링은 소프트웨어 시스템 의 수명주기 비용 을 줄이기위한 최고의 도구입니다 . 관리자가 이러한 일을하도록 허용하지 않으면 책임을지지 않으며 재교육을 받아야합니다. 아니면 새로운 직업을 찾아야합니다.

마지막으로, 내가 전에 말한 것처럼 *, no라고 말하는 법배워야합니다 .

* 매우 엄격한 일정으로 코딩하는 방법?


0

그들이 범위와 시간을 고정하면 마감 시간을 만들기 위해 할 수있는 모든 것은 품질 저하입니다.

이해 관계자에게 보이는 외부 품질 저하가 가능한 경우, 내부 품질에 영향을 미치지 않으면 서 코드베이스에서 사용자의 거주 성을 해칠 수 있습니다.

나는 자기 개선이이 상황에서 당신을 도울 것이라고 생각하지 않습니다. 그렇다면, 유감스럽게도, 일반적으로 주장입니다.

작업이 예상되면 문에 발을 들여 놓으십시오. 당신의 상사는 어떻게 당신이 무언가를하는 데 걸리는 시간을 어떻게 추정 할 수 있습니까?

상사 나 고객에게 선택권을 가져 오십시오. 아무 것도 전달하지 않고 품질을 떨어 뜨리는 것을 선택하는 것은 개발자 자신입니다. 늦은 프로젝트 / 작업은 매우 일반적이며 일반적으로 '관리'됩니다. 마감일이 다가 오면 사람들에게 경고하십시오.

아무 말도하지 않으면 스코프를 자르거나 마감일을 옮길 수 없습니다.

어떤 형태로든 품질을 훼손하려면 품질을 결정해야합니다. 그들에게 서로 무게를 지도록 물건을주십시오.

당신 만이 결정할 수있는 것들. 당신이 막 일을한다면 그러나 유지 관리가 매우 어렵습니다. 아마도 모든 경우에 작동하는지 확실하지 않을 수 있습니다. 당신이 한 사람에게 말하지 마십시오. 다시 해봐 매우 자주 그것은 당신이 결정할 수있는 결정입니다. 문제를 설명하는 데 시간이 많이 걸리거나 기술이 아닌 관리자가 있기 때문입니다.

때때로 그것은 직장 윤리의 일부입니다. 손을 씻지 않고 환자를 꿰매어 '시간이 없습니다'?

무엇보다도, 더 이상은 없다는 것을 기억하십시오.


0

웹 응용 프로그램을 작업하는 .Net 개발자입니다.

내가 시작한 것은-

C # 코드 인 경우 LinqPad에서 해당 코드를 먼저 작성하려고합니다 (가능한 경우).

Javascript 코드 인 경우 먼저 해당 코드를 작성하고 가능한 경우 jsfiddle / jsbin에서 테스트하십시오.

이것이 코드 품질에 도움이되지만 속도가 느려지지 않는다는 것을 알았습니다 (몇몇 경우에 더 빠르다는 것을 알았습니다).


이 게시물은 읽기 어렵습니다 (텍스트의 벽). 더 나은 형태로 편집 하시겠습니까 ?
gnat

@ gnat-제안 해 주셔서 감사합니다. downvote와 함께 제안을받는 데 도움이됩니다. 나는 지금 포맷이 더 좋기를 바랍니다.
user637563

전체 환경 외부에서 솔루션을 찾는 것은 이점이 있습니다. 전체 시스템에서 작동하지 않으면 문제가 나머지 시스템과 충돌해야한다는 것을 알 수 있습니다. 그런 다음 솔루션을 수정하여 충돌을 제거하면서 솔루션이 여전히 전체 환경 외부에서 작동하는지 확인할 수 있습니다. 당신의 정신이 줄을 내려 주셔서 감사합니다.
구부러진)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.