[相談] コードの意味を完璧に理解して書かなきゃダメですか?
よく聞く話で「プログラムを理解してから使え」というのがありますが、理解とはどのくらいのことを指すのでしょうか?
スクリプト例
echo date(‘m/d’,strtotime(‘+4 day’))//結果 本日か4日後を返す
【理解レベル1】
ネットからひろってきたものをただコピペ
→これはとてもだめなことなのはわかります。間違っていたらバグをまくことになるし、自分の勉強にもなりません。
【理解レベル2】
dataは日付を取得するものでフォーマットはm/dで、
strtotime(‘+4 day’)で本日の日付から4日後を取得している?
ネットから使用例を見て、それを自分なりの解釈で説明でき、実装できる段階。
僕はこのレベルくらいです。このレベルだと案件によっては危険なのでしょうか?
危険のなのはわかるのですが、現実的に時間がなかったり、聞けるひとがいなかったりします。
teratailで聞いてもプログラムの間違いと手本はいただけるのですが、なぜこうなるかについて初心者にわかりやすく伝えられるひとはなかなかお目にかかれないような気がします。 僕の理解力のなさは棚上げしています。
この場合は、第2引数が変わるとこうなるかとPHPマニュアルをみてもちゃんとわからず、例えるならテレビの使い方を知っていて見れるけどなんでテレビを見れるのかわかっていない状態。
こうインプットするとこういうアウトプットがあると予想できるという状態です。
【理解レベル神】
phpマニュアル等を読んで、第2引数がこうなるとこうなる、なぜならこうだからと人に教えられるくらい理解している状態。
僕から見ればこの状態はPCさえあれば全知全能であり崇拝するかんじです。
理解レベルはこれを目指すべきなのはわかるのですが、その場でわからないことがあります。できるだけ調べたり、聞いたりしますが、それでもわからないことがあります。
そのわからないことはずっと覚えていてなにか別のプログラムを書いているときにその部分をさわることになってふとした瞬間に理解できることがあります。
そんな感じでもやっていけるのでしょうか?
僕は、phpマニュアルを見てもなんのこっちゃという感じで他サイトや書籍にある使用例や解説を読んで理解できることは、全部ではないければぼちぼちあるというような感じです。
読者の方から相談メールをいただきました。
同じような悩みを持っている方向けに回答内容を一部紹介します。
Contents
「プログラムを理解してから使え」の理解とはどのくらいのレベル?
「プログラム(コードの意味)を理解してから使え」が必ずしも正しいとも限りません。
村上福之さんは「プログラマーが独立するのに必要な2つの勇気」として、
(1) nullなり適当な値をつっこんでコンパイルする勇気
(2) プライドを捨てて、人に聞いたり、頼ったりする勇気
が大切だと仰っています。
どんどん使っていって、使ってくうちに理解するというやり方の方が、次々と新しい技術が生まれる時代には合ってます。
ネットから使用例を見て、自分なりの解釈・説明・実装できる。これじゃ危険?
ミッション・クリティカル(障害や誤作動などが許されない)な案件では、まずいように思われますが、そういう案件の場合、コードレビューやテストが綿密に行われるはずなので十分だと思います。
危険のなのはわかるのですが、現実的に時間がなかったり、聞けるひとがいなかったりします
時間に対する投資対効果を考えることは重要です。
時間を掛けて調査をして、納期に間に合わなかったら意味がありませんからね。
自分なりに、「こうなのかな?」と考えていくことを積み重ねていくと、ある時、確信が得られる瞬間があると思います。
全てを完璧に理解している人なんていませんからね。「こうなのかな?」って考えていければいいと思います。
分かる範囲でコードを書いていくことで身についていくものもたくさんあります。
プログラミング言語は言葉なので、日本語を覚えるのと同じです。国語辞典の全部の言葉の意味を知ってる人なんていません。それと同じです。
そんな感じでもやっていけるのでしょうか?
僕は、phpマニュアルを見てもなんのこっちゃという感じで他サイトや書籍にある使用例や解説を読んで>理解できることは、全部ではないければぼちぼちあるというような感じです。
それでいいと思います!
先輩風を吹かしたがる輩が自分が知ってる分野だけを指して「プログラム(コードの意味)を理解してから使え」と言ってくるかもしれませんが、無視すればいいと思います。
大切なことは目の前の仕事に自分なりのやり方で取り組むことですからね!