知らないと損する!プログラミングが難しい理由と上手な付き合い方

プログラミング 学習
プログラミング

学習

らくだ
らくだ

こんにちは。
プログラミング好きのらくだです。

キャリア20年以上の現役プログラマで、
メンターをしています。

プログラミングが難しい!

と思う人の疑問に向けた記事です。
なぜ?が分かれば、どうしたら良いかというヒントになると思いますよ。

早速ですが、あなたは
プログラミングは簡単だ!
と思いますか?

もしそうなら、素直に尊敬します。(;^ ^)

私は学生時代に情報処理を勉強し、
IT企業・ユーザ企業で20年以上プログラミングをしています。

でも、プログラミングが簡単だと思ったことはありません。
むしろ、やればやる程・理解すればする程
「難しいな~」
と感じます。

でも、それは「出来ない」とか「無理・やってもムダ」と言う訳ではありません。

その逆で、
「だからこそ、やる価値がある」、「面白い」
と思うのです。

私はB’zが好きで、Easy Come, Easy Go!
というフレーズを良く思い出して勇気をもらいます。
日本語では「悪銭身につかず」になるそうですが、
私は、このフレーズを逆に受け取っています。

どういう事かと言うと、
苦労して身に付けた事には価値がある
という教訓だと思えるのです。

様々なシステム開発プロジェクトに参画してプログラムを作ってきたおかげで、
ある程度イメージするものは作れます。が、今もプログラミングは難しいと思っています。

なので、あなたがプログラミングを始めて間もないとしたら、
過去の自分に重ねて
「難しくてあたり前だよ。それだけの価値があるから。」
と伝えたいです。

なぜプログラミングは難しいのか?
どうしたら身につくのか?

について、自分の経験とプログラミングメンターとして
教える中で感じたポイントをご紹介します。

らくだ

プログラミングの基礎を身に付けるまでの時間は、
平均で200~350時間らしいよ。
多いと感じるかも知れないけど、
私は「そんな短時間で身に付くの?」と思った。

それだけの価値はあるから、焦らずにね。

Easy Come,Easy Go!

プログラミングが難しいと感じる理由とは?

プログラミングはなぜ難しいのでしょうか?

個人的には、20年以上仕事してプログラミングを続け辿り着いた結論が

「プログラミングは難しいものだ」

です。だから何が難しい?
と聞かれ得れば、山ほど出てきます。。
(勉強不足かも知れませんが。)

なのでここでは、
プログラミングの経験がなかったり、少ない時の挫折ポイントを紹介しますね。

・英語と記号の羅列で意味不明

ソースコードプログラミングは、英語と記号が並んでいるだけで意味が分からない。

確かにそうですね。私も知らなければそう思うと思います。

でも、これは勘違いなので大丈夫です。

むしろシンプルにする為に工夫した結果があのやり方なのです。

プログラミングは、本質的に私たちが普段行っている文章と変わりません。書き方が違うだけです。

表現の仕方の違いで説明してみますね。

普段、相手に伝える時は文章を使いますよね。
この時、相手や目的によって書き方を変えていると思います。

あいさつを伝える時は、文章で書きます。
「こんにちは」

英語圏の人に伝える時は、相手の言葉を使います。
「Hello!」

音を書く時は、楽譜を使います。(注)私は読めません
楽譜

 

 

 

コンピュータへの命令は、プログラミング言語を使います。(これは読めます!)
「Console.WriteLine(“Hello World!”);」

こういう違いです。
普段使っている言葉(自然言語と言います)を考えても、
日本語なら、
「主語と述語では主語が先」
「名詞は独立して使える」
「動詞は、う段の音」
というルールを小学校で教わりましたよね! ^^) _旦~~

普段意識していなくても、決まったルールを守っている訳です。
で、コンピュータに指示する時のルールが「プログラミング言語」です。
よく見ると、”言語“なんて付いてますね。

自然言語には日本語、英語、スペイン語などの種類があるように、
プログラミング言語にはC言語、JAVA言語などがあります。

見慣れたWebページも、実はHTMLという言語で書かれているんです。
これは「HyperText Markup Language」の略で、
ちゃんと”言語“が付いてるんですよ。
ちなみにHTMLだと、さっきのはこうです。
「<div>Hello World!</div>」

だから、この”言語“のルールを覚えれば使える、という事なんですよ。
誰だって初めから日本語の活用形は使えませんよね。

動詞「聞く」の五段活用(昔習った気が。。)
・未然形:聞かない
・連用形:聞きます
・終止形:聞く
・連体形:聞くとき
・仮定形:聞けば
・命令形:聞け
今考えると、日本語はとんでもなく難しい言語だと心底思います。
母国語で良かった。といつも思います。

これと一緒です。こんな難しいのに、みんな使いこなしてますよね!

改めて見るとこれは凄い事ですよ!きちんとルールを覚えているからなんですよね。

プログラムの学習に戻ると、この学習の壁につまずく人は、
JAVA、Ruby、HTMLなど異なる言語を同時に見てしまっているかも知れません。

これは、日本語と英語とフランス語の文章を並べて読もうとする荒業に見えます(*_*)

一つずつに絞ってルールを覚えれば、それぞれは難しくはありませんよ。

・覚える事が多すぎて何からやれば良いか分からない

はっきり言って覚える事は多いです。

