よい環境に身を置くことが一番というけれど…
プログラマとしてスキルアップを目指すなら、尊敬できる凄腕プログラマが周りにいる環境で働くというのがベストだと言われています。私もそう思います。ただ、必ずしもそういった環境に身を置ける人ばかりではないというのが実情ではないでしょうか。
私なんかもそうですが、フリーランスとしてWEB制作をしていた延長線上でシステム開発を行っているため基本的にぼっちプレイです。そんな引きこもりエンジニアな私なりのスキルアップする方法をまとめてみたので、何かしら参考になる部分があればなと思います。
オープンソースのソフトウェアをカスタマイズしてみる
オープンソースって、スゴイ考え方だなっていつも感心します。めっちゃお世話になってるし。世界中の一流プログラマの成果物をタダで使えるってスンゴイことですよね。巨人の肩の上で仕事をすることで、短時間でハイパフォーマンスな仕事ができるというメリットを享受することができますが、それだけではもったいないです。
せっかく一流の人が書いたソースコードがそこにあるんですから、カスタマイズしてみるのがオススメです。ちょっとした機能でもいいので追加しようとすると必然的にソースコードを読むことになります。ソースコードを読むためにプログラミング言語の文法なり、オブジェクト指向的な考え方なり、新しく学ぶべきことがいっぱい見つかります。
そういった姿勢でオープンソースと向き合っていくと、「尊敬できる凄腕プログラマが周りにいる環境で働く」のと近い環境になってたりします。
Q&Aサイトで回答してみる
何事においても「教える」っていうことをすると、メチャクチャ身になったりしますよね。普段さりげなくこなしていたことも、いざ人に教えるとなると細かい所がどうなってたか気になって調べたりします。また、相手に理解してもらうために、教える内容についても広く深く理解しておかなければいけませんからね。
そういった意味で、教え合える同僚のいる職場というのは恵まれているのかもしれません。もちろん同僚がいるからといって必ずしもよい職場という訳ではありませんが・・・。
引きこもりエンジニアな私が似たような環境を得ようとしたとき、テラテイルなどのQ&Aサイトが役立ちます。自分の得意なジャンルの質問を探して答えるというのが「教える」ということになります。私がQ&Aサイトに答えるときに気を付けているのは、
・再現できるものであれば、必ず自分の環境でも再現してみる
・質問者さんが次のアクションを起こせるような回答にする
・真摯に全力で答える
の3点です。
「お金をもらってるわけでもないのに、知らない誰かの質問に答えるなんてバカじゃないの?」って思われるかもしれません。しかしながら、私は回答することで得られるものは実は答えてる自分が一番大きいんじゃないかって思ってます。だから答えます。もちろん質問者さんが問題をある程度整理できていること、自分の作業工数に余裕があることなどが前提です。エスパーじゃないからね。
たまにカンファレンスなどに出席する
引きこもりエンジニアをしていると、世間のプログラマのレベルとか空気感とかを感じることはほぼありません。だからこそ、たまには重い腰を上げてカンファレンスに参加したりするんです。私は直近ですと、2016年の12月にYAPC北海道に参加してきました。
カンファレンスに参加したからといって、プログラミングスキルが急激に上がるなんて魔法にかかることはありません。また、登壇者は基本的にハイスペックな人たちなので、理解できないことも多いです。それでも、生でエンジニアの人たちの中に紛れ込むというのは刺激的で楽しいです。
「私が2016年のYAPCで得たものは、2012年に参加したときより話してる内容が理解できるようになった」という漠然としたものです。些細なことですが、「自分も捨てたもんじゃない」と思えることは実はすごく重要だったりします。
まとめ
ここまでつらつらと書いてきましたが、「できない自分に失望しない」ってことが一番大事なことなのかもしれない。ちょい右上を睨みつつ、今できることをやり切るっていうのが近道だったりしますからね。初めからできる人なんてどこにもいなくて、気が遠くなるくらいのトライ&エラーを繰り返してきた人がスーパーサイヤ人みたいに思えるだけってことです。
スーパーサイヤ人になれなくても、ヤムチャくらいの使い手にはなれると思うのでがんばりましょう!
コメント