경험이 문제 해결에 - 초보자 흰색 프로그래머처럼 생각하는 방법

어떻게 프로그래밍 할 관심, 당신은이 말을 본 적이 있습니다 :

"이 생각하는 당신을 가르치고 있기 때문에이 나라의 모든 사람이 컴퓨터를 프로그래밍하는 법을 배워야합니다."- 스티브 잡스

프로그래머는 말은 결국 생각처럼 당신도 알고 할 수 있습니다? 어떻게 할 수 있습니까?

기본적으로이 문제를 해결하는보다 효율적인 방법입니다.

이 글에서, 내 목표는이 방법을 가르치는 것입니다.

마지막으로, 당신은 문제를 가장 잘 해결하는 방법을 알 수 있습니다.

왜 중요한가?

우리는 매일 크고 작은 많은 문제가 발생했습니다. 우리는 때때로 이러한 문제를 처리하는 방법은 임의이다.

당신이 시스템을 사용하지 않는 방법, 또는 "무작위 방식"으로 "해결"을 할 수있는 문제는 (내가 일을 할 때 코드를 작성하는 프로그래밍을 배우기 시작하자)

  • 1, 해결 방법을 시도해보십시오

  • 2,하지 않을 경우, 다시 시도

  • 효과가없는 경우 3. 단계를 반복 당신은 행운을 알고

이러한 접근 방식, 불운의 때, 바보. 즉, 때 최악의 방법은이 방법의 문제를 해결하기 위해! 그것은 또한 매우 시간이 많이 걸리는 단점이있다.

가장 좋은 방법은 다음과 같습니다

  • A, 프레임이 존재

  • B, 그것을 실천

거의 모든 고용주는 처음에 문제를 해결하는 능력을 생각!

고용주가 찾고있는 문제 해결 능력은 이미 프로그래머, 테스트 엔지니어, 시스템 설계자의 측면, 그리고 다른 값 대부분이다.

대형 전산 사고 나 복잡한 문제 등과 같은 중요한 작업에 필요한 기본적인 기술 능력을 분해하는 기능입니다 - 해커 순위에 의해를 (2018 개발자 기술 보고서)

프레임 워크

올바른 프레임 워크를 찾으려면, 난의 "4 시간 요리사", "4-시간 요리사"학습 제안에 대한 팀 페리스 책을 따라

그것은 나를 나를 감동 두 사람이 인터뷰를합니다 :

