文字っぽいの。

文字を書いています。写真も混ざります。

素振り

最近、「エンジニアリングスキルを高めるにはどうしたらよいか」といったニュアンスの話をすることが何回かありました。エンジニアリングスキルにはコーディング能力だけではなく、チームワークだったりプロダクト志向だったりステークホルダーの調整だったり、そういうのも必要になってきますが、この記事ではスキルセットの1つであるコーディング能力について話します。

さて、「コーディング能力をあげるには?」に対する回答は人それぞれあるとは思いますが、自分は「コードを書かない限り、コードを書けるようにはならない。」と考えています。コーディング能力上げたかったらコード書け。

=完=

だと困ってしまうと思うので、1つの手法である「素振り」について書きます。これは、自分にWebアプリ開発のやりかたを教えてくれた先輩の受け売りです。

素振りとは「コードを書いて、他人が使えるようにする」までを1セットとした行動の事です。他人も使えるというのが重要です。コードを書いてローカル環境においてあったり、GitHubのプライベートリポジトリにPushするだけでは素振りではありません。例えば、

  • Webアプリを作ってデプロイして誰でも使えるようにする
  • ライブラリを作ってGitHubに公開して誰でも使えるようにする
  • スマホアプリを作ってAppStoreやPlayStoreで公開する
  • Chrome拡張を作ってChromeウェブストアで公開する

などが素振りになります。自分のアイディアを技術の力で実現し、それをリリースして、ユーザーからのフィードバックを得るという一連の流れで1回の素振りが終わります。

リリースまでしないといけないので、素振りは大変です。しかし、他人が使えるという状態にすることで、

  • 自分のアイディア実現の為に必須な機能はどれか
  • あったほうが便利だけど初期は無視していい機能はどれか
  • 無視して良いバグとダメなバグはどれか
  • ライブラリやIaaSなど開発効率をあげる仕組みはないか

などを考える必要がでてきます。というかこういうのを考えないと、「僕の考えた最強のサービス(ただし実装は脳内にある)」となって素振りを失敗します。

普段の仕事では自然と分業が進んでいくため、どうしても触れられる領域は狭くなります。一方素振りではチームメンバーが1人なので全部自分です。デザイン、実装、プライバシーポリシー・利用規約からマーケティングまで全部1人です。ライブラリを作る場合でもREADMEやドキュメントを整えたり、適切なライセンスを設定したり、CIの仕組みを整える必要があります。素振りをしていれば「やらざるを得ない」ため勝手に開発筋が鍛えられていきます。

最初のうちはリリースしても誰にも使われない事がほとんどでしょう。しかし素振りの中で学んだ技術や知識は確実に蓄積されていきます。そうやってコツコツと素振りを続けていくことで、一発当てる為の筋力がついてくると考えています。

ただし、野球やテニスなどスポーツにおける素振りと同じく「何も考えずにブンブンする」だけでは、少々筋力はつくかもしれませんがそれ以外の能力は向上しません。コーディングにおける素振りも同様で「使い慣れた技術で、作り慣れたものを作る」だけを続けていては効果が薄いでしょう。新しい知識を得てコードの書き方を変えてみたり、新しいライブラリを使ってみたり、工夫をしていくことが肝要です。