今回は、このような悩みを持っている方向けに書いています。
僕は、人よりコードを書くのは速い方です。お客様と打合せした数時間後には、「こんな感じでどうですか?」って話をしています。お客様から「もう出来たの?」と言われるのは気持ちが良いですね。
大手SIerにいたときは、2年目ですでに誰よりも速くコードを仕上げていたので、先輩からはいろいろと言われました。才能があるとか賢いとかセンスがあるとか。。。その都度先輩の言う自虐をフォローするのが大変で、めんどくさいなーと思っていました。
しかし、これは才能やセンスの問題ではないというのが僕の考えです。
それは、才能とかセンスとか言う人ほど、いつまで経っても上達しませんし、どんどん僕との差が開いていったからです。
それでは何の問題なのか?というのが、今回の内容です。
コードを書くのが遅いのは、スキルの問題ではない
仕事柄、コーディングスキルを高めるためにどうしたら良いかとよく聞かれますが、「どうしたらいいと思う?」と聞くと、たいていは以下の回答が返ってきます。
はっきり言いますが、こんなことを言っているからコーディングスピードが上がらないんです。
あなたの悩みは、プログラミングスキルの問題ではないからです。
プログラミングスキルが問題になるのは、ループの書き方が分からない、分岐の書き方が分からない、関数の書き方が分からないといった、学習を始めて1週間足らずで解決するようなことだけです。
実際の現場でも、使っているのはIT初学者でも知っているスキルが99%です。たまに複雑なことがありますが、そのような業務に就くのはプログラミングスキルが高い人だけです。
コードを書くスピードが上がらないからといって、片っ端から言語やコーディングに関する本を読んでも無駄です。
では、あなたの本当の問題は何か?
コードを書くのが遅い人の共通点
どうして、コードを書くのが遅くなるんでしょうか?
結論から言うと、コードを書くのが遅いのは、仕事の手順が悪いからです。
コードを書くのが遅い人には共通点があります。
たとえば、業務でユーザーの検索処理を作ってくださいと頼まれたとしましょう。ユーザー名で検索するので、その部分一致検索でヒットしたユーザーの一覧を取得するという処理です。
さあ、あなたならどういう順番で仕事を進めますか?
よし、作るものは分かった!ということで、VSCodeなどのエディタを開いてコードを書き始めます。
と言う方、残念ながらコードを書くのが遅い人です。
これはとても大切なことですが、コードを速く書けるかどうかは、コードを書く前に決まっています。
作業指示が出てからいきなりエディタを開くから、コードを書くのが遅くなるんです。コードを書き始めてから、どうすればいいんだ?と悩むことになるんです。書いたコードを書き直すことになるんです。
これはコーディングという仕事内容から考えると、当たり前のことです。
コーディングとは、「日本語を、プログラミング言語に翻訳する仕事」です。
プログラマーは翻訳家です。
では、あなたが日本語から英語に翻訳するときに、「ユーザーの検索処理」を、数百行の文章に翻訳しますか?さすがに意訳しすぎでしょ。あなたの翻訳を聞いた人は、元の人が話した日本語に対してあなたが話した英語が多すぎて、絶対おかしいでしょ!って突っ込まれますよ笑
プログラムの流れを、”日本語で”書くのが先
コーディングが速い人は何をしているのかと言うと、
日本語の仕様を、プログラミング言語にそのまま翻訳できるレベルまで、まず日本語で考えてからコードを書き始めます。
ユーザーの検索処理と言われれば、
- データベースに接続する
- SQL(SELECT ~~~)を実行する。パラメーターにユーザー名をセットする
- 取得できた結果を、戻り値の方に変換する
少なくとも、このぐらいにはかみ砕きます。コーディングに慣れていなければ、もっと細かく書きます。そして、この日本語の文章が仕様として成立しているかをまず確かめます。
確かめられたら、エディタを開いてプログラミング言語に翻訳していきます。
だから、くだらない手戻りが起きづらいんです。仕様を細かく分解することとコードを書くことに分離しているから、コードを書く際に悩まずスラスラ書けるんです。
これって結局作業を分けただけで、トータルでかかる時間は一緒じゃないの?と思う方がいるかもしれませんが、そう思うなら一度やってみてください。明らかに完成までのスピードは上がりますし、手戻りも減ります。どんな仕事でも、計画と行動は分けた方が速く終わります。
そしてもう一つ大事なことは、正しくふりかえりが出来るということです。
コードを書くのが遅い人は、自分のスキルをふりかえります。それに対してコードを書くのが速い人がふりかえることは何でしょうか?
分かりますか?
日本語をプログラムで書ける日本語に分解する「言語力」です。
自身の日本語力のなさをふりかえることになります。自分が持っているプログラミングスキルを使えるように仕様をどうやって分解するのか、ここを懸命にふりかえります。いろんなパターンを身につけます。抜け漏れがない厳密な日本語にする力を養います。
だから、日本語の仕様をプログラミング言語に翻訳することが速くなり、結果としてコードを書くのが速くなります(開発スピードが上がります)。
コードを書くのが遅いと悩んでいるあなた。あなたの悩みは、プログラミングスキルではなく、日本語力です。厳密な日本語を話す練習をしましょう。プログラミング言語に翻訳できるぐらい細かく日本語を分解する練習をしましょう。それが、コードを書くスピードを上げる一番の近道です。