プログラミングの独学では学べなかった大切なこと
はじめに
私がプログラミングと出会ったのは、卒業して海外に渡った後でした。
自分が作ったプログラムが人の作業を楽にして、周りから感謝されるという体験からプログラミングにのめり込み、プログラマとして生きていくことを決意しました。
実際にプログラマとして働くようになって感じたことは、プログラマとして働く上で大切なことを独学で身につけるのは難しいということです。
今回は、私がプログラミングの独学をしても学べなかった大切なことについて書いていこうと思います。
独学では学べなかったこと
プログラマとして働く上で独学では学べなかったことに、以下のようなものです。
- スケジュールを組む力
- 可読性の高いコードを書くこと
- 変更に柔軟な設計をすること
スケジュールを組む力
プログラミングの勉強は自分一人で行いますし、何かを期限までに作ったりしなくても良いわけです。何かを作るのにどれだけ時間をかけても人に迷惑をかけることはありません。
しかし、チームで開発するとなるとそうはいきません。自分が組んだスケジュールで開発全体が動いていきます。自分の作業が遅れてしまうと、開発全体に影響が及びかねません。
また私が働いているようなスタートアップでは、開発チームだけでなく他のチーム(企画開発・カスタマーサポートなど)にも迷惑をかけてしまうことに繋がります。
ですから、無理なスケジュールを組んでもよくないですし、かといって必要以上に余裕のあるスケジュールを組んで、開発全体のスピードが落ちてしまってもよくありません。またスケジュールが遅れてしまいそうになれば、逐次相談をして、タスクの一部を誰かに対応してもらうなどの調整も必要になってきます。
スケジュールを適切に組める力やスケジュール通りに進められなくなった時の調整力は、独学では学ぶ機会がなかったですが、とても重要な能力だと思います。
可読性の高いコードを書くこと
プログラミングはどんなに煩雑なコードを書いたとしても、動くものを作ることができてしまいます。
プログラミングの独学をしているときは、コードを他人と共有することもなく、作って終わりということが多かったので、可読性について考えたことは一切ありませんでした。
しかし、チームで開発するとなると他の人にとっても読みやすいコードでなければなりません。また日々成長していくようなサービスを作るときは、他人だけでなく自分でも読みやすいコードにしておかないと、開発スピードが落ちるだけでなく、不具合などを出してしまいやすくなってしまいます。
リファクタリング:Rubyエディション
という本でも以下のような一文があります。
コンピュータが理解できるコードは誰でも書ける。優れたプログラマが書くのは、人間が理解できるコードだ。
- 作者: Jay Fields,Shane Harvie,Martin Fowler,Kent Beck,長尾高弘
- 出版社/メーカー: アスキー・メディアワークス
- 発売日: 2010/02/27
- メディア: 大型本
- 購入: 9人 クリック: 321回
- この商品を含むブログ (49件) を見る
今後の開発を見越したり、他人に配慮したりすることは独学ではあまり気にしなかったのですが、チームで働く上では非常に重要な考え方だと思います。
変更に柔軟な設計をすること
プログラミングを独学で勉強していたときは、作って終わりということが多かったので、先のことを考えずにコードを書いていました。作って終わりなので、先を考えることが重要と感じなかったからです。
しかし、自社サービスのように日々成長していくものを作るとなると、先を見越して仕様変更にも柔軟な設計をする必要があります。先のことを考えずに、その時点での仕様に最適化した実装をすると、修正や機能拡張がしづらくなってしまいます。
現に自分が実装した機能が、ある時点での仕様に最適化された設計になっており、シンプルな機能拡張を実装しようとしたときに、非常に苦労したことがあります。「こんなシンプルな要件を実装するのに、なぜこんなにややこしくなるんだろう」という苛立たしさを今でも覚えています。
未来に必ず何かしら仕様の変更があるということを前提に考え、その変更にも柔軟に対応できるような設計をするということは独学ではあまり気にしなかったですが、サービスを成長させていくという点でとても重要な考え方だと思います。
終わりに
以上が私がプログラミングの独学をしても学べなかった大切なことの一部です。もし過去の自分がこの記事を見たとしても、上記のようなことを独学で身につけるのは難しいだろうなと思いました。優秀な人に囲まれている環境で、日々フィードバックを受けることができるからこそ、身につけられることなのかなと思いました。
現在独学でプログラミングを学んでいる方は、ある程度コードが書けるようになったら、ぜひチームに加わって開発してみてはいかがでしょうか?