[相談] コードの意味を完璧に理解して書かなきゃダメですか?

に投稿

よく聞く話で「プログラムを理解してから使え」というのがありますが、理解とはどのくらいのことを指すのでしょうか?

スクリプト例
echo date('m/d',strtotime('+4 day'))//結果 本日か4日後を返す

【理解レベル1】
ネットからひろってきたものをただコピペ
→これはとてもだめなことなのはわかります。間違っていたらバグをまくことになるし、自分の勉強にもなりません。

【理解レベル2】
dataは日付を取得するものでフォーマットはm/dで、
strtotime('+4 day')で本日の日付から4日後を取得している?

ネットから使用例を見て、それを自分なりの解釈で説明でき、実装できる段階。
僕はこのレベルくらいです。このレベルだと案件によっては危険なのでしょうか?
危険のなのはわかるのですが、現実的に時間がなかったり、聞けるひとがいなかったりします。

teratailで聞いてもプログラムの間違いと手本はいただけるのですが、なぜこうなるかについて初心者にわかりやすく伝えられるひとはなかなかお目にかかれないような気がします。 僕の理解力のなさは棚上げしています。

この場合は、第2引数が変わるとこうなるかとPHPマニュアルをみてもちゃんとわからず、例えるならテレビの使い方を知っていて見れるけどなんでテレビを見れるのかわかっていない状態。
こうインプットするとこういうアウトプットがあると予想できるという状態です。

【理解レベル神】
phpマニュアル等を読んで、第2引数がこうなるとこうなる、なぜならこうだからと人に教えられるくらい理解している状態。
僕から見ればこの状態はPCさえあれば全知全能であり崇拝するかんじです。

理解レベルはこれを目指すべきなのはわかるのですが、その場でわからないことがあります。できるだけ調べたり、聞いたりしますが、それでもわからないことがあります。

そのわからないことはずっと覚えていてなにか別のプログラムを書いているときにその部分をさわることになってふとした瞬間に理解できることがあります。

そんな感じでもやっていけるのでしょうか?

僕は、phpマニュアルを見てもなんのこっちゃという感じで他サイトや書籍にある使用例や解説を読んで理解できることは、全部ではないければぼちぼちあるというような感じです。

読者の方から相談メールをいただきました。

同じような悩みを持っている方向けに回答内容を一部紹介します。

「プログラムを理解してから使え」の理解とはどのくらいのレベル?

「プログラム(コードの意味)を理解してから使え」が必ずしも正しいとも限りません。

村上福之さんは「プログラマーが独立するのに必要な2つの勇気」として、

(1) nullなり適当な値をつっこんでコンパイルする勇気
(2) プライドを捨てて、人に聞いたり、頼ったりする勇気

が大切だと仰っています。

どんどん使っていって、使ってくうちに理解するというやり方の方が、次々と新しい技術が生まれる時代には合ってます。

ネットから使用例を見て、自分なりの解釈・説明・実装できる。これじゃ危険?

ミッション・クリティカル(障害や誤作動などが許されない)な案件では、まずいように思われますが、そういう案件の場合、コードレビューやテストが綿密に行われるはずなので十分だと思います。

危険のなのはわかるのですが、現実的に時間がなかったり、聞けるひとがいなかったりします

時間に対する投資対効果を考えることは重要です。
時間を掛けて調査をして、納期に間に合わなかったら意味がありませんからね。

teratailで聞いてもプログラムの間違いと手本はいただけるのですが、なぜこうなるかについて初心者にわかりやすく伝えられるひとはなかなかお目にかかれません。

自分なりに、「こうなのかな?」と考えていくことを積み重ねていくと、ある時、確信が得られる瞬間があると思います。

全てを完璧に理解している人なんていませんからね。「こうなのかな?」って考えていければいいと思います。

この場合は、第2引数が変わるとこうなるかとphpマニュアルをみてもちゃんとわからず、…こうインプットするとこういうアウトプットがあると予想できるという状態です。

分かる範囲でコードを書いていくことで身についていくものもたくさんあります。

プログラミング言語は言葉なので、日本語を覚えるのと同じです。国語辞典の全部の言葉の意味を知ってる人なんていません。それと同じです。

そのわからないことはずっと覚えていてなにか別のプログラムを書いているときにその部分をさわることになってふとした瞬間に理解できることがあります。
そんな感じでもやっていけるのでしょうか?
僕は、phpマニュアルを見てもなんのこっちゃという感じで他サイトや書籍にある使用例や解説を読んで>理解できることは、全部ではないければぼちぼちあるというような感じです。

それでいいと思います!

先輩風を吹かしたがる輩が自分が知ってる分野だけを指して「プログラム(コードの意味)を理解してから使え」と言ってくるかもしれませんが、無視すればいいと思います。

大切なことは目の前の仕事に自分なりのやり方で取り組むことですからね!

プログラミング初心者におすすめのサービス
1. 教室で学びたい派なら

プログラマカレッジは20代限定で、無料で受講できて、修了後、就職支援もしてくれるプログラミングスクールです。最高過ぎですよ、これ!!企業からの協賛金によって運営されいているため無料で受講できるんだそうです。すばらしいシステムだと思います!

30代の方には

プログラマカレッジは20代限定なので30代の方にはゼロスクがおすすめです。35歳以下なら無料で受講できます。教室も札幌、仙台、東京、大阪、神戸、福岡と全国展開しているので地方の方でも利用できます。

2. 自宅で学びたい派なら

TechAcademyの無料コースは20代限定でプログラミングのリモート学習 + 就職支援が無料で受けられるサービスです。なんといっても無料だし、就職に必要なスキルが身につけられるという意味でもやってみて損はないでしょう。

30代以上の方には

TechAcademyの無料コースは20代限定なので30代以上の方にはTechAcademyのJavaコースをおすすめします。Javaは求人が多くプログラマーとして就職したい方にはぴったりです。

3. つまづいた時に質問したくなったら

プログラマー専用の質問サイトteratailをおすすめします。 つまづいた時にteratrailで質問すれば教えてもらえます。

4. エンジニア未経験の人でも利用できる転職エージェント

ワークポートは未経験の人の転職活動も支援してくれますし、全国の求人を扱っているので地方在住の方にもご利用いただけます。お給料をもらいながら社内研修でプログラミングを学べる会社が狙い目です。

これらのサービスを活用すれば、全くの初心者からでもプログラミングをばっちり出来るようになると思います!レッツトライです!

 - 技術