奇特なブログ

「殊勝に値する行いや心掛け」を意味する、奇特な人になる為のブログです

スキルアップにおけるYAGNI

多分、タイトルが意味不明だと思いますが、まずスキルアップについて書いていきます。
で、スキルアップにおいては、筆者は以下の様に考えています。

スキルアップをする為には、書籍を読むなどの座学だけでも、
ひたすらプログラムを書くなどの実践だけでも果たせない。
座学(例えばコミケ本を読んだ)して、実践(色々な人と話す)して、
そしてその中で、また新たな問題(話す能力だけでなく聞く能力が必要になったとか)が出たりして、
そしたらまた座学(コミケ本でも聞く方に重点を置いた本を読むとか)して、また実践して、
そしてその中で、また新たな問題(何を聞けば良いのか分からないとか)が出たりして、
そしたらまた座学・・・という感じで延々とループし続ける。

という感じで、スキルアップが果たせるのではないかと思います。
というか正直、他に方法が思いつかないんですけどね。
コミケ本を読んだって、実践しなければ意味がありませんし、
逆に、何も知識が無い状態で話しても、自分が話す目的は達成されないでしょうし。

次に、YAGNIについて。
ウィキペディアから一部抜粋しながら、書いていきたいと思います。

・あとで使うだろうとの予測の元に作ったものは、実際には10%程度しか使われない。したがってそれに費やした時間の90%は無駄になる。
「いつかきっと、この技術は流行って広く使われるかもしれないから、今の内に勉強してライバルより先んじる」的な考えは、
正直「不要」ではないかと。
確かにIT業界は、新たな技術やサービスがどんどんどんどん出てますが、
「殆ど使われない」技術やサービスだって、影に隠れているだけでやっぱりあるわけで。
例えば、プログラミング言語で見てみても、
ココに書いてあるぐらいの数はあるわけですよ。
で、この中で、今有るシステムやアプリの中で殆ど使われていない言語って、沢山あると思うんです。
で、そんな言語を勉強したって、役に立たないじゃないですか。
それよりは、今自分が使っている言語を「もっと」理解する為に勉強した方が良くないでしょうか。
せいぜい、これならアリだろうと筆者が思うラインとしては、
現場や職場などでは、仕事で使っている言語Aを勉強し、
自宅などのプライベートでは、言語Bを勉強するって辺り。
つまり、一度に勉強するのは、「2つの分野以下」。
まあ、もっと細かく時間を区切れば、3つ以上も可能だとは思いますけど。
少なくても、スキルアップ目的ならですが。
様々や分野の勉強会やイベントやセミナーなどに参加して、
色々な分野を一気に学ぼうとしても、「無意味」か、
「スキルが身に付いたとしても浅い」結果になる様に思います。
で、「浅く」身に付いたとしても、仕事では使えないのではないでしょうか。
ココにもあるように、その程度の仕事をするのが「プロフェッショナル」なのでしょうか。
要は、スキルアップの所に書いた通り、
今の状況で、座学「も」実践「も」両方可能な言語なり分野なりを、勉強するって形で良いのではないでしょうか。
未来がどうなるかなんて、分からないとも思いますしね。
・余計な機能があると我々の仕事が遅くなり、リソースを浪費する。
・予期しない変更に対しては設計を単純にすることが備えとなるが、今必要とする以上の機能を追加すると設計がより複雑になってしまう。
・あなたの人生の時間は貴重である。あなたの能力は単にコードを書くためではなく、現実の問題に集中するために使うべきである。
・結局はその機能は必要ないかもしれない。もしそうなったら、あなたがその機能を実装するのに費やした時間も、他のみんながそれを読むのに費やした時間も、その機能が占めていたスペースも、すべて無駄になってしまうだろう。
・コードをすばやく実装するために最も良い方法は、あまりコードを書かないことである。バグを減らすために最も良い方法も、あまりコードを書かないことである
言いたい事の本質は同じだと思うので、まとめて。
要は特別な事でも何でもなくて、
今自分が抱えている問題や、仕事で関わっている分野の勉強を最優先にして、
少しずつ問題を解決していったり、仕事で貢献していくのが一番効率が良いんじゃではないでしょうか。
そうなることで、「自信」も少しずつ付いていくと思いますしね。

学ばなければいけない分野が、沢山あるから「こそ」、
今の自分にとって、関連の少ない分野は、優先順位を下げる事が大切なのではないでしょうか。