質問

これは絶望的に曖昧な質問かもしれません。しかし、私は、新しい概念を学習したり、今まで見たことのないコードを脳に取り込もうとするときに、人々が経験する論理的な思考プロセスを聞きたいと思っています。

基本的に、問題を解決するためにどのような一般的な手順を取り、「取得」するために何をしますか?コードを見るとき、または問題を解決しようとするときに、精神プロセスがどのように機能するかのフローチャートを作成する場合、それはどのように見えるのでしょうか?

問題解決に役立つ一般的な参考文献、ヒント、および精神的な仮定は何ですか?

これは異なるドメイン間でどのように異なりますか?たとえば、Webプログラマーの思考プロセスは、従来のデスクトップアプリ開発者のプロセスとどのように似ていますか、または異なりますか?

役に立ちましたか?

解決

最初に見ているアプリケーションの種類に関係なく、Webアプリ、デスクトップアプリ、デバイスドライバーなど、3つのステップがあります。開発者は通常、それがどのように機能するかを理解するために従います。

全体像を把握する:

  • これはどのようなアプリ(Web、デスクトップ、...)ですか?
  • どのように階層化されますか(スタンドアロン、クライアントサーバー、n層、...)?
  • アプリの目的は何ですか?それは何をするのですか?
  • このアプリは誰のために作られていますか

仕組みを見る:

  • どの言語が使用されていますか?
  • コードはどのように構成されていますか?
  • データはどのように構成されていますか?

アプリの考え方を理解する(または少なくとも試してみる):

  • 考え抜かれたことがありますか?
  • アプリは明らかに最適化されていますか? (パフォーマンスのため?読みやすさのため?)
  • アプリは終了しましたか?または進化の余地はありますか?
  • 複数のリリースの兆候はありますか?
  • etc ...

1番目と2番目のステップは純粋に技術的であり、3番目は可能な限り非技術的でなければなりません...これは、心理学とアプリの構築方法の理解に関するものです。それは明らかに経験を必要としますが、あなたが十分に一生懸命に考え、技術的な詳細であなたの脳の時間を無駄にしない限り、あなたは最終的にそれを得るでしょう。

このプロセス全体では、キーボードを使用する必要はありません。紙の上で読んで、考えて、メモを取るだけです(冗談ではありません:ペンと紙!)。

他のヒント

ほら、これで頑張ってね。それは素晴らしい質問であり、あなたはたくさんの答えを得られると確信しています。これに満足のいく答えを出すことはできないと言わざるを得ませんが、最後に考えプロセスをフローチャートで説明しますが、これには黄金の公式はないと思います。

私が推奨できる問題解決の唯一のヒントは、他の誰かと議論することです。レンガの壁にぶつかったとき、同僚と一緒に行くことは非常に貴重です。かなり頻繁に、彼らは実際に議論にあまり追加さえしません-すべてのあなたの考えを公開する過程で、解決策が明確になる可能性があります。

人々は自分の思考プロセスを調べることで悪名が高いことで有名ですが、私はそれを旋回させます。 IQテストでは視空間能力が非常に高く、言語スキルでは中から高、数学スキルでは中程度です(Aレベルの数学のグレードについては説明しています)。 amdソフトウェアの設計を開始するとき、形状とそれらの間の接続に関して考えます。これらの考えを他の人に説明する(または自分で明確にする)場合、単純なブロック図またはJacobsonのObjectoryメソッドから取られたオブジェクト図を使用します。UMLが示唆する複雑なものではありません。私は時々、複雑なもののテキストによる説明を、主に自分自身へのリマインダーとして書きますが、数字や数学を決して使用しません。

もちろんこれは私だけです-私は自分よりも優れたプログラマーである数学ウィズで働いてきました。

私は考えていない...私は処理する。

これは実際には、思ったよりも少ないフリップです。私は常にタスクをコンポーネントに分解し、さらにそれらをさらに分解します。それはソフトウェアを書くだけではありません! @Mark Pim Uが順番に物事を進めるように。

開始するのに時間がかかるため、夕食を作るときに妻が本当にイライラします。

分割&征服する

問題全体をそのまま把握することから始めて、認識可能なパターンを見つけ始め、ある種の再帰的なプロセスで同じことを実行します。より簡単に。

これは、「うまくいく」と答えるまれな時間の1つです。私はそれらをなだめることによって物事を学びます。仕掛けや手伝いの道具はありません。 PHPを習得するのに時間がかかりましたが、その後、Javascriptの方がはるかに簡単になりました。 1つのことに取り組むと、次の項目が累積的に簡単になります。

個人的に、私は自分自身と内部対話を行います。「OK。整数のこのリストをループする必要がある」。 「しかし、必要な値が見つかった場合は中断できます。」 「OK、開始時にリストは必ず初期化されますか?」

問題解決技術に関する心理学的研究が行われたかどうかを確認したいと思います。

Jonathan Sampsonに似ています-ただ機能します。

実際の問題を攻撃しているとき、それを解決する最も論理的な方法を考えてみます。 その後、すべてがうまくいかない場合(通常のように)、物事を成し遂げるために何百もの脇道を作らなければなりません。その最終目標、その論理的な方法に焦点を合わせ続けるだけで、そこにたどり着きます。

しかし最終的には、それは私のために働くことを決め、最終的に私はそれを計画していたようなものではない完成品になります。顧客が満足している限り、私はそうです!

個人的には、頭ではコードではなくテキストでコードが表示されます(Neil Butterworthなど)。

私の主なスキルは、既に知っているモデルまたはシステムと、手元のタスクとの類似点を識別することです。これらのいくつかの間の接続は非常に抽象的なように見えます。重要なのは、接続を見つけることです。これは、広く適用可能な一般的なパターンとアプローチの抽象化につながります。これに関連して、アルゴリズムについて私が学んだ最も重要なことは、問題が「Xを解決するためのスマートアルゴリズムを考え出すこと」ではないということでした。これは、「既存のスマートアルゴリズムYで解決できるモデル問題X」です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top