Coderbyte에 65,000 사용자 중 1 또는 2 위 C. 요르단 볼 (및 V. 안톤 Spraul (책의 저자는 "창조적 인 문제 해결에 소개 프로그래머처럼 생각".

난 당신이 어떻게 짐작 그들에게 같은 질문을했다? 그들의 대답은 매우 유사한 것으로 밝혀졌다!

다음으로, 당신은 곧 ~ 인식 할 수 있습니다

당신은 우리 모두가 동의하는 좋은 원칙에 시작하는 경우 물론,이 사실은 그들이 동일한 방법으로 수행되는 모든 것을 의미하지 않는다, 각 사람이 다른, 당신은 다를 수 있지만 것 그것은 더 빠르게 이동합니다.

새로운 프로그래머가 만들 내가 볼 수있는 가장 큰 실수는 문법을 학습하기보다는 문제를 해결하는 방법을 학습에 집중하는 것입니다. 별 - V. 안톤 Spraul ( http://vantonspraul.com/ )

새로운 문제가 발생할 때, 당신은 어떻게해야합니까?

다음 단계 :

1, 이해

매우 정확한 그가 문제가 무엇인지 질문을 받았다 알고 있었다. 가장 어려운 문제는, 당신이 그들을 이해하지 않기 때문에, 그래서 이것은 첫 번째 단계입니다 이유.

당신은 문제를 이해하면 어떻게 알고? - 당신은 간단한 언어를 사용하면 자신의 시간에 그것을 설명합니다.

당신은 당신이 그것을 설명하기 시작하면, 즉시 논리적 허점을보고, 허점은 또한 당신이 이전에 보지 못한 것을 할 수있다, 문제에 붙어있을 때 당신은 기억 할 수 있습니다.

대부분의 프로그래머는 그것의 느낌을 알고있다!

당신이 질문을 적어지도를 그리거나 다른 사람을 얘기해야하는 이유입니다.

". 당신은 간단한 용어에 뭔가를 설명 할 수 있다면, 당신은 그것을 이해하지 않는다"당신이 뭔가를 설명하는 간단한 언어를 사용할 수없는 경우, 당신은 그것을 이해할 수 없다 - 리처드 파인만을

2, 계획

상황이없는 상태에서 계획이없는 문제를 해결하는 과정에 곧바로 뛰어 들었다 (그리고 나는 당신이 과거에 혼합 할 수 있기를 바랍니다), 이제 솔루션을 계획!

당신이 정확한 단계를 적어 계획이없는 경우, 도움이되지 않았다.

프로그래밍, 이것은 바로 해킹을 시작하지 않는 것을 의미한다. 당신의 두뇌를 문제 및 프로세스 정보를 분석하는 데 시간을주십시오.

좋은 계획을 얻기 위해,이 질문에 답 : 주어진 입력 X를 Y 그들이이를 도와주는 훌륭한 도구가 내부에 어떤 프로그래머의 세계를 입력하는 데 필요한 단계로 되돌아가, 그 코멘트입니다!

3, 분할

이것은 가장 중요한 단계입니다

한 번에 큰 문제를 해결하려고하지 마십시오, 또는 당신이 울 수 있습니다.

당신은 하나의 서브 문제 하나에 분할이 질문에 넣으면 대신,이 하위 문제는 해결하기가 쉽습니다.

그런 다음, 가장 간단한에서 각 하위 문제 해결을위한 하나 하나 시작합니다. 가장 간단한 방법은, 당신은 (답 또는 가까운) 답을 알고있다.

다른 가장 쉬운 방법은 다른 문제 해결에 의존하지 않는 아동의 문제를 해결하는 것을 의미합니다.

일단 당신 점을 연결 한 후 각 하위 문제를 해결하고,

당신이 제공하는 원래 문제의 해결책에 대한 모든 "하위 솔루션"을 연결합니다! 축하 그렇다면, 당신은 그것을했다!

이 기술은 그것 (난 당신이 다시 읽고이 단계를 다시 제안) 기억, 모든 문제의 초석입니다

10 개 개의 숫자를 읽는 프로그램을 작성하도록 요청하고 계산되어, 새로운 프로그래머 가정 : 나는 초보자에게있는 모든 문제를 해결 할 수있는 기술을 제공 할 수 있다면, 예를 들어, "기술의 문제를 줄이기 위해" 어떤 그림은 새로운 프로그래머를위한 가장 높은이 단지 기본적인 프로그래밍 구문을 필요로하더라도, 어려운 작업이 될 수있는 세 번째

당신이 난장판 경우에, 당신은 문제를 단순화한다. 대신 세 번째 높은 수치에 초점을 맞추는. 어떻게 전체에서 아직 가장 높은 수를 찾는 방법은? 또는 너무 열심히? 그것은 세 가지 그것에서 가장 큰 숫자 것을 발견? 또는 너무 열심히? 그 두 가지의 큰 경우를 찾는 방법은?

당신은 문제를 해결하는 방법을 알고와도 솔루션을 준비하기 위해 문제를 단순화합니다. 그런 다음 약간의 문제를 확장 솔루션은 다시 일치, 당신은 당신이 시작 알고 곳으로 다시 진행합니다. - V. 안톤 Spraul

4, 그것을 붙어?

이제, 당신이 생각하고 거기에 앉아 될 수있다, 다음 단계는 꽤 좋은 일을 보인다,하지만 난 붙어있는 경우, 어떻게 할 수있는 문제를 해결할 수없는 아이를 설정?

첫째로, 심호흡을. 이것은 정상입니다 때문에!

걱정하지 마세요, 친구, 모두가이 같은 것입니다!

차이가 있다는 것입니다 최고의 프로그래머 / 문제 해결 자, 호기심 버그 / 오류, 화가하지!

당신이 불행가 발생할 때 사실, 당신이 시도 할 수있는 세 가지가있다 :

디버깅 : 무엇이 잘못되었는지 알아 내려고 단계에 의해 솔루션 단계를 확인합니다. 그 디버거.

(예술 디버깅 당신이 정말로 무엇을해야 하는지를 프로그램을 알 수있는 내용은, 당신은 당신이 무엇을하도록 지시 생각하지 무엇을)

재평가 : 다시보기 중 하나-다른 지점보다 일반적인 방법으로 추출 할 수있는 질문에서 단계?

(때때로 우리는 그들이 일반 원칙을 무시 있도록 더 일반적인 수준에서 문제를 해결하기 위해, 세부 사항에 집착 문제가있다!)

전형적인 예는, 간단한 소거법으로 연속 정수 긴 문자열 시크 1 + 2 + 3 + 4 + ... + n의 합은, 신속하게 수식을 식별 할 수있다 : N (N + 1) / (2) 따라서, 추가 포인트를 회피 할 필요.

(또 다른 방법은 다시 재 - 평가를 시작하는 것입니다.. 당신이 얼마나 효과가 있는지 놀라게 될 것입니다, 모든 내용을 삭제 새로운 눈으로 다시 시작합니다.)

검색 / 연구 : 당신이 잘못 아니에요, 당신은 질문이 있는지, 어떤 사람들은 해결되었을 수 있으며, 구글을 사용하는 것입니다. 그 사람 / 솔루션을 찾아보십시오. 사실,이 문제를 해결하지만, 경우에도 또한 그렇게! (당신은 고등학교 프로그램에서 다른 사람을 많이 해결 할 수 있습니다)

(참고 : 하위 문제에 대한 해결책을 찾기 위해 큰 문제를 해결하는 방법을 모색하지 마십시오, 이유 때문에 당신이 아무 것도 배운 적이있는 경우 그렇지 않으면 당신은 아무것도 배울하지 않습니다) 조금이라도 (, 열심히 일하지 않는.? 당신은) 당신의 시간을 낭비하고

5. 연습

당신은 좋은 문제 해결사하려면 매우 강력한 될 수 있습니다 단지 일주 기대하지 마십시오, 당신은 많은 문제를 해결하기 위해 가야한다!

연습, 연습, 연습! 조만간이 문제는 아주 쉬운 방법에 의해 해결 될 수 있다는 것을 알게 될 것이다.

어떻게 당신은 그것을 실천 하는가? 사실, 많은 선택이있다!

예를 들어 국가 체스 게임, 수학 문제, 스도쿠, 비디오 게임, cryptokittiles, 어쩌구 어쩌구 저쩌구 ...

사실, 성공의 보편적 인 모델들이 연습을 알고 습관 "군중이 문제를 해결". 예를 들어 비디오 게임 피터 티엘 (피터 틸) 체스, 엘론 머스크 (엘론 머스크) ....

바이런 리브스 (바이런 Beeves), 당신은 비즈니스 리더십의 3 ~ 5 년은 바로 온라인 게임 일어나는 상황을 확인하기 위해 같은 긴 것 후에 알고 싶다면

오늘 빨리 감기는 엘론 머스크, 레이드 호프만, 마크 주커 버그 그리고 많은 다른 게임들이 회사의 초석을 말할 것이다, 말했다. --Mary 순한 (2017 인터넷 트렌드 보고서)

이것은 당신은 비디오 게임을한다는 뜻? 모든 예.

그러나 결국이 비디오 게임과 아무 상관이있다? 네, 문제는 해결된다!

그래서 당신이해야 당신이 작은 많은 문제를 해결할 수 있도록, 운동에 대한 출구를 찾을 수 있습니다. (이상적으로, 당신은 훨씬 더 나은 뭔가를 좋아하거나)

예를 들어, 내가 프로그래밍 매일 도전처럼, 나는 적어도 하나 개의 도전 (보통 Coderbyte) 해결하기 위해 노력했다 https://coderbyte.com/을

내가 말했듯이, 모든 문제는 유사한 패턴을 가지고!

6. 결론

지금, 당신은 무슨 뜻인지 "생각 프로그래머처럼"알고있다.

또한 그 문제 해결 능력은 놀라운 위안 알고있다.

이 충분하지 않으면, 당신은 또한 문제 해결 능력을 연습하는 방법을 알고 있어야합니다.

당신이하지 멋진 모습입니다 참조하십시오!

마지막으로, 나는 당신에게 많은 문제 하하를 바랍니다.

당신은 적어도 당신이 지금 해결하는 방법을 알고, 잘못 아니에요, 같은 시간에, 당신은 각 솔루션은 당신이 개선 얻을 수있게 이해합니다!

"그냥 당신은 당신이 성공적으로 하나 개의 장애물, 또 다른 나온다을 탐색 한 생각한다. 그러나 그것은 삶 흥미 유지거야. 다른 장애물이 나타나있을 때 크로스 도메인의 성공은 장애물이었다 생각 바로 그 때,하지만 삶의 변화를 만드는거야 때 그것은 흥미로웠다.

우리는 삶의 이러한 장벽 과정을 중단해야한다 강화 라인의 일련의 돌파구 - - 인생은 이러한 장애물을 뚫고 과정이다 우리가 방어하는 일련의 돌파해야한다.

때마다, 당신은 뭔가를 배울 수 있습니다. 때마다, 당신은 몇 가지를 배우게됩니다.

때마다, 당신은 힘, 지혜와 관점을 개발하는 것입니다. 때마다, 당신은 당신의 긴장, 지혜와 통찰력을 개발한다

남아있는 모든 당신을 될 때까지 때마다, 경쟁에서 좀 더 멀리 떨어지면 : "당신의 가장 좋은 버전 - 당신이 당신의 자신의 최선을 다 될 때까지 라이언 휴일마다 더 많은 경쟁이 사라집니다 - .... - 라이언 홀리데이은 (장애물 경로입니다)

지금, 지금 몇 가지 문제를 해결하기 위해!

추천 도서 :

기능이 무엇인지에 "타락한"이다 프로그래밍, 파이썬 프로그래머 알아?

프런트 엔드 개발 라인 학습은 무엇입니까? 인터넷 동향, 기술 요구 사항

아늑한 앞에 평생 학습을 의미 프로그래머, 선택,하지만 혼란 사람들은 온상

프로그래머의 스킬 트리가 평생 경력의 높이를 결정

추천

출처blog.csdn.net/momingzhe23/article/details/91357921