だから、狙いを絞りましょう。
沢山の事に目を向けてしまうと、結果的に身に付くスピードが落ちてしまいます。

プログラミングができるようになる為に必要な事は何でしょうか?

プログラミング言語を身に付ける

そうです。もちろん必要です。
ですがこれだけでは出来ません。

少し挙げると、

  • ツールの使い方やOSの知識
  • Webやネットワークとプロトコル
  • データベース、ファイル
  • 文字コード、正規表現、ロケール、、、
  • etc…

本格的に開発をするなら、設計やテストのスキルが必要です。

しかも、世の中のIT環境は進化が早くて、
新しい技術が次々と生まれるので、全てを覚えるなんて普通は無理ですし、
そんな必要はありません。

それより、プログラミング言語を1つに絞って、
ある程度身に付けることをオススメします。

これによって、
プログラミング思考が身につきます。
これは様々な部分で応用が利きますし、
他のプログラミング言語を覚える時も楽になります。
(JAVAならこうだけど、Pythonではこう書くんだな。という翻訳ができます)

プログラミング思考の重要性については、
多くの著名人が示しており、文科省も人材育成のテーマとして挙げています。
(参考:文部科学省:小学校プログラミング教育の手引

色々な事は「必要な時に」覚えれば良いと思います。
キリがないので。。

プログラミング学習時に陥りがちな罠と注意点

プログラミングの学習を始める時に、
気を付けないと効率が悪くなることがあります。

せっかく学ぶのですから、挫折ポイントは避けたいですよね。
以下は要注意です。

(幅)一度に全体を覚えようとする

全体を知るのは大事ですが一度に覚えなくても大丈夫です。

プログラミングの書籍やWebなどの教材で学ぶとき、
1ページ目から1章、2章… と進んでませんか?

飛ばして大丈夫ですよ!

むしろ
「面白そう!」「やってみたい」
と思った所からやる方が良いです。

教材はいわゆる「教科書」がほとんどなので、
章立てて基礎から順番に記載されています。
でもそれって、
退屈じゃないですか?

確かに勉強なのでつまらないと思っても大事な事はあります。
ただ、どうせなら
楽しく身に付く方が良くないですか?

私は、「面白い!」「なるほど!」と感じるのが好きです。
そんな時にスキルアップしたのを感じます。

学校の勉強とは違ってプログラミングの場合、
学ぶ順番はあまり重要ではありません。

いつでも戻れるし、ありがたい事に必要・重要な事は、
必ず行き詰ってくれます。

表現がおかしいかも知れませんが、
つまり、「必要な時が来たらその時に身に付ければ良い」ということです。
偉大なYAGNIの法則です。

やりたい所からやりましょう!

(深さ)完璧に覚えようとする

一度で完璧に覚えなくて良いです。

それって難しいですよね?

覚えられる人もいますが、
(少なくても私のケースでは)「分からない!」ということは沢山あります。

それは問題ありませんよ。
とりあえず「ふ~ん。」という感じで飛ばします。
ただ、
「これは分かんないな」
という情報だけは覚えておくと役に立ちます。
(付箋を貼っておくイメージ)

少し進んだ後で、この付箋をめくると
「なんだ。そういう事か!」
という事があります。

一度で理解できない時、
その原因が、その時点では知識・経験が足りていない場合があります。

他を進めるうちに不足分が身に付いて、
いつの間にか初めは理解できなかったことが自然に分かることがあります。

だから、
「私にとっては今じゃないな」
ぐらいで気に留めないで良いです。

分からなかったら飛ばしましょう

プログラミングの学びかた

基礎は大事

勉強や習い事と同じで、基礎・基本は重要です。
特にプログラミングの場合、
対象がコンピュータだから極端な話、
「全てがロジカルな原理で成立している」
と言えます。

らくだ
らくだ

そうなんですよ~

融通が利かない堅物です。良くも悪くも常に完璧です。

「適当に」とか、「念の為、一応」がありません。

 

人間なら友達にはなりません。

私 「朝一でこれやっといてね。」

com「日本時間の何時何分何秒か指定して下さい。」

私 「。。。やっぱいいや」

プログラミング言語を、語学学習になぞらえると良いかも知れません。
学校で英語を習う時も、
「私は」が「I am」で、「過去形は ed(d) が付く」などの
ルールがあったと思います。(ボロが出るのでここまでにします)

それ自体の意味というよりは、「型」として覚える要素がありますよね。
これらは「書き方のルール」なので、素直に覚えましょう。
(変数、制御文、配列など)

実際に作ってみる

ある程度型を覚えたら、実際に作りましょう。実戦が一番スキルアップになります。
(ただし、あくまでもある程度ですよ。完璧を求めてはいけません)

小さなプログラムを作ってみると良いです。
(初めから大きな山を登ろうとすると、挫折します)

プログラミングスクールで学ぶ

体系的に学ぶ場合、プログラミングスクールを利用するのもお薦めです。

これは、上記の「基礎を身に付ける」について教材が利用できます。

また、大抵は演習や課題を通して「実践」を経験できますので、
ここで講師への質問を通して理解を深める事ができるでしょう。

以前は、直接スクールへ通うのが主流でしたが、
昨今の状況もあり、オンラインスクールがとても充実しています。

通学時間が不要で自分の都合に合わせられるので実施しやすいなどのメリットは大きくて、
業界的にも成長しているようですね。

 

コメント

タイトルとURLをコピーしました