よをこめてねむる

  • ホーム
  • プログラミング初心者にアドバイスするなら?【プログラミング歴20年】

プログラミング初心者にアドバイスするなら?【プログラミング歴20年】

プログラミング初心者に何かアドバイスをする。
とするなら、何とアドバイスするだろうか。

私はもう20年ほどプログラミングをやっているが、20年前の自分にアドバイスできるなら、何とアドバイスするだろう。
この記事ではそのことについて考えてみる。

初心者の人のためになることを書くつもりである。
よかったら読んでいってほしい。

最近のプログラミング事情

2025年6月時点でのプログラミングの動向だが、やはり一番大きいのはAIであろう。
ChatGPTをはじめとしたAIによって、プログラミングは様変わりしていっている過程にある。

具体的には自分ではコードを書かずに、AIにコードを書かせるプログラマーが増えているらしい。
私もAIは活用するが、AIにすべてのコードを書かせる訳ではない。
ただ、すでにGoogle検索よりChatGPTに聞いた方が目的が早く達成できるようになっている。

これからのプログラミングはいかにしてAIを活用するか、というのが大事になっていくだろう。

能力開発について

プログラミングを身に着けたい初心者は、能力を身に着けたいと思っている。
つまり、プログラミングという能力を自分のものにしたいと思っているはずである。

だが、ここでちょっと、最近は困ったことが起こっている。
というのも、プログラミングがあまり出来ない人は、AIにコードを書かせた方が良いコードができるのである。

よって、AIにコードを書かせた方が良いものができる、という可能性がある。
それはいいのだが、困るのは、AIにコードを書かせると、自分の能力は開発されないということである。

AIにコードを書かせると能力が開発されない。

よって、AIにコードを書かせずに自分でコードを書くという練習を積まないと、プログラミングの能力は身につかないであろう。

AI時代にプログラミング能力はいるのか?

そこで初心者の人が心配になるのが、AIにコードを書かせた方が品質が良いなら、自分で書くのではなく、プログラミングはAIにやらせたほうがいいのではないか。
という疑問である。

なるほど、確かにそうだ。
自分で書くよりAIに書かせた方が良いものができるのだから、自分で書く必要はない。

自分で書く必要がないなら、プログラミングの能力も開発する必要はない。
プログラミングの能力を開発する必要がないなら、プログラミングの勉強もする必要がない。
ということになる。

果たして、これはその通りなのだろうか。

AIは責任を取れない

AIはツールであり、責任を取ることができない。
責任を取るのはツールを使っている人間である。

よって、人間にはAIの生成物を検証する必要がある。
AIの書いたコードも検証が必要である。

なぜならAIはハルシネーションと言って、よく嘘をつくからである。
コードにも嘘が含まれていることがある。
それはバグになり、プログラムで変な動作を起こす。

私もAIに書かせたコードにバグが巧妙に含まれていて、それを取り除いた経験がある。
AIはそんなことをやっても澄ました顔をしている。無責任なやつである。

つまり、AIにコードを書かせるなら、そのコードの責任は人間がとらないといけない。
よって、人間はAIの書いたコードを読める必要がある。
そして、変なところを指摘できるようしておかないといけない。

と私は思うのである。

プログラミング初心者とAI

AIの書いたコードを検証できて、そのコードの責任を取れる人間は依然として必要である。
だが、AIも使いようだ。

プログラミング初心者の人にはAIを活用してプログラミングを勉強することをおすすめしたい。
無料版でいいので、ChatGPTと一緒にプログラミングを勉強してほしい。

具体的には、プログラミングの問題をChatGPTに出させるといいだろう。
PythonならPythonの初心者用問題を出させる。
そして、それを毎日こつこつと解く。

そういったAIの使い方をすれば、AIはあなたの能力開発に大いに貢献するだろう。
これは壁打ちと呼ばれていて、すでにやってる人はやり続けている。

この壁打ちをしている人としていない人とで、これから能力格差が生まれていくだろうと思われる。

プログラミング初心者が気を付けたいこと

