ここ数ヶ月、私は Objective-C で iOS アプリを書くことを学んできましたが、ようやく頭を整理し始めました。それは私が想像していたよりもずっと難しく、時間もかかりすぎました。

私は頻繁に困難に直面し、落ち込むこともありました。バグの修正は実際にコードを書くよりもはるかに時間がかかりました。しかし、ゼロから開発したアプリを自分のスマートフォンで触って遊べるのは、驚くべき感覚でした。

このようにして、iOS アプリの開発だけでなく、一般的なプログラミングについても多くのことを学びました。また、Objective-C を別の方法で学んでいれば避けられたかもしれない問題にもいくつか遭遇しました。

振り返ってみると、もし今日プログラミングを学ぶとしたら、私はいくつか違うことをするでしょう。

如果学习编程可以重来

プログラミング仲間を見つける

私はまた、会話できる生身の人間がいるという学習方法を見つけました。

私の共同創業者である Josh は、主に Python 開発をしていますが、実際に私と一緒に Objective-C を学び、プログラミング理論に関する多くの質問(「if 文を再び機能させるには?」など)に答えてくれ、本当に難しい問題に直面したときにはデバッグを手伝ってくれました。

基本的なプログラミングの原則を説明できる、とても忍耐強いプログラミングパートナーがいることは、多大な助けになりました。私が Objective-C の具体的な詳細を理解する前に、Josh は問題を解決するための論理的方法の大部分を考えるのをよく手伝ってくれました。

リソースを有効活用する

もしあなたが不運にも、周りに質問に答えてくれる忍耐強いプログラマーがいない場合は、他のいくつかの場所で実際の人間から助けを得ることができます:

  Stack Overflow

特定の構文や実装に関する質問については、Stack Overflow は私が最近最も頻繁に訪れるウェブサイトの一つです。私はまだそこで質問をしたことはありません(そのコミュニティは初心者にとても友好のであるため、私は質問することに慎重な態度をとっています)。なぜなら、質問する必要がほとんどないからです——他の人への質問への回答を閲覧することで、私の問題のほとんどは解決されました。

  Treehouse

Treehouse はビデオコースでプログラミングを教えており、コミュニティフォーラムも運営しています。そこでは、行き詰まったバグや、コース受講中に遭遇した具体的な演習について議論できます。

  askadev

助けが必要なとき、askadev は経験豊富な開発者に連絡することをサポートしてくれます。私はまだこのサービスを試したことがないので、どのくらい役立つのか、すべてのプログラミング言語をカバーしているのかはわかりませんが、無料ですので、次に必要になったときに試してみる価値があります。

  Codementor

経験豊富な開発者に現金を支払って助けを得たいなら、Codementor はあなたが学んでいる言語に精通している人とマッチングしてくれます。Android、iOS、HTML、CSS、PHP、Python、そして多くの技術をカバーしています。

アヒルのおもちゃで問題を解決する

以前に見たことがなければ、「アヒルのおもちゃによる問題解決」のブログ記事は非常に役立ちます。具体的な方法は、小さなアヒルのおもちゃやトースターなどの他の静物に向かって、自分の問題を声に出して説明することです。問題を声に出して説明するプロセスは、自分で答えに気づく(または少なくともどこが間違っているかを知る)のにしばしば役立ちます。私はコードについて声に出して話すことが信じられないほど良い習慣であることを発見し、誰かに助けを求める前には毎回そうするようにしています。

規範を学ぶ

プログラミングを学んでいる間、私に最も影響を与えたのは、使用している技術に対する誤解と不慣れでした。例えば、API を開発するということは、API の仕組み、POST リクエストと GET リクエストの使い方、JSON データの解析方法を理解する必要があることを意味し、さらに JSON データを受け取ることさえ習得する必要がありました。

Objective-C を学ぶことは、iOS アプリを開発するために知っておくべきことのすべてではありません。少なくとも、私が開発したかった種類のアプリについてはそうです。私は Objective-C だけを知っていれば十分だという誤った考えを持っていました。さらに悪いことに、私は頻繁に困難に直面しました。なぜなら、Stack Overflow で回答する人々、オンラインチュートリアル、書籍の章はすべて Objective-C での開発方法を説明しているだけで、私が知る必要のある Web ベースの原則を完全に飛ばしていたからです。彼らは私がそれを知っていると思っていたのです。

もし今日やり直すなら、まず HTML と CSS の知識を補強して積み上げるでしょう。あまりよく知らない新しい技術に遭遇し始めたら、Objective-C で実装する前に、まずその技術について大まかに学ぶでしょう。

どの言語からでも始められる

本当にどこから始めればいいのか、あるいは何を開発したいのかがわからない場合でも、それに影響されてはいけません。私は Ruby と Python の学習に時間を費やし、それらでプロジェクトを完成させてはいませんが、時間を無駄にしたとは思っていません。

初心者の通常の出発点は、Web サイトを開発するために HTML と CSS を学ぶことです。これらは実際にはマークアップ言語であり、モバイルアプリや Web アプリを開発したい場合、HTML と CSS を学ぶのは時間の無駄のように見えるかもしれません。しかし、この場合、あなたは知識と経験を得ることができ、それは引き続きプログラミング言語を学ぶのに役立ちます。

プログラミングの学習を早く始めたくてたまらないけれど、どこから始めればいいかわからないなら、本、チュートリアル、オンラインコースを一つ選んで、気に入ったらやり遂げましょう!開発したいものについてより良い理解が得られたら、いつでも別の言語を学ぶことを選べます。

本当に気になるプロジェクトを見つける

私にとって、最大の学習曲線はおそらく、コードの学習を続けさせる動機を見つけることでした。過去に何度も試みました:子供の頃に HTML と CSS を学び、数年後に Ruby の基礎を学び、最近では Python を学びました。

私が Objective-C を学ぼうと決めたのは、それが Ruby や Python よりも優れていて好きだからでも、Objective-C を学んでいる人を知っているからでもありません。ただ、私には完成させたい iOS アプリのアイデアのリストがあり、本当に開発したいと思ったからです。

私が Objective-C を学ぶ動機は、以前どの言語を学んだときよりも強かったです。なぜなら、開発したい個人的なプロジェクトが私を後押ししていたからです。

最も重要なことは、難易度が上がり、落ち込んだり困難に直面したりしても、私は諦めなかったことです——本当に気になるプロジェクトを開発していたからです。新しい機能を実装してうまく動作するたびに、得られる報酬はさらに素晴らしいものでした。なぜなら、それは私が情熱を注ぐプロジェクトの一部だったからです。

プログラミングを学ぼうと考えていて、言語やプラットフォームの選択に制約がないのであれば、私は明確に、本当に情熱を持てるプロジェクトを選ぶことをお勧めします。そうすることで、プロジェクトが必要とする言語の基礎を築くことができます。

人によって学習方法は異なるため、あなたには私とは異なる経験があるかもしれません。しかし、あなたがちょうど始めたばかりか、プログラミング学習を検討しているなら、私の経験と失敗が学びを早める助けになれば幸いです。

  • 注:アヒルのおもちゃデバッグ法は、ラバーダックデバッグ法、イエローダック除虫法(Rubber Duck Debugging)とも呼ばれ、ソフトウェアエンジニアリングで使用されるデバッグ手法の一つです。プログラムのデバッグ・修正・テストの過程で、忍耐強くアヒルのおもちゃにプログラムの各行の役割を説明することで、ひらめきを引き出すというものです。

記事の出典:www.labazhou.net
英語の原文:What I would do differently if I was learning to code today