CodeGym /Java Blog /ランダム /どうだった?または私の最初のプロジェクト
John Squirrels
レベル 41
San Francisco

どうだった?または私の最初のプロジェクト

ランダム グループに公開済み
これは、グローバル Java コミュニティからの成功事例の翻訳です。Alex は、CodeGym で英語で学習するコースのロシア語版で Java を学びました。それがあなたのさらなる学習のインスピレーションとなり、いつかあなた自身のストーリーを私たちと共有したいと思う日が来るかもしれません:)

導入

私がプログラミングを始めたきっかけについて少しお話します。私は訓練を受けた教師兼心理学者であり、5 年間、自分の職業をうまく実践してきました。しかし、さまざまな理由から、私はますます他の国に移住することを考えるようになりました。また、他の国では言語や規制が異なるため、真剣に再訓練しなければ同じ種類のプロフェッショナルになることはできませんでした。そこで私は、行動して成功するための、よりシンプルで興味深い方法を探し始めました。 どうだった? または私の最初のプロジェクト - 1私はタトゥーアーティストとしての腕を試してみました(これには基本的に言語の知識は必要ありません)が、それはまた別の日の話になります。その後、同僚の友人が私に CodeGym を紹介してくれました。私は最初、ゲームをプレイするだけで一人前のプログラマーになれるという約束に、このような手頃な料金で懐疑的でした。しかしその後、誕生日のお金 (「家族税」の対象外) を手に入れたので、WoW か CodeGym の選択を迫られました... そうですね、タイムリーな割引のおかげで、天秤は正しい方向に傾き、私はここにいます。すでにご存知のとおり、CodeGym は 90% 純粋な実践です。課題を解決することを学びます。自分に足りない知識をインターネットで見つけることを学びます。これはすべて良いことですが、15 レベルでは、私にとって全体像を完成させる何かが欠けているという感覚を払拭することができませんでした。GeekBrains に参加しようかとも考えましたが、(おそらく幸運にも)同じ友人がすぐに止めてくれて、Udemy を紹介してくれました。この知識の宝庫を開いたとき、私は「おい、友達。君は初心者なのか?」という呼びかけに応じました。3 日間限定の割引がございますので、この機会をお見逃しなく! " その後、常に割引があることが明らかになりましたが、それは重要ではありません。私はすぐに 2 つのコースが含まれるパッケージを購入しました。Java 0 から Pro と、Android 用の同様のものです。そして、ここから私たちの物語が始まります。

成功か失敗か?

Android コースを進めていくと、新しい知識に基づいてプロジェクトを作成するという宿題が出されました。私は、何かを単純または普通の方法で行うことは、まったくやっていないのと同じだと考えるタイプの人間です。それで、私はすぐに自分の生活を複雑にし始めました。私は、最も発達した鮮やかな想像力を持っている私の知っている人に相談しました。これは私の愛する妻です(はい、彼女もこの記事を読むでしょう)。彼女は、動物の写真をクリックすると対応する動物の鳴き声が出るアプリを作ることを提案しました。素晴らしいアイデアでしたが、それでも非常にシンプルでした。この提案を基礎として、私は次のように推論し始めました。
  • このアプリはただの単なるもの (笑って忘れられるもの) 以上のものでなければなりません。価値があるものであってほしい。たとえば、何かを教えることによって。
  • 動物のアルファベットにしましょう。しかし、それは単なるアルファベットではなく、英語のアルファベットなのです。
  • 動物だけでなく、あまり知られていない珍しい動物も視野を広げましょう!
  • そして、アニメーション、文字の名前、動物の名前を英語とロシア語で音声再生する必要があります。
これが私が宿題と呼ぶものです (言い忘れていましたが、CodeGym を使用する前は、基本的にプログラミングに不慣れでした。そして、Web サイトを積極的に使用し始めた瞬間からプロジェクトを開始するまで、3 ~ 4 か月もかかりませんでした。この分野のベテランなら、「ふーん…オリジナル バージョンから何か変わった?」と思っているかもしれませんが、確かに、はい、変わりました)! 私が最初に直面した困難は、奇妙なことに、プロジェクトを開始することでした。結局のところ、「ライターズブロック」を経験しているのは作家だけではありません...しかし、私は心理学者なので、自分の問題の解決策を知っていました。ただ何かを始めなければなりません。少なくとも小さな一歩を踏み出し、その後は立ち止まらないでください。そこで私は抽象的な Letter クラスから始めました。このクラスにはいくつかのフィールドがあり、その後、さまざまなメソッドが必要になります。実際のところ、どうすればいいのか全く分かりませんでしたが、何かをしなければなりませんでした。次に、文字ごとにクラスを作成し、抽象クラスを継承させます。かなり時間がかかり、これで私の初日の仕事は終了しました。翌日、プロジェクトを削除してやり直しました。上で説明した瞬間から何が変わったかを思い出すためにプロジェクトを開いたところです。終わった時にはすべてが良くなったと言いたいところですが、そうではありません。実際、各文字にはまだクラスがあります...これは特に、Android コースのほぼ最初にこの宿題が割り当てられたという事実によるもので、文字と文字の間の関係の複雑さを自分で理解する必要がありました。クラスを使用したアクティビティ (アクティブなウィンドウなど)。そして、特定のクラスを特定のアクティビティに関連付けるこの不器用な方法以外に、私は何も見つけられず、思いつきませんでした。とにかく、プログラミングの原則の 1 つ (繰り返しを避ける) が 26 回違反されました。まず、最初の 2 文字を完全に (私にはそう見えました) 実装し、2 つのメニュー (機能を拡張するときに必要になる可能性のある一般的なメニューと、そこから任意のページにジャンプできる目次) で構成される大まかな UI を作成しました。文字の)。プログラミングに関しては特に難しいことはありませんでした。独立したプロジェクトを実装するにつれて、クラス、メソッド間の関係など、多くのことが明らかになり、プロジェクト自体が、Android だけでなく Java についても得たすべての知識を統合するための優れた練習になりました。 2つ目の困難は、その名前が聞こえると同時に文字が切り替わったということ。スムーズなトランジション(陰影)により、サウンドが映像に先行しているかのように見えました。しかし、サウンドにディレイを加えると、スレッド全体がフリーズしました。トランジションは単にディレイの分だけ延期され、後になって初めて同じ望ましくない効果が発生しました。そこで私は、プログラムをマルチスレッド化するという大胆な決断を下しました。画像を読み込むのに十分な長さの遅延を設けて、サウンドの再生を別のスレッドに移動しました。ここまではマルチスレッドに関する話でしたが、私はマルチスレッド アプリを書いていると誇りを持って言えました。 最後の難しさは、適切な材料を選択することでした。英語には文字Xに相当する動物がないと思っていましたか(実際には動物があることが判明しました)。26 匹の動物を識別し、その画像と音声を見つけて、26 文字と 26 匹の動物の名前を記録する必要がありました。もし私がチームで働いていたら、明らかにこの部分の仕事を他の人に任せていたでしょう。そのような単調な瞬間は仕事への意欲を殺し、仕事への意欲がないときは言い訳が必要になります。とにかく、この段階には約 2 週間かかりました (このプロジェクトは空いた時間と言い訳のないときに実行しました)。プロジェクトは開始から約 3 ~ 4 週間後に完了が宣言されました。

プログラミングの勉強を続ける価値はありますか?

幻滅が続いた。まず、コース上で宿題を公開することは許可されていませんでした。私は仕事をして、見せびらかすためにたくさんの努力をしましたが、それは許されませんでした。次に、アプリはエミュレータでも携帯電話でも完璧に動作しました。やろうと思っていたことのうち、アニメーションは実装しませんでした。コース内の関連するレッスンを終えたら完成させようと考えていたからです。しかし、アプリケーションを配布することを考え始めたとき、興味深い問題に遭遇しました。別の携帯電話とタブレットを使用して、アプリがさまざまな画面や Android バージョンに最適化されているかどうかを確認したところ、不明なエラーが発生しました。レターに切り替えると、プログラムは単にシャットダウンします。私は問題の根本を見つけようとして、ログを確認しました。ログは、簡潔な Java 例外と比較すると、さらにホーカス ポーカスのように見えました。インターネットは役に立ちませんでした。一方で、私は子供たちがプレイするのが好きな実用的なアプリを作成しました。一方、それは私の携帯電話でのみ機能します。これは笑えます。もちろん動揺しましたが、よく考えてみると、失ったものよりも得たもののほうが多かったという結論に達しました。
  • 自分の作品に対する批判にうまく対処できるようになりました。
  • ソフトウェア設計における知識と経験の価値を実感しました。
  • 私はプログラミングに対する自尊心を高めました。
  • デザインパターンやリファクタリングの基礎を学ぶ必要性を実感しました。
  • そして、先ほども言ったように、今私は自分のアプリを持っていますが、これは他の誰も持っていないし、おそらく決して持つことはないでしょう。=)
「私は何も知らないことを知っています」。このような教育プロジェクトを実施することで、自分の知識のどこにギャップがあるのか​​を分析し、さらに進歩する方法を特定する素晴らしい機会が得られます。人生の長い段階での努力のすべてがあなたを 0 から +0.001 に引き上げたと理解した場合、プログラミングの学習を続ける価値はありますか? 私の場合、答えはイエスでした。あなたはどうですか?
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION