blog

そもそもプログラミングを学んでいるときに、このようなアドバイスをしてくれる人がいたらどんなによかっただろう!

[]\nプログラミングを学びながら目標を考える\nプログラミングは創造することがほとんどであることを知り、最終的なゴールを意識することで、道はより明確になります。プログラミングができるようになる」こと...

Jul 6, 2025 · 6 min. read
シェア

[]

あなたがプログラミングを学ぶとき、ゴールについて考えてみてください。

プログラミングは創造することがほとんどだと知っていれば、最終的なゴールが明確になります。どのようなプログラミングをするのか、どのように生活をより良くするのかを具体的に学ぶのではなく、「プログラミングを学ぶ」ことが目的であれば、挫折してしまうかもしれません。

コンピュータ・サイエンスを勉強する動機のひとつは、自分が賢いことを証明するためであり、「賢い人たち」の仕事をしたいということだったことを認めるのは少し恥ずかしいです。数学や理論について考えるのも好きでしたし、プログラミングは良い選択でした。もちろん、それだけでは長く続けられませんでしたが、本当に続けられたのは、プログラミングが自分の本当に好きなことに技術をつなげられるという発見があったからです。

さて、あなたは何について書きたいですか?ウェブサイト?iPhoneアプリ?富裕層向けビジネスソフト?インタラクティブアート?上司の気を引きたい?それともカワウソの写真を見る時間を増やすために面倒な作業を自動化しようとしているのですか?もしかしたら、履歴書に技術的なバズワードを追加するため、あるいは教育的な必要性を満たすために、より雇用されやすくなりたいだけかもしれません。どれも立派な目標です。どれが自分の望むものかを確認し、それに従って学習する必要がありますね?

何の不思議もありません。

プログラミングは、他のすべてのものと同様、技術です。言語学習と同じように、習得すべき文法や語彙があり、数学と同じように、特定のタイプの問題を解くための処理方法があり、さまざまな工芸品や芸術作品と同じように、さまざまなタイプのタスクを解決するために人々が長年かけて開発したテクニックやツール、ベストプラクティスのソリューションがあり、それらを使ったり、変更したり、捨てたりするのは自由です。

ジョエル・スポルスキーは、「プログラマーとしての真の頭脳」を持つ人と、その分野で成功するために必要な知的能力に欠ける人の間には明確な境界線があると主張しています。彼によれば、この境界線にはポインタと再帰が含まれるとのこと。

私は学生時代にポインタと再帰を勉強し、それをマスターしたとき、私の脳は心地よい揺らぎを覚えました。しかし、ポインタや再帰を教室での演習以外で使うことは比較的少なかったのです。その後、何度も何度も他の人の学習を手伝っているうちに、これらのテクニックをマスターしなくても、とても興味深く役に立つプロジェクトができることに気づきました。

自分が「十分に賢い」のかどうか、疑問に思ったり恐れたりすることに意味はありません。もちろん、その仕事が複雑で難解であればあるほど、必要な知識レベルは高くなります。しかし、これは他のどんな分野にも当てはまります。プログラミングだけで生きていくつもりでない限り、物事を成し遂げるために再帰の天才である必要はないでしょう。

プログラミングを習いたてのころは、やりたいことはすべてやったつもりで、何度も何度もチェックして、それでもうまくいかないという奇妙な体験にすぐにぶつかります。どこから直せばいいのか見当もつかず、エラーメッセージは「ふざけるな」と言っているようです。自分にはプログラミングは向いていないんだ」と諦めてしまうかもしれません。私も最初はそう思っていました。C++でプログラムを書いて実行しようとすると、「セグメンテーション・フォールト」というトラブルが発生するのです。

しかし、このような経験は、あらゆる技術レベルのプログラマーにとってあまりにも一般的なことであり、IQや技術的な知識、プログラミング職業への適性とはまったく関係がありません。初心者はこのような状況に遭遇しますし、経験豊富なプログラマーもこのような状況に遭遇します。主な違いは、その状況にどう対応するかということです。

初心者のプログラマーと経験豊富なプログラマーとの大きな違いのひとつは、物事がうまくいかないのは論理的な理由があり、それを見つけることができる、バグは修正することができる、目標を達成する方法がある、という信念を持っていることだと私は感じています。間違った動作」から「正しい動作」に至るプロセスは明白ではないかもしれませんが、忍耐強く取り組めば、たいていの場合は解明できるものです。

基本的に、与えられた問題には常に多くの異なるアプローチがあり、何かをするための唯一の「正しい方法」は存在しません。多くのプログラマーは自分の好きな、あるいは好みのアプローチを主張するのが得意ですが、だからといってそれが「唯一の正しい方法」だとは限りません。もし人と面と向かって議論して、私が間違っていると言われたら、私はその人が必ずしも正しいかどうかを考えようとします。

他の人たちと一緒にグループ・プログラミングをしていると、いつもあなたのやっていることを指弾する人たちがいるはずです。時々、彼らは正しいことを言うのですが、あなたが実際に「間違ったことをやっている」のかどうか、常に確かめる価値があります。しかし、時には全くくだらないことだったり、古くて無意味な議論を再燃させているだけだったりすることもあるので、慣れて忘れてしまった方がいいでしょう。逆に、あなたが個人的に古くて無意味な議論を楽しんでいるのであれば、言うまでもなく、あなたは正しい場所に来ています。

HTMLは本当のプログラミングではない」「viを使わなければ真剣味が足りない」「本当のプログラマーはCを知っている」「本当のプログラマーはウィンドウズを使わない」「学ばない人もいる」「プログラミングを学ぶべきでない」「あなたはコンピューター・プログラマーではない」。

「プログラミング "は、人によって全く異なる意味を持ち、昔と今では同じようには見えません。ツールやパッケージ、フレームワークは、初心者や訓練された開発者にとっても開発をより速く簡単にすることが知られていますが、そのために「本物のプログラマーではない」というレッテルを貼られることが多いのは興味深いことです。

もし "誰でも "本物のプログラマーを名乗る勇気があるなら、この記事のタイトルは無意味だ」という恐怖が背後にあるのです。しかし、このような保守的な行動は非常に破壊的だと思います。

開発しやすいツールを使えばいいのです。そのゲームが、自分で一から書いたものではなく、StencylやGameMakerで作られたものであっても構いません。初めてHTMLやExcelマクロでプログラミングするのであれば、それもOKです。あなたがそれにこだわることができれば。

しかし、ほとんどの場合、コードを見たり、どんなツールを使っているかを尋ねたりする人はほとんどいません。

ひとつ心に留めておいてほしいのは、プログラミングが得意かどうかは、あなたが実際にさまざまなギークのサブカルチャーにどれだけなじめるかとは、まったく関係がないということです。もしあなたが、心の奥底で自分がこれらのサブカルチャーに馴染めないことを知っているのなら、そのことを2倍覚えておく必要があります。自分を証明しようとして浪費するエネルギーは、何か価値あることに使うべきですし、たとえあなたが信頼に足る眼光を放つ文句なしのオタクであったとしても、他人の信頼度を評価しているからといって、それが正しくて真実であるとは限らないことを忘れないでください。

プログラミングを学ぶための「正しい」あるいは「最良の」方法についての記事は尽きることがありません。本からコンセプトを学んだり、インタラクティブな練習問題をこなしたり、他の人が書いたものをデバッグしたり。もちろん、最初に学ぶときに選択すべき言語はたくさんあり、それぞれに宣伝文句や主張があります。

プログラミングを独学で学ぶ」プロセスやワークショップに対する一般的な不満は、初心者のための教材で簡単に始められたのに、だんだん難しくなって、あっという間に急な学習曲線に突入してしまうことです。ページに何行かのテキストを印刷する方法は知っていても、「本当の」役に立つプロジェクトでは何から始めたらいいのかわからないのです。本当にマスターすることなく、ただガイドラインに従っているように感じ、そして教材のせいにするかもしれません。

ここまでくれば、利用可能なチュートリアルやオンラインリソースのほとんどは、すでに経験豊富なプログラマーになってしまっているため、それほど役に立ちません。その上、「他に何を知らないのかわからない」という事実によってさらに困難が増し、次に何を学ぼうとしているのかを正確に把握しようとすること自体が挑戦なのです。

どのような「プログラミング」プログラムに従おうとも、この壁を突破する唯一の方法は、粘り強く取り組むことです。つまり、新しいことに挑戦し続け、より多くのことを学び、プロジェクトを一歩一歩発展させる方法を見つけ出すことです。そもそもなぜプログラミングをしたいのかがはっきりしていれば、最終的に成功する可能性は非常に高いのです。

少しずつレンガを積むことにこだわれば、壁ができるまで長い時間がかかるかもしれませんが、いずれはできるものです。そこで役に立つのが、先に述べた信念です。時間と忍耐があれば、プログラミングの全課題を完成させることができると信じていれば、その時が来れば、必ず望むものを手に入れることができるのです。

Read next

シスアドが知っておくべきこと:マルウェアに対処するための5つのステップ

高度なマルウェアの巧妙さ、そして問題の複雑さと広範さが明らかになるにつれ、ボットネットの浄化は簡単な作業ではありません。残念ながら、組織がこの種の問題に遭遇した場合、システム管理者がシステムをシャットダウンしてイメージを再インストールするだけでは回避することはできません。この記事では、マルウェアに対処するための戦略を学ぶための5つのステップを紹介します。

Jul 6, 2025 · 4 min read