プログラミング初心者が気を付けなければいけないことはなんだろうか。
これは色々ある。

一つ言えるのは、あなたはカモになる可能性があるということだ。
「カモ」とは、獲物のことである。

つまり世の中にはハンター、狩人がいて、カモを狙っているわけだ。
なぜ狙うのかというと、その血肉を預かるためである。
酒の肴にするのである。

この血肉というのはお金のことだ。

ハンターたちはあなたのお金を目的に、初心者のあなたを騙してくることもある。
弱肉強食の世界では、騙される方が悪いという不道徳なルールがある。
ハンターたちもそのルールにしたがって生きている。

そういう恐ろしいハンターたちのカモにならないようにすることだ。
それがまず大事である。

プログラミング初心者がやるべきこと

プログラミング初心者がやるべきことは、勉学に勤しむ(いそしむ)ことである。
つまり、教材を得て、その教材を毎日コツコツとやる。

ということで最初は教材を選ぶところから必要だろう。
教材は無料のものも有料のものもあるが、有料のものは質が良いこともある。
もっとも、無料、有料で必ず有料の方が質がいいとは限らないので注意した方が良い。

筆者は昔「苦しんで覚えるC言語」という教材でC言語を学習した。
これは良い教材である。
ネットで見れるので検索してみるといい。

教材選びというのは、著者との相性である。
著者と相性が良ければ読み進めやすい。
よって、多くの教材に触れるのが大事であるといえる。

少しばかりのお金を払って本を買うことは、大いに結構なことである。
合わなかったら、売って別の本を買えばいいだろう。
あるいはある程度立ち読みして、本との相性を確認してもいいだろう。

モチベーションについて

プログラミングの独学で問題になるのがモチベーションである。
いざ勉強をしてみようと思ってもモチベーションがない。

そのため、勉強から離れて遊んでしまう。
これは独学のあるあるであるある。

これはどうしたらいいのかというと、一つ正解がある。
それが「作業興奮」というものだ。

作業興奮とは、やる気がない状態でも作業が初めて見ると次第に脳が興奮してやる気が湧いてくることを言う。
つまりモチベーションがないなら、とりあえず無理やり作業をするのである。

そうすると脳が興奮してきてやる気が湧いてくる。
私もこれは愛用しているので初心者の人もやって見るとよいだろう。

独学の手法

プログラミングの独学の手法について。

独学の基本は「反復」である。
毎日コツコツ反復して継続する。
これが一番効率がいい。

しかし、毎日反復するのはモチベーションの維持が大変である。
そこでコツは「ちょっとずつ」反復することである。

1時間も2時間もずっと勉強するのではなく、ちょっとずつ勉強するのである。
たとえば10分から15分ぐらいの短い時間で。

一言で言うと

  • 毎日ちょっとずつ反復して継続する

ということになる。
これに加えて、

  • モチベーションは作業興奮で起こす

ということを意識すると、継続しやすくなる。

挫折したときの対応方法

しかしとにかくプログラミングの独学は挫折しやすいものである。
私も何回も挫折した。

これは対応方法があって以下の通りである。

  • 挫折をする
  • 時間を置いてプログラミングから離れる
  • 傷が癒えたら再チャレンジする

挫折をしたらまずプログラミングから離れる。
そして時間を置く。
時間は人によるが数週間の場合もあれば数か月の場合もある。

時間によって挫折の傷が癒えるので、傷が癒えたら再びチャレンジする。
挫折をしたらこれを繰り返す。

私の経験ではこのサイクルを2回繰り返して、壁をなんとか乗り越えたことがある。
挫折したときは参考にされると良い。

ジャンルについて

プログラミングを学んでいくと、基礎的なものを学んだあとはジャンルを選択することになる。
ジャンルとは例えば・・・

  • 文字列処理
  • 画像処理
  • GUIプログラミング
  • Webプログラミング
  • 音声処理
  • 自然言語処理
  • AI
  • 組み込み
  • etc...

などである。

これらのジャンルを選んで、その道を探求していくことになる。
ここら辺になってくるとプログラミングの勉強は大変面白くなる。
と同時に、難易度も上がってくる。

特にやりたいジャンルがないという人は、文字列処理をおすすめする。
文字列の処理は、非常に基礎的な技術で、マスターしておけば色々なシーンで使える。
パースや状態遷移など、そういった技術を習得しておくといいだろう。

将来的なビジョン

プログラミングを学んでいく上で、将来的なビジョンを持つのは大事である。

ビジョンとは「将来、自分がどうなりたいか」というものである。
つまりプログラミングを通じて自分がどうなっていきたいかを考えるのである。

たとえば・・・

  • プログラマーになりたい
  • エンジニアになりたい
  • ソフトウェア開発者になりたい
  • 個人開発者になりたい
  • 億万長者になりたい

など、そういったビジョンが大事である。
あるいはもっと細かく見て・・・

  • Webエンジニアになりたい
  • 組み込みエンジニアになりたい
  • ネットワークエンジニアになりたい
  • ゲームエンジニアになりたい

なども良いだろう。
これらはビジョンの輪郭がよりはっきりしている。

ビジョンを持つということは勉強の内容も変わるということだ。
たとえばWebエンジニアになりたいならWebの勉強が増える。
組み込みなら組み込みの勉強が増える。という風に。

このように将来のビジョンを明確にすると、現在の自分の行動も変わってくる。
よって明確なビジョンを持つことが大事だと言える。

金銭的なところ

金銭的余裕があるかないかで、プログラミングの勉強方法も変わる。
たとえば金銭的に余裕があるなら、プログラミングスクールなどに通う方法がある。

たいていのスクールではプロのエンジニアが講師をやっているので、そういうプロに質問をしたりすることができるようになっている。
その辺は利点があるだろう。

だが、金銭的に余裕がない人はそういうスクールに通うことはできないだろう。
そういう場合は、やはり最低限としては本、そしてAIである。

良い本を一冊買い、それを毎日コツコツとやる。
勉強を続ける、というのが、そういう人たちの勉強法である。

しかし最近はAIの進化が目覚ましく、AIを利用しない手はない状態である。
わからないことはAIに聞いて、時間を節約することができる。

本を基本にして、それを補完する形でAIを使う。
というのが、今の独学ではオーソドックスな方法になるだろう。

AIを使ったことがない人は、これを機会にAIを使うことを覚えた方が良い。
ChatGPTがおすすめである。

情熱について

プログラミングの情熱、とはなんだろうか。

問題を解決したい、あるいは自動化して楽をしたい。
そういうのがプログラミングの情熱になる。

あるいは美しいコードを書きたい、とか、完璧な設計をしたい、など。
人によってプログラミングの情熱は違う。

プログラミングを勉強したてのころ、初心者の頃は、この情熱は形が定まっていない。
つまり初心者はよくわからない情熱、よくわからない根拠でプログラミングをすることになる。

もっとも、目標はあるだろう。
プログラマーになりたいとか、エンジニアになりたいとか、アプリを作りたいとか。

だが目標よりも大事なのは情熱である。
自分がプログラミングの何に情熱を感じられるのか。
それを探求していってもらいたいところである。

作るものについて(モチーフ)

何を作ったらいいのか。
というところだが、これは初心者なら何でもいい。
何でも好きなものを作ってほしい。

というのも、初心者のうちは、大したソフトウェアは作れない。
なので、作ったソフトウェアはお蔵入りになることが多いだろう。

これが中級者以上になってくると、価値のあるソフトウェアを作ることが出来るようになってくる。
そうすると、開発を継続して、ゆくゆくは販売、なんてことも可能になってくる。

だが初心者のうちは、そのようなソフトウェアは作れないと思っていい。
だから、ソフトウェアを作るのはあくまで自己鍛錬のためである。
自分を鍛えるためにソフトウェアを作ればいい。

だから何を作るかというモチーフは、自分の好きなものを選べばいいだろう。

私も初心者の頃に作ったソフトウェアはほとんどお蔵入りするか、ソースコードが行方不明になっている。
何を作ったかも覚えていない。
そういうのが嫌な人は、日記をつけて何を作ったか記録するといいだろう。
10年経った時にそれを見返せば懐かしい気持ちになることが出来ると思う。

ハッカーについて

「ハッカー」という言葉は、今ではいろいろな意味を持つようになった。

ハッカー文化圏で名を上げ、ハッカーたちからハッカーだと認められたハッカー。
あるいは、他人のパソコンに不法に侵入して破壊行為をするハッカー。

破壊行為をするハッカーをクラッカーと呼ぼうという運動もある。
そういったハッカーはブラック・ハット・ハッカーと呼ばれたりもする。

破壊行為からパソコンを守るハッカーはホワイト・ハット・ハッカーと呼ばれたりする。
ホワイト・ハット・ハッカーはブラック・ハット・ハッカーから人々を守るハッカーである。

もともとハッカーという呼称は、ハック、つまりちょっとしたアイデアで大きな成果を上げるような、そういった行為をする者をハッカーと呼んでいたらしい。
しかし、歴史が長くなるにつれて、映画の影響などでハッキング行為をするものをハッカーと呼ぶ風潮ができたり、それに反対してクラッカーという新しい名称が作られたりした。

ハッカーという呼称は権威がある。
「How to become a hacker」という文書ではハッカーはハッカー文化圏で認められたものに与えられる呼称だと書かれている。
ゆえに、ハッカーという呼称はなかなか手に入らず、権威性がある。

ハッカーという呼称はブランド化されて、この呼称に一抹の思いを持っている開発者は多い。
だが、現状は、ハッカーという呼称の持つ意味は、それぞれの開発者によって違ってしまっている。
古からのハッカーは自分たちこそがハッカーだと思っており、ブラック・ハット・ハッカーは自分らがハッカーだと思っている。

もし君がハッカーを目指すなら、ハッカーという呼称はそういうしがらみが色々あることを覚えておいてほしい。

就職について

私は正社員になった経験がない。
あるのはフリーランスの経験ぐらいである。

なので、私はみなさんに就職のアドバイスをあまりできない。
だが、フリーランスになりたいと言うなら多少はアドバイスできる。

フリーランスは実力主義の世界である。
スキルが無い人はひどい扱いになる。
いつクビを切られるかわからない、不安定な存在になってしまう。

私の経験した現場にもスキルの低いフリーランスがいたが、その人は結局切られてしまった。
そういう無慈悲な世界がフリーランスの世界である。

正社員になれるなら正社員になったほうがいいだろう。
正社員は派遣やフリーランスほど簡単に首は切られない。
たとえ無能でも毎月お給料を払ってもらえる。

資本主義社会は競争社会であり、競争が本質的である。
そのため、自己鍛錬は忘れずに続けた方が良いだろう。

本について

プログラミング初心者の人に言いたいが、本は大事にしてほしい。
あなたの道しるべになるものは、本である。
あるいは、ネット上の文章でもいい。

本は人生を変える力を持っている。
あなたが今の人生から変化を望んでいるなら、それは本の力に頼ることになるだろう。

本は一度読んだだけでは駄目である。
なんども読む必要がある。

東大主席で弁護士になった女性は7回読みを推奨していた。
だが、7回読むのは、超人の仕事である。
せいぜい読めても2~3回だろう。

だが良い本は読めば読んだだけ、あなたの血肉になる。
その血肉はあなたの人生を変える力になる。

自己啓発セミナーなどに参加するぐらいなら、本を何冊か買い、その本を何度も読む。
それが一番良い自己投資になる。

しかし、本は読む訓練が必要だ。
最初は1ページも読めないだろう。
だが最初の頃は1日1ページを目標に読むようにする。
それを1か月続ける。

すると読書体力がついて、2ページ読めるようになる。
それを続けていくと1回で何ページも読めるようになってくる。

本を読むのは訓練が必要だ。
頑張ってほしい。