自分の定めた目標に向かって努力するということ

最近id:j5ik2oさんの努力する人が最後には”できる人”になる - じゅんいち☆かとうの技術日誌というエントリーを読んだことがきっかけで、エンジニアとして「努力する」ということについてちょっと考えてみました。

努力と目標設定

普段意識していなかったのですが、もともと努力という言葉にはある目的に向かってがんばるという意味が込められているようですね。
努力 - Wikipedia
英語のeffortとかendeavorといった単語にも似たような意味がこめられています。だから、本来、努力とは、ある目的に向かっていろいろ試行錯誤するということが本質的なのであり、そう考えると2011-02-08で書かれていることも本来の意味での努力ということを否定しているものではないのかなと思います。ただ、日常では決まった目標もなく無駄に「あくせく努力する」などという否定的な使われ方もしますし、根性論 - Wikipediaと同一視されるところも多分にありますね。
ですから、本当の意味で努力するというのであれば、まず、自分が何をしたいのか、どういった人になりたいのかといった自分の目標を設定することからはじめる必要があります。努力が好きな人とそうでない人の違いはまずこの目標設定ができているかどうかの違いというところもあるのではないでしょうか。id:j5ik2oさんも

目的や目標を持たずに奔放に生きても、なかなか自分の思い通りにはならないのは自明。だから、今日は何をするための一日か決めて行動している人は理想に近づける人なんだと思う。どんなことがあっても、いわれても、自分の歩みを止めずに、諦めずに前に進めばいいと思う。

とおっしゃっているとおり、努力することが苦痛ではなく、好きになるためには、まずは主体的に自分の短期的、長期的な目標を定めることがポイントなのではないかと思います。

誰一人として同じ人はいない

ただし、この世の中ではどう考えても、人それぞれ、資質、才能、境遇といったものがはっきり異なっているという厳然たる事実があります。
以前は自分と他人とを比較して、劣等意識を感じたり落ち込んだりしましたし、正直なところさまざまなコンプレックスからいまだに完全に卒業できていないということがあります。ですから、

違うよ違うよ。できる人の理由を後付けで探したら、努力している点があったんだけど、努力していないで天賦の才の部分はないがしろにされていたり間接的な協力者が見えなくなっていたりするだけだよ。

のような意見が出てくるのも当然であり、単純にやり過ごすことができません。
自分のような凡夫人には、残念ながら今のところ、こうした矛盾や問題に関して完全な答えというか悟りを得られていません。世の中には成功者としてセレブな生活を送っている人もいる中で、アフリカの子供のようにその日に食べるものもなくて苦しんでいる人もいるという事実を忘れてはなりません。*1
この点については、id:j5ik2oさんの書かれているように

できる人と比べて勝ち負けではないのです。人それぞれに個性があって、華の咲かせ方は違うのだから比べてもしょうがないのです。比べるなら昨日の自分と比べて成長しかたどうかです。それしかないです。

ということなのかなと理解しています。当然、与えられた器や境遇は違っていても、人それぞれ目標を定め、それに向かって努力することは可能であると思いますし、そういった努力をする自由を、神様、仏様は与えてくれていると思います。器によって大小の差はあれ、目標に向かって努力し、それに近づく喜びや、自分や他人に対して価値を創造する楽しさを体験できるようになっていると思います。努力すれば誰でもオリンピックで金メダルを取れるとか、ハリウッドスターになれるといったことは残念ながら確かに違うとは思うのですが、自分の決めた目標に対して努力することで自己実現を達成するという意味で誰でも成功者になれる可能性があるということです。

自分が本当に面白いと思う目標に向かって努力する

目標設定は自分の好きにすればよいのですが、やはり、自分が面白いと思うこと、わくわくする目標に向かって努力するというのが大切だと思います。だから、偉くなって人の上に立つ存在となったり、新しいビジネスを考えてお金持ちになるという目標は自分が面白いと思えるのであれば、大いに結構なことであると思います。しかし、他人の評価ばかりを気にして、お金や名誉など物質的、社会的な価値観のみにしたがって、生きようとしても必ずしもうまくいかない場合もあると思います。少なくとも、私自身は以前年収をあげるために、「今後はプログラミングだけでなく、上流の設計やコミュニケーション能力を努力して身につけなくては」と思っていた時期があり、開発の仕事をやめて転職し、年収の高い外資系ソフトウェアベンダーのコンサルティングをやっている部署で仕事をしていたことがあります。その時の会社の上司から

  • 君は他人の話をまったく聞いていない
  • 君の話していることがよく分からない
  • 君は建前と本音の区別がつかず、白黒はっきり付けすぎる
  • もっと大人らしい考え方をしなさい
  • 話の話題がコロコロとよく変わる
  • 君のコミュニケーション能力は最低だ

などとよく注意され*2、自分はなんてコミュニケーション能力が低いのだろうと思って落ち込んでいた時期がありました。会社でも環境を改善しようと自分が積極的に動いたことが裏目に出て、同僚から村八分に近いような状態にされてしまったりとつらい経験もしました。しまいには、「そんなパフォーマンスが低いなら会社を辞めてもらう必要がある」とまで部長に言われました。自分なりによい仕事をしようとがんばっているはずなのに、どうしてという気がしました。それで、正直に言うと、それがきっかけでしばらく人間不信というか、対人恐怖症、社会不安障害のような状態になってしまい、1年近く精神科に通ったりしていた時期もあったくらいです。*3
結局、その会社での仕事は2年も続かず、年収が200万以上も下がることを覚悟の上*4で、開発の仕事に戻ったのですが、自分としてはそれが間違った選択ではなかったと今では思っています。その後、プログラミングの仕事に復帰して、水を得た魚というか、いろいろなシステムの開発にプログラマーやアーキテクトとして参加し、プロジェクトの成功に貢献することで、再び自分の自信を取り戻すことができました。やはり、自分に合った仕事を見つけるということは非常に大切なことだと思いますし、自分の面白いと思えるものに素直にしたがって目標を定め、いったん目標を決めたらそれに向かって努力するということが大切なのであると思っています。*5

これからはプログラマー一人一人の努力がもっと報われる時代に

でも、いくら好きな仕事であっても、プロフェッショナルな仕事であれば単なる自己満足で終わるのではなく、お客様や会社の上司に感謝、評価してもらいたいし、努力に対する対価を求めていくというのは素直な感情だし間違っていないとも思います。つまり、評価のために仕事をするわけではないけれども、よい仕事をしたいという理想を追求することが顧客や会社にとってもメリットになり、自動的に高い評価につながるということが理想的だと思います。本当はSI業界においても良いプログラムを作成するということは本来価値のある仕事だと信じていますが、たまたま、人月ビジネスモデルという慣習があって、プログラマーのよいプログラムを作りたいという価値観と会社の価値観とが一致していないという不幸な現実があるだけです。(エンジニアが人月商売の会社で働くのってどうよ? - GoTheDistance
ただ、このブログでも、他のところでも指摘されている通り、これからは本当に良いプログラムをできるだけタイムリーに効率的に開発し、長く使っていきたいという時代にならざるを得ないところがあると思います。つまり、上流や下流といった区別なくプログラマーが顧客に近いところで直接システムを提案する傾向になってきているということです。*6また、最近では気軽にOSSを作成して公開する*7ことも簡単にできる時代ですし、GAEで自分のWebサービスを公開したり、スマフォ向けアプリを書いたりいろいろなことが可能になっています。また、英語や中国語を本気で勉強して海外で仕事をしたりすることもできるでしょう。一人一人がその気になればチャンスはたくさんあるし、プログラマーとしての努力が報われる時代に確実になってきていると思っています。
なお、会社が悪いとか業界が悪いというネガティブな意見も少なからずあるかと思いますが、ペイ・フォワード (角川文庫)のお話のように、自分の身の回りから少しずつでも世の中を良くしていくことに貢献していくことができるわけです。今の時代はソーシャルネットワークなど、(プログラミングに限りませんが)一人一人の努力の成果が一昔前と比べると桁違いに急速な勢いで広がりやすい、本当にすごい時代になっているのではないかと思いますね。ちょうど、ドラゴンボール元気玉のように一人一人のパワーは小さくても、多くの人々の思いが集まることで凶悪な敵をも倒してしまうように、個々人が問題意識をもって努力すれば(内外から)SI業界をもっと魅力のある業界にリファクタリングしていくことは決して不可能ではないと信じています。
私も今後もいろいろなことを悩んだり迷ったりしながらも、達人プログラマーとなるべく努力を続けていきたいと思っています。

*1:自分の実家は浄土真宗で、お葬式や法事などの際には「南無阿弥陀仏」とお経を唱えるのですが、これは帰命無量寿如来、すなわち、無限のパワーをもった阿弥陀仏の本願力を信じて、日々感謝して生きるということのようです。つまり、現実世界のフィジカルな世界は矛盾だらけなのだけれど、それを超えたメタフィジカル(形而上)の世界には阿弥陀仏に象徴される完璧な世界(極楽浄土)があるのであり、阿弥陀仏の無限の大いなる力によって善人も悪人も我々全員が守られているとの思想ですね。Java言語などのプログラミング言語の世界で例えていうと、この世の現実世界が普通に業務ロジックを実行するオブジェクトやクラスの世界だとすると、浄土というのはメタクラスやリフレクションの世界ということでしょうか。そうすると、この世の中にはいろいろなクラス(型)や状態のオブジェクトが存在しており、その部分のみを見ると差別や矛盾だらけに思えるのですが、メタな世界では共通の法則(VM仕様)にしたがっているのであり、JVMのメモリ空間を共用しているという意味ではすべてのインスタンス(霊、ソウル)がお互いにつながっているということです。極楽往生を信じて生きるとはJVMが完全でバグっていないと信じてJavaのアプリケーションプログラムを作るようなものであり、よく生きるように努力するとは、メモリ使用量を最適化したり、リファクタリングしたりするようなものかとなんとなく思います。

*2:今から思えば、それは典型的なアスペルガー症候群の症状だったのですが、当時はそんな病名は知らなかったし、自分の能力の無さや不器用さがいやになりました。

*3:当時はなんてパワハラな上司だとその部長を恨んでいましたが、今ではそれも良い経験の一つであったと考えられるようになりました。

*4:気の許す同僚からはプログラマーでは将来食べていけなくなると親切に止めてくれる人もいたのですけれど、上司からは辞表を待ってましたという感じで一度たりとも引き止められることはありませんでしたし、お別れ会とかそういったものもありませんでした。全部の会社がそうではないと思いますが、外資系だと営業成績が悪くても社員をリストラできない場合はイジメをしてでも自発的に退職することを促すという文化があるのだと思います。

*5:理解や習得の速さも人それぞれだと思うので、たとえば本を読んですぐに理解できないからといって自分は才能がないとすぐにあきらめてしまう人はいますが、必ずしもそういう必要はないと思います。「好きこそ物の上手なれ」ということわざの通り、時間をかけてじっくりと習得するタイプの人もいるわけなので。私の場合は、大体新しい言語やフレームワークの本を読んでも最初ちんぷんかんぷんなことが多く、同じテーマの本を何冊か読んでようやく分かった気に成るということが多いですね。現在もプログラミングScalaを勉強中ですが、ところどころの記述でかなり理解できないことだらけです。あせらず、じっくり取り組んでいこうと考えています。

*6:そういう意味では、私のいままで「苦手」と考えてきた顧客とのコミュニケーション能力が重要になってきているということです。ただ、根回しとか行間や空気を読むといったコミュニケーション能力ではなく、プログラマーとして本音で顧客と話すといったことはまた違った能力であると思います。

*7:現在では個人ブログを開設するのと同じくらい気軽にオープンソースプロジェクトを開設できます。GoogleCode、GitHubSourceForgeなどを利用すれば、一人でも無料で自分のソースコードを公開してコミッターになれるのです。