Author image

ぺんすけブログ

リモートワークと子育てとTechな日常

Cover image

プログラミングなんてただのパターン認識

「なんでPHPを一つのファイルじゃなくてディレクトリを分けていろんな場所に書いていくの?」

「ここは何でそういう風に書くの?」

分からないことを調べ倒して、結果全然分からなくて進捗も全く出せなかった。 なんて経験みなさんもありませんか?

ぼくは分からなくても、ちゃんと動いてるなら前に進んじゃっていいと思います。

最近よく思うことがあって、プログラミングなんて所詮パターン認識だなと思います。使えるパターンが増えれば増えるほどその場その場で最適解が導き出せる、そう思います。

勉強ばっかりで進捗がない例

ここ最近プログラミングを人に教えるということをやってるんですが、どんどん新しいことに挑戦していく人と、反対にずっと同じ事をやってる人がいます。

明らかにどんどん新しいことをやるほうがいいんですよね。だって成果物がどんどん増えた方が転職だって成功しますし、新しい仕事をゲットできますよね。もちろん自分のサービスを開発していれば早くユーザーにサービスを届けることができます。

反対にずっと同じことをやっている人は何をしているか、たぶん分からないところを分かろうとしてずっと調べてるんですよね。

メンティさんによくある具体例

具体的な例をあげましょう。 僕は PHP を主に教えているんですが、 PHP を理解するにはブログのチュートリアルを完全にゼロから作ってみるといいですよと言います。

そうするとまずデータベースの構築ではまります。 「MySQLの基礎がわかってないみたいなのでもう一度ドットインストールで復習してみます」と言ってその初心者さんは消えていきます。

多分チュートリアルなんて気合を入れてあれば2、3日で終わります。だけど初めてやるとわからないことばかりなんですよね。 PHP の書き方がわからない、どうしてこういうファイルの分け方をするのかわからない、データベースのことが全く何もわからない。

え、でもそこに答えありますよね。チュートリアルなんですよ。その通りに書けば動きますよね、、?

じゃあとりあえずで動かして前に進みませんか?

分かっていなくても本当にいいの?

分かっていなくてもいいと思います。というか実務でやってる人にそんな時間ないと思います。

実務だとだいたい納期というものがありますよね。 もし仮にデータベースの構築方法がわからなくてもそこで止まっていられる時間は限られています。実務でやっている人全員がそれを完全に理解するまで勉強して進めていると思いますか?

一部を除いてというかむしろほとんどは違うと思います。分からなくても調べて出てきたベストプラクティスを真似してこの人がこういう風に言ってるからこれでいい、という感じで前に進めると思います。

プログラミングを勉強している時に陥りがちな罠

ところが個人で勉強していると、納期がないので時間って無限にあるように思えるんですよね。

「なんでPHPを一つのファイルじゃなくてディレクトリを分けていろんな場所に書いていくの?」

「ここは何でそういう風に書くの?」

これを全部調べ倒しちゃうんですよね。そうするともう時間なんて無限にあっても足りません。

勉強の仕方が間違っています。

パターン認識で勉強は進むという話

ぼくはプログラミングをパターン認識だと思っています。前提として地頭が良くないとして進めます。

例としてデザインパターンの MVC を理解するということをあげてみましょう。

MVCはModel、View、Controllerの 三つに分けてプログラムを書いていくというものです。Viewはすごくわかりやすいのですが、Modelって何なんだろう?という疑問がでます。

経験の浅い頃の僕は一生懸命 MVC についてググりました。本屋でもデザインパターンの本を立ち読みしたりしました。

でもその頃は全然わからなかったです。意味もわからずにデータベースから値を取得してくる SQL をモデルに書いていました。

ただ、今ようやく少しずつわかってくるようになりました。

MVCを理解する【デザインパターン】 | ぺんすけブログ

何で分かるようになったか。それは僕が色んな人のコードをたくさん見たからです。要するにプログラミングの書き方のパターンをたくさん覚えたということです。

勉強ばっかりしてないでデプロイしましょう

勉強してても勉強になりません。元も子もないですが、これは大体の人に当てはまると思います。デプロイしましょう。成果物を生み出しましょう。

プロセスが重要だなんて、あなたはそんなにプログラミングに時間をかけられる高給取りなんでしょうか、、?スピードや、設計方法を考慮することにそんなに意味のあるプログラムなんでしょうか?

まずは前に進みましょう。理解は後からついてきます。

フレームワークが裏側でどんな処理をしていようと別にいいじゃないですか。完全に理解しようとしないのは良くないですが、 きっとあなたは一度は調べましたよね

じゃあ今度また別の案件でそのフレームワークを使った時にきっと理解できますよ。断言します。プログラミングなんてパターン認識です。

一部の天才たちは無視しましょう。きっとこの記事をここまで読んでいるあなたは、 天才じゃないか、暇人か、もの好きです。

世の中に自分の書いたプログラムをどんどん出して前へ進んでいきましょう!