2010年9月2日木曜日

技術者として成長するには

9月に入って小中高生は学校が始まり、社会人の方は相変わらずお仕事に励まれていることと思います。
そんな中、大学生は10月まで惚けていられる特権階級。

とはいえ、本気で遊び呆けるほど遊びに飢えてもいないので、『JavaScript: The Good Parts —「良いパーツ」によるベストプラクティス』を読んでJavascriptのお勉強を始めました。

目的は2つあります。
1つは、9月はチャットでも作ろうとしてるのでそれに使いたい。
もう1つは、言語として自分の知らない概念を含んでいるから。

1つ目は深める余地もありませんね。ちなみに、ただのチャットと見せかけで裏では凄いことやってる的なチャットにしたいですね。どう見てもオナ(ry

2つ目が今回の記事のテーマです。
僕はプログラムの世界にHSPから入り、ほとんどCと共に過ごし、C++のCにはない概念で感動し、それで言語の知識はほぼ停滞してます。
一応色々な言語は触ってきたのですが、どの言語を使っても使える機能は自分の知っている概念を実装した部分のみ。
だからリテラルだとか無名関数だとか、そういう全然僕自身が中身を把握していない概念を実装した言語をちゃんと学んで、知識を増やそうと考えているのです。

「プログラマのくせに何が知識だ。いいからコード書けよ。」
そう思っていた時期が僕にもありました。マジで。
ですが、最近薄々感づいてきました。ちゃんと色んな概念を座学ベースで学んでいくと、自分の書けるコードの幅が広がる。

例えば8月に参加したセキュリティ&プログラミングキャンプではLinuxカーネルをいじったのですが、これができたのは事前課題でコンピュータアーキテクチャ(Linux固有の部分も含む)を学んだからです。これがなければ、いくらC言語には慣れっこだといえども、なぜカーネル空間でmalloc()を使わないのかとかで悩み、とても開発どころではなかったと思います。

もうひとつ例を出すと、インターンでメール受送信関係のプログラムをいじっていたのですが、最初のうちはサンプルコードのどこをいじればいいのか中々分かりませんでした。ですが、IMAPやSMTPのプロトコル通信について調べて時間を費やした後は、すらすら変更箇所を見つけることができました。

やはり知識の獲得は非常に重要だと思います。当然プログラミングに関しては、コードを書く作業も成長のために必須ですが、知識の獲得は同様かそれ以上に重視したいです。

知識・概念を吸収すること、(今回は触れてませんが)コードを読むこと、コードを書くこと、この3つが一体となって初めて技術者としての成長につながるのだと考えてます。

がんばろ。

0 件のコメント:

コメントを投稿