プログラミング能力ってどうやったら上達するんじゃろ?
というかどうやったらコード書く力とか身につけるんだろうか?
そんなことを考えながら悶々とーーいまも悶々と考えてる日々を過ごしています。
そうだ!! 写経だ!!
『本に載っているコードを写経すると力がつく。githubにあるコードもどんどん書いていこう』
そんな記事を読んで、とにかく写経することにした。
書いてればそのうちコードを覚えたり、書く力が身につくだろうと思っていたがーー
そんなことはない
いや、厳密にはあるのだが……。
そもそもコード書く時って、書く力より「頭の中で考えてることを正確にアウトプットする」ということに近い。
「いやいや、この文章も考えたことを書いてるじゃん!!」と言われそうだが、ブログ書いてるときって自分の場合は頭使ってない気がする。もうそのまま頭から分離して書いてる感覚と言えばいいのだろうか??
反対にコードは何も考えないでサラサラ書けるという人は稀だろうし、自分は少なくともスラスラと考えなしに衝動のまま書けたりはしない。
ブログなどはいわゆる「興が乗って筆が進む」けれど、パソコンに向かってスラスラ書こうとしても文字が出てこない。
これは日本語とかだったら問題ないだろうけれど、相手はパソコン。パソコンに向かって書く時は日本語で書いても通じないので、英語?でかろうじて人間にも分かる言語で書くわけだ(外国人だったらスラスラ書けるのかね?)。
どっちみち「ガーッ!!」と書いてったブログも、推敲ーーリファクタリングしてより良い文章に書き換えていくわけだが(このブログは推敲全然やってない)、あいにく自分はコードを「ガーッ!!」と書ける力はない。そんな人がいるかどうかもまだお目に書かれてないし。
何が言いたいかっていうと、ただ何も考えないで「写経」するとほぼ意味がなくて終わると思う。
コード書いて、「クラスってこう書くんだ……。関数ってこう書くんだ……」みたいな暗記するだけだと、多分コード書けない。
いや初めは全然それでいいと思うが、ゆくゆくは詰まってくる時期がくる(現にいま自分が詰まってる)。
写経は、「そのコードが何の役割をして、この一行がーー1文字がどんな意味を持っているか」を理解する必要がある。
じゃなきゃ、コード読めないし、書けないと思う。
ただ何も考えないで、コード書き写してるだけだと、そのコードの意味やメソッドの意味が理解出来てないので、いざ他人に説明するとき絶対に「…………」と詰まる(オレは詰まった)。
なのでサンプルコード書いたら「さあ次のコードだ!!」と先に進むのではなく、一歩立ち止まってそのコードがどんな役割してて、定数なのか変数なのか、どんな型なのか、クラスなのかを調べたほうが絶対にいい。と自分は思っている。
ただこのやり方はぶっちゃけ面白くないし、時間もかかるし、実力がついているかどうかすら怪しく感じてしまう。こう書いてる自分がそう思ってるが、「本当に自分はコード読む力とか書く力がついているのか?」と疑ってしまっている。
その効果はまだ実証出来てないので、自分の話は与太話で聞いてもらえれば幸いだが、自分は「考えながら書く写経」を薦める。
そもそもエンジニア、プログラマの役割も曖昧になってて、コードを書く部分以外でも求められてるとは思うが、基本プログラマはコード書くことが仕事なので、伸ばすんだったら時間かかるけど下地を固めたいところだ。
専門性の高い文章は脳の出力の仕方が違うと思っているので、考えながら出力することが必要だと感じている。
反対にブログーーいわゆる日記などは自分の想いのまま出力すると思っている。
あとコードの実力あげていく際にコピペは反対派。仕事上で、コピペは多様するけれど、あれは全然コード書く力が身につかない。
誰かが書いた、再現性のあるコードだし、動くことも保証されてる。自分も1からコード書くことは少ないし、既存のコードを参考にして似たような関数は作る。
だから説明求められたら、説明出来るようにしておく。間違っても、「いや、ここにあるコードをコピペしただけだから良く分かんないですよ。アハハッ」とかは言ってはダメだ。言うと結構な確率で「コイツ、マジか」と顔を相手にされるので、言わない方がいい。
使うんだったら、コードの中身というか役割を把握出来るようにした方が、信頼を勝ち取れると思う。
実際上達してる自信はない
ここまで偉そうに「コードの写経」について書いたが、もうほんと自信がない。
文末も「と思う」とか「感じる」とか断言してないので、本当に効果あるかも分からない。ただ自分は効果ありそうだとやってるにすぎない行為で他の人にその効果があるかの確証がない。
ただ「コードに対しての理解を深めた方がいい」とは自信持って言える。
「ふーん、まあこんな感じかな?」みたいなふわっとした理解だと、後々苦しむ(自分は苦しんでいる)。なのでなるべく深いところまで理解出来るように努めている。
それでも相手に説明する時や、「あー、全然理解足りてないわ」とは常に感じている。
「全然写経意味ないよ」という意見もあれば、「力つけるには写経が1番」という人の意見もある。
自分としてはどちらの意見もありだと思っているので、試してみて「あー関係ないわ。全然意味ない」となったら辞めて、違う上達方法試せばいいし、「これは力がつく! みなぎってきた!」となれば継続すればいい。人それぞれだ。
どれだけコードを書いたかがプログラマとしての力量の差が生まれると思っている。
だから自分で考えて書いたコードの方が力はつく。そのために、自分はコードの役割や意味をちゃんと理解しておきたい。
そう思いながら、今日もサンプルコード書いています。