문제

이것은 절망적으로 모호한 질문일 수 있습니다.그러나 나는 사람들이 새로운 개념을 배우거나 이전에 본 적이 없는 코드에 대해 머리를 숙이려고 할 때 어떤 논리적 사고 과정을 거치는지 듣고 싶습니다.

기본적으로 문제를 해결하기 위해 취하는 일반적인 단계는 무엇이며 "해결"하려면 무엇이 필요합니까?코드를 보거나 문제를 해결하려고 할 때 정신 과정이 어떻게 작동하는지에 대한 흐름도를 도표화한다면 어떤 모습일까요?

문제 해결에 어떤 일반적인 참고 자료, 팁, 정신적 가정이 유용하다고 생각하시나요?

도메인마다 어떻게 다릅니까?예를 들어 웹 프로그래머의 사고 과정은 기존 데스크톱 앱 개발자의 사고 과정과 어떤 면에서 비슷하거나 다른가요?

도움이 되었습니까?

해결책

나는 처음으로 어떤 유형의 애플리케이션을보고 있더라도 웹 앱, 데스크탑 앱, 장치 드라이버 또는 다른 무엇이든, 개발자가 일반적으로 따르는 세 단계가 있다고 생각합니다. 그것이 어떻게 작동하는지 이해하기 위해 :

큰 그림을 얻으십시오 :

  • 이것 (웹, 데스크탑, ...)은 어떤 종류의 앱입니까?
  • 어떻게 계층화되어 있습니까 (독립형, 클라이언트 서버, N-Tier, ...)?
  • 앱의 목적은 무엇입니까? 무엇을해야합니까?
  • 앱은 누구를 위해 만들어 졌습니까?

작동 방식을 확인하십시오.

  • 어떤 언어가 사용됩니까?
  • 코드는 어떻게 구성됩니까?
  • 데이터는 어떻게 구성됩니까?

앱을 통해 생각 된 방식을 이해하거나 최소한 시도하십시오.

  • 전혀 생각 했습니까?
  • 앱이 명확하게 최적화되어 있습니까? (공연을 위해? 가독성을 위해?)
  • 앱이 완료 되었습니까? 아니면 진화의 여지가 있습니까?
  • 여러 릴리스의 징후가 있습니까?
  • 등...

첫 번째와 두 번째 단계는 순전히 기술적이지만 3 번째는 비 기술적 가능한 한 ... 심리학과 앱이 어떻게 구축되었는지 이해하는 것입니다. 분명히 경험이 필요하지만, 당신이 충분히 힘들고 기술적 인 세부 사항으로 뇌의 시간을 낭비하지 않는 한 결국 그것을 얻을 수 있습니다.

이 전체 프로세스는 키보드를 사용하지 않아야합니다. 당신은 종이를 읽고, 생각하고, 메모해야합니다 (농담이 아닙니다 : 펜과 종이!).

다른 팁

호 호, 행운을 빕니다. 그것은 좋은 질문이며 나는 당신이 많은 답을 얻을 것이라고 확신합니다. 나는 이것에 대해 만족스러운 대답을 할 수 없다고 말해야하지만 - 마지막으로 내 사고 과정을 흐름도로 묘사 할 것입니다. 나는 이것에 대한 황금 공식이 있다고 생각하지 않습니다.

내가 추천 할 수있는 문제 해결의 유일한 팁은 다른 사람과 논의하는 것입니다. 당신이 벽돌 벽을 때렸을 때, 동료와 함께 겪는 것은 매우 중요합니다. 종종, 그들은 실제로 토론에 많은 것을 추가하지 않을 것입니다. 모든 생각을 공개적으로 공개하는 과정에서 해결책은 명확해질 수 있습니다.

사람들은 자신의 사고 과정을 검토하는 데 매우 능숙하지 않지만 한 번 살펴보겠습니다.나는 IQ 테스트에서 시공간 능력을 매우 높게, 언어 능력을 중간에서 높은 수준으로, 수학 능력을 보통 수준으로 테스트했습니다(제 A레벨 수학 성적을 설명하는 것 같습니다).AMD는 소프트웨어 디자인을 시작할 때 모양과 둘 사이의 연결 측면에서 생각합니다.이러한 생각을 다른 사람에게 설명할 때(또는 나 자신을 위해 명확하게 설명할 때) 나는 단순한 블록 다이어그램이나 Jacobson의 Objectory 방법에서 가져온 개체 다이어그램을 사용합니다. UML이 제안하는 지나치게 복잡한 내용은 아닙니다.나는 때때로 복잡한 것에 대해 주로 나 자신을 상기시키기 위해 텍스트 설명을 작성하지만 숫자나 수학은 사용하지 않습니다.

물론 이것은 단지 나일 뿐입니다. 나는 나보다 더 훌륭하거나 더 나은 프로그래머인 수학 천재들과 함께 일했습니다.

나는 생각하지 않는다 ... 나는 처리한다.

이것은 실제로 들리는 것보다 덜 뒤집습니다. 나는 항상 작업을 구성 요소로 분류 한 다음 더 많이 분류하며 소프트웨어를 작성하는 것이 아닙니다! @mark pim u는 순차적으로 일을 겪습니다.

제가 시작하는 데 너무 오래 걸리기 때문에 저녁 식사를 할 때 아내는 정말 화가납니다.

분열 및 정복

나는 전체 문제를 그대로 이해하려고 시도한 다음, 내가 인식 할 수있는 패턴을 찾기 시작하고, 재귀적인 프로세스에서 동일하게 수행합니다.

이것은 내가 "그냥 작동하는 것"으로 대답 할 드문 시간 중 하나입니다. 나는 그들을 통해 증기를함으로써 물건을 배웁니다. 나는 특수 효과 나 나를 도울 장치가 없습니다. PHP를 배우는 데 시간이 걸렸지 만 그 후에 JavaScript가 훨씬 쉬웠습니다. 한 가지를 다루면 다음 항목은 누적 적으로 해당됩니다.

개인적으로, 나는 나 자신과 내부 대화를하고 있습니다. '하지만 우리가 원하는 가치를 찾으면 깨질 수 있습니다.' '좋아요, 우리가 시작할 때 목록이 확실히 초기화 될까요?'

문제 해결 기술에 대한 심리적 연구가 이루어 졌는지 알고 싶습니다.

Jonathan Sampson과 비슷합니다.

실제 문제를 공격 할 때, 나는 그것을 통과하는 가장 논리적 인 방법을 생각하고 생각합니다. 그런 다음 모든 것이 잘못되면 (일반적으로 그렇듯이), 나는 일을 끝내기 위해 수백 개의 회피를해야합니다. 그 최종 목표, 논리적 인 방법에 계속 집중하면 그곳에 갈 수 있습니다.

그러나 결국, 그것은 나를 위해 일하기로 결정하고 나는 일반적으로 내가 계획 한 것과 같은 완제품으로 끝납니다. 고객이 행복한 한, 나는 있습니다!

개인적으로, 나는 텍스트로 (Neil Butterworth와 같은) 문자가 아닌 그림으로 내 머리에 코드를 봅니다.

나의 주요 기술은 내가 이미 알고있는 모델이나 시스템과 당면한 과제 사이의 유사성을 식별하는 것입니다. 이들 중 일부 사이의 연결은 상당히 추상적으로 보일 수 있습니다. 열쇠는 연결을 발견하는 것입니다. 이로 인해 널리 적용되는 일반적인 패턴과 접근법의 추상화로 이어집니다. 이와 관련하여, 내가 알고리즘에 대해 배운 가장 중요한 것은 문제가 'X를 해결하기위한 스마트 알고리즘을 제시하지 않는 것'이라는 것입니다. 기존 스마트 알고리즘 Y에 의해 해결 될 수 있도록 '모델 문제 X'입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top