코드 빠른:프로에서 53 팁

당신이 빨리 소프트웨어를 제공 할 수 있도록 빠른 프로그램하는 방법을 알고 싶으십니까? 물론,누가하지 않습니다? 인터넷은 수백,수천,심지어 수백만 명의 개발자를위한 팁으로 가득합니다. 문제는,거기 누구 든 지 읽을 시간이 있다,그래서 당신을 위해 그들을 삶은 했습니다 보다 훨씬 더 밖으로.

여기에 내가 찾은 최고의 조언을 나타내는 53 가지 팁이 있습니다. 그러나 내가 찾은 것을 말하기 전에”더 빠른 프로그래밍”과”팁”이 무엇을 의미하는지 설명해야합니다.”

“빠른”

의 문제는 더 빨리 코딩하려면 효율적이어야합니다. 이 생각에 도구를 입력에서 모든 것을 의미 할 수 있습니다. 그러나 프로그래머로서의 대부분의 작업은 타이핑이나 컴파일이 아니라 생각하고 있습니다. 더 빨리 생각하기 위해서는 더 많은 패턴과 관계를 배워야합니다. 이것이 경험을 쌓는 지식과 지혜입니다. 당신이 빨리 갈 필요가 시간이 지남에 따라 변경됩니다.

“팁”의 문제

내가 읽은 대부분의 팁은 여행을 따라 특정 시점에서만 적용되며 모든 사람에게 반드시 적용되는 것은 아닙니다. 이 중 많은 부분이”개인 여행”또는”나를 위해 일한 것”범주에 속합니다. 그러나 내 길은 아마도 당신의 길이 아닙니다. 나를 위해 일하는 기계적인 것들 중 일부는 아마도 당신을 위해 일할 것이지만,내가 만든 많은 도메인과 패턴 선택은 아무 소용이 없을 수 있습니다.

기계적 물건은 최적화하기 매우 쉽다;옵션은 제한되어 있습니다. 그러나 학습 물건은 제한이 없습니다. 아무도 그것을 모두 알지 못할 것입니다. 전략적 및 전술적 선택을해야하며 기회가 발생할 때 기회를 활용할 준비를하십시오.

팁의 유용성은 특이성의 함수로서 떨어진다. 더 구체적인 팁은 모든 사람에게 적용되지 않지만 일반적인 팁은 너무 많습니다. 그들은 행동으로 전환하기가 훨씬 더 어렵습니다. 그래서 당신은 당신이”더 빨리 가고 싶다”고 말할 때 정말로 무엇을 원합니까?”나는 너에게 말할 것이다.

당신이 원하는 것은 흐름

모든 프로그래머가 특히 개발 운영 시대에 원하는 것은 흐름입니다. 흐름 상태는 처리량을 극대화하고 도전의 다만 적당한 수준을 통합하여 즐거움을 증가;하나는 완전히 순간과 작업에 종사 유지(이 발머 피크와 혼동되지 않습니다). 흐름 상태를 유지하려면 적절한 환경과 마찰없는 프로세스가 필요합니다.

짝을 지을 때의 흐름 상태는 각자가 여분의 두뇌를 갖는 것과 같습니다. 불행히도 오픈 오피스와 같은 많은 개발자 환경은 흐름에 비우호적입니다.

옵션이 제한 될 수 있습니다

프로세스 또는 자신에 대해 최적이 아닌 것을 발견하면 이러한 제약 조건을 해결하는 방법에 대한 선택이 제한됩니다:

  • 그것을 무시하십시오. 어쩌면 그것은 그 자체로 더 나아질 것입니다.
  • 그것을 피하십시오. 정말 필요한가요?
  • 자동화. 기계가 그것을 할 수 있도록.
  • 위임. 희소하게 가능한,이것은 숫사슴을 통과하고 있다. 그러나 그것은 합법적 인 옵션을 사용할 수 있습니다.
  • 그것을 아래로 갈기. 우리 모두는 때때로(매일)이 작업을 수행해야합니다. 일부 직업은 다른 직업보다 큽니다.

당신의 입력이 당신이 원하는 것보다 느린 경우,약간의 시간이 걸릴 레벨 업. 통합 개발 환경이 혼란스럽고 도움이되지 않는 경우(또는 너무 도움이 될 수도 있음)다른 또는 더 간단한 것을 시도하십시오. 너가 그것에서 멀리 얻을,그것에 관하여 더를 배우십시요;너는 다른 방법을 발견할지도 모른다,또는 적어도 한계를 배우십시요.

배우는 방법에는 여러 가지가 있다. 구글은 책,비디오,블로그 게시물,스택 오버플로 질문,그리고 물론 다른 사람들과 마찬가지로 친구입니다. 당신이 배우고 싶은 어떤 것들은 숨겨져있을 수 있습니다;다른 것들은 그들이 나타나는 것보다 더 클 수 있습니다. 노력으로 이득을 균형을 잡고 너자신과 참을성 있으십시오. 모든 업적을 축하하고 계속 움직이십시오.

빠른 프로그래밍을위한 주요 팁

아래 팁을 그룹화하고 보는 한 가지 방법은 컬렉션에서 흥미로운 일반화를 그리는 방법으로 몇 가지 높은 수준의 범주를 적용하는 것입니다:

  • 반영. 당신은 무엇을 원하는가,당신은 실제로 무엇을 하는가;측정 및 최적화를 포함한다.
  • 흐름. 도구,프로세스,환경 또는 지식의 마찰 없음;지속적인 도전을 추구하지만 너무 많이 추구하지는 않습니다.
  • 배우기. 기본 사항: 언어,도구,패턴,관행 등,모든 사람(특히 기꺼이 가르치는 사람)으로부터;배우는 방법을 배우고 지속적으로 배우십시오.
  • 가르쳐. 다른 사람들을 가르치십시오. 사물을 설명해야하는 것은 단순화를 강요하고 생각에서 언어 적 또는 시각적 표현으로 변환하면 통찰력을 얻을 수 있습니다.
  • 표현 및 탐색. 너의 정상적인 업무이상으로 보기;무승부,쓰기,블로그,모임에 가고,참석하,발표를 주고십시요,윌슨에게 배구 필요하다면 말하십시요.

아래의 팁은 단순히 데이터 포인트,숙고해야 할 것들—인생에 대한 치트 시트 또는 프로그래머로서의 경력에 대한 할 일 목록이 아닙니다. 나는 183 팁의 목록으로 시작 범주로 그룹화,반복 및 개인 편견에 따라 우선 순위를 할당하고,각에서 최고 몇했다.

맞습니다. 나는 개발자를 좋은 프로그래머 또는 빠른 프로그래머로 만드는 것을 알고 있으므로 내가 읽은 모든 것을 내 편견을 통해 필터링했습니다. 특히,나는 편향되어있다:

  • 민첩한 방법.
  • 도메인 기반 디자인.
  • 자동 테스트.
  • 지속적인 개선.
  • 최소 솔루션.
  • 마찰없는 도구.
  • 가능한 한 흐름 상태에서 작업.

로버트 씨”밥 삼촌”마틴의”격렬한 평범함”에 대한 진술에 강력히 동의합니다”:

“빨리 가는 유일한 방법은 잘 가는 것이다. 너가 속도를 위해 질을 무역하는 유혹에 열매를 산출할 때마다,너는 감속한다. 매번.”

소금 한 알과 함께 다음 팁(및 인터넷에서 읽은 다른 모든 것)을 가져 가십시오. 무엇이 효과가 있는지 유지하고 적응하십시오;쓸모없는 것을 버리십시오.

그리고 더 빠른 프로그래밍을위한 팁이 있습니다.

반사가 핵심이다

반사가 자기 개선의 핵심이다:

  • 지속적으로 의사 결정 과정을 개선;비난하지 않고 실수로부터 배울 수 있습니다.
  • 응용 프로그램의 전체 범위와 실행 환경에 대한 이해에서 사각 지대를 제거합니다.
  • 꼬리를 쫓지 말고 시간 싱크를 식별하고 제거하십시오.

객관적으로 측정

때로는 가장 큰 제약이 무엇인지 알고 때로는 측정해야합니다.

  • 며칠 동안 일할 때 자신에 대한 자세한 감사를 고려하십시오.
  • 는 코드 조각을 최적화하는 것과 같습니다. 모든 로그 핫스팟을 식별하고이를 향상시킬 수 있습니다.
  • 당신의 시간은 어디로 갑니까? 많은 프로그래머가 코드를 작성하는 것보다 코드를 읽는 데 훨씬 더 많은 시간을 소비합니다.

연습,연습,연습

다양한 도전에 대해 어느 정도의 연습을 할 수는 없습니다.

  • 많은 소프트웨어를 작성하십시오.
  • 더 큰 프로그램을 작성하십시오.
  • 에서 리뷰 준비 코드를 작성하십시오.
  • 연습 할 수있는 장소가 많이 있습니다,…을 포함하여 topcoder.com,프로젝트 오일러,hackerrank.com.하나를 선택하고 가십시오.

성공을위한 디자인

학습 설계 기술은 주어진 당신의 생각 도구의 숙달의 일부가되어야한다. 또한:

  • 사용자 이해; 그들의 문제,진짜 문제를 이해하십시오;그리고 그것을 해결하십시오. 도메인에 대한 지식은 대단히 도움이됩니다.
  • 동료 및 도메인 전문가에게 문제,해결책 및 디자인에 대해 이야기하십시오.
  • 생각하고 코딩하는 동안 그리거나 씀으로써 인지 부하를 줄입니다.
  • 수명 및 유지 관리를 위해 설계할 때는 데이터가 코드보다 오래 지속된다는 점을 기억하십시오.
  • 바퀴를 재발견 할 때,그리고 그렇지 않을 때(일반적으로 그렇지 않은 경우)알아 두십시오.
  • 의도적으로 사물의 이름을;이 도메인에 다시 코드에서 유일한 링크입니다.

과정을 못

우리는 우리 자신의 건설 과정에서 많은 시간을 보내고;그들을 변경하는 것을 두려워하지 마십시오.

  • 설계 상 버그를 불가능하게 만듭니다. 빨리 실패하고,널 검사 대신 예외를 사용하고,유형 시스템을 사용하여 데이터 오류를 방지하고,자동화된 테스트를 사용합니다.
  • 어디서부터 시작해야할지 모르겠다면,가장 잘 이해하는 부분부터 시작하십시오.
  • 제품이 얼마나 어리석거나 작더라도 실제로 제품을 먼저 만들 코드를 작성하십시오.
  • 오류를 무시하지 마십시오.
  • 개발에 대한 민첩한 접근 방식을 따르십시오.
  • 추상화는 의미가 있고 실제로 재사용 될 경우에만 꺼내십시오.
  • 거인의 어깨에 서;오픈 소스 라이브러리,타사 솔루션 등을 사용합니다.가장 좋은 코드는 작성할 필요가 없는 코드입니다.
  • 테스트 자동화 및 테스트 중심 개발 연습
  • 십오,코드 생성 유틸리티 등과 같은 스마트 도구 사용,그러나 그들이 당신의 방식으로 얻는 경우에 아래로 교대를 두려워하지 말라.
  • 언어 및 표준 라이브러리에 대해 매우 잘 알고 있어야합니다. 문서에서 크롤링하는 데 소요되는 시간이 적을수록 좋습니다.
  • 소스 제어를 사용하십시오.
  • 프로파일러를 사용합니다. 필요한 것만 최적화
  • 터치 타입 배우기. 이렇게 하면 타이핑의 인지 부하가 0 으로 줄어들고 속도와 정확성이 향상됩니다.

올바른 작업 환경 만들기

지속적인 중단,불편한 상황 및 끝없는 회의가 흐름을 방해합니다.

  • 당신이 산만하지 않을 환경에 있는지 확인하십시오.
  • 자신을 알고 피크 시간 동안 작업-하지 다른 사람의.

직장 밖에서 탐색하기

알고 싶은 모든 것이 사무실이나 인터넷에 있는 것은 아닙니다.

  • 새로운 도구와 기술에 자신을 노출. 작동하는 무슨을 지키십시오.
  • 사이드 프로젝트 및 오픈 소스 프로젝트 작업.

건강 유지

죽은 사람은 코드를 작성하지 않습니다. 아픈 사람들은 나쁜 코드를 작성합니다. 너 자신을 돌봐라.

  • 코드에서 벗어나는 값을 알고 있습니다.
  • 더 많은 수면을 취하고 더 잘 먹고 더 적은 시간을 일하십시오.
  • 명상.

좋은 학습 습관을 개발

학습은 프로그래머를위한 평생 과정이지만,우리는 경고:인터넷은 빛나는 것들로 가득 차있다.

  • 기본 사항 마스터: 프로그래밍 패러다임 및 사례 건조(자신을 반복하지 마십시오)및 고체(단일 책임,개방형,리스코프 대체,인터페이스 분리 및 의존성 반전),패턴 및 반 패턴,알고리즘,데이터 이론,그래프 이론 등
  • 하여 배우십시오. 학습하는 동안 항상 코드를 재생합니다.
  • 멘토를 찾으십시오.
  • 당신을 위해 작동하는 것을보고 학습의 다른 방법을 탐구한다.

품질은 일정하지 않습니다

품질은 코드의 가독성에서부터 모듈 식 구조 및 복잡성,도메인 의도를 얼마나 잘 표현하는지에 이르기까지 많은 부분을 다룹니다.

  • 속도가 아닌 품질에 중점을 둡니다.
  • 주어진 순간에 코드”품질”은”당신이 가지고 있고 알고있는 것으로 할 수있는 최선입니다.”
  • 항상 최선을 다하십시오.
  • 극단적 인 경우에만(즉, 프로토 타이핑/탐색/던지기 코드)및 임시 상황은 코드의 품질이”할 수있는 최선의 것”수준 아래로 떨어지도록해야합니다(그리고 그 일을 약간 부끄러워해야합니다.)

소프트 스킬 문제

나는 사람들의 기술에 대한 팁을 많이 찾을 수 없습니다,하지만 사람들은 거의 피할 수있다;내가 발견 한 사람들은 매우 도움이되었다.

  • 사람들과 교류하는 방법을 알면 마찰이 적고 즐거움으로 주변 사람들에게서 배우고 가르 칠 수 있습니다.
  • 명확하게 쓰고 말하는 것을 배우면 아이디어를 더 빨리 얻을 수 있습니다.

가서 코드

그게 다야,프로그래밍을위한 최고의 조언에 대한 요약. 이 끝을 따라 당신은 당신의 프로그래밍 능력을 향상에 당신의 방법에 잘있을거야-빠른 코딩.

답글 남기기

이메일 주소는 공개되지 않습니다.