なぜコーディングは難しいのか? | Part 1

今回は技術的なテーマであるコーディングについて投稿します。 しかし、はっきり言って、私は技術的なバックグラウンドを持っていません。

私は、論理ではなく、人生をナビゲートするための指針として自分の感情を使用する方法を教えてくれた、芸術家の自慢の息子です。 粘土、黒鉛、インク、絵の具、キャンバス、紙、接着剤などが私の血管を流れています。

学校では政治学を学び、キャリアへの最初の挑戦は映画とグラフィックデザインで失敗しました。 また、ここD.C.のブートキャンプで5年ほどコードを教え、オンとオフで友人を指導しています。

難しいことではありますが、不可能ではありません。 独学では、断片的に学ぶことになります。 すぐに理解できることもあれば、何年か経ってからピンとくることもあります。 説明の道はよく踏まれていますが、あなたの人生経験、気質、教育から、正しい学習リソースを見つけることが戦いの半分であることがわかりました。

  • You’re not alone.
  • New vocabulary, new concepts, new… everything

    コードを学ぶ上での厄介な障壁の1つは、「コード言語」で何かを表すために使用する用語は、通常の英語ではまったく別のものを意味することが多いということです。 私がよく使う例は「クラス」という言葉です。

    私たちが慣れている学術的または社会学的な意味合いとは異なり、プログラミング用語としてのクラスは、使用しているプログラミング言語によって異なります。 これらの異なるプログラミング言語ではさらに混乱し、クラスは、元の作者がなぜそれをクラスと呼ぶことにしたのかという類似性を描くために概念的に十分に関連していますが、実際の使用は本当にまったく別のものであるほど異なっています。 (具体的には、CSS クラスとオブジェクト指向クラス)

    コードを話すことはほとんどスラングに似ており、親なら誰でも知っているように、それはイライラさせるものです。 何が通常の英単語で、何が「コード」用語なのかを識別するのは、最初は難しいかもしれません。

    さらに、これらを矢継ぎ早に聞くことが多いので、コードスピーク文は完全に文法的に正しく、それぞれの単語を別々に知っているはずですが、このように並べてしまうとそうではありません。

    「何らかの永続的なメモリまたは状態の問題でなければならないと思い、ローカルのブラウザ キャッシュの両方をフラッシュし、ステージングのサーバー キャッシュをクリアするようジョンに依頼した後、名前の衝突がルートで以前に定義した起動を上書きしていたことが判明しました。 ソースマップを追加するチケットを作成して、レポをググる代わりにインスタンスを簡単に追跡できるようにします。”

    ゼロから始めるだけでなく、スクラッチとは何かを定義する

    その上、これまで遭遇したことのない、ましてや戦ったこともない概念が存在します。 簡単でしょう?

    あなた:ねえ、コンピューター:コーヒーをいれてよ。 beep boop: もちろんです。 コーヒーとは何か、作るとは何か。

    コーヒーを作る方法をすべて想像してください…それから、コーヒー豆が育った木から、このプロセスで使用できる形になるまでの過程を想像してください…ヤバイです。

    私たちはしばしばゼロから出発しており、私たちにとって小さくて単純なことでさえ、コードで達成するには実は驚くほど複雑なことがよくあります。

    単に物事をプログラムするだけでなく、それらがそもそも何であるかを定義しなければなりません。 そして、うまくいかない可能性のあるすべての方法を処理するために、コードを強化しなければなりません。

    “Just Google it”

    おそらく、私の同僚から新しい開発者への最も腹立たしいアドバイスは、「Google it」でしょう。 何が悪いか診断する方法が分からないから、何から手をつけていいかさえ分からないんだろう。 (そうであれば質問しない)
    B. たとえ知っていたとしても、その問題に関連する用語がわからない。
    C. そして、たとえそうであったとしても、結果はしばしば困惑するものであり、それがあなたの目の前にあったとしても、あなたはそれを知ることができないでしょう。 (あるいは、私の祖父が言ったように、底に説明書があってもブーツから水を注ぐことはできないでしょう。)

    Coding is like a Foreign Language

    コードを学ぶことと外国語を学ぶことには、著しい類似性があります。

    そう、システムにはパターンと論理があります。

    そう、いくつかのことは特異で、英語の同等物では簡潔に伝えられません。

    そう、上記 2 点に矛盾したり意味をなさない例外もありますが、それはそれで仕方がないので暗記します。

    Half Pastor / Half Scientist

    おそらく、プログラマーが満たさなければならない最も気の遠くなるような矛盾は、それがどのように機能するかを知ることと、健全な大部分を信仰に帰結させることの両方を課せられていることでしょう。 デバッグは演繹的プロセスである。 良いコードは、よく構造化され、意図的に論理的で、よく整理されています。

    一方で、私たちは思考するように騙した石(コンピュータ)を使っています。 私たちは、フレームワーク、ライブラリ、および、時間の関係で理解できないか、純粋に信じている他の人々によって書かれたスニペットに依存しています。 プログラマーになるには、信仰に基づく神父/巫女と、冷徹なスポック論理学者の両方でなければなりません。

    Conclusion

    おわかりのように、私たちは私たちのために仕事を切り上げてきたのです。 しかし、私たちが、話す、書く、あるいは、今は日常的だがかつては苦労していたタスクを完了する方法を知ってこの世に生を受けたわけではないのと同様に、私たちはそれを実行できます。

    コーディングの背後にある深い真実は、人生を容易にするための非常に賢い人たちの製品、最善の努力、善意、誠実な贈り物であるということです。 ある賢い人が、どこかでこう言いました。 「これは最悪だ。 次のセクションでは、このプロセスを円滑にし、目標に向かって前進するための戦略をいくつか紹介します。 そして、もし何もなければ、あなたは少し楽しむことができるかもしれません。

    Leave a Reply

    コメントを残す

    メールアドレスが公開されることはありません。