仕事を楽しむコツ
「楽しそうに仕事しますね。」と言われたことがあります。その時はよくわからなかったのですが、どうも私は知らず知らずのうちに仕事を楽しんでいるようです。
ソフトウェア開発には色々と大変なこともあるのですが、仕事を楽しむための工夫をしているのかもしれません。今回はそんなことを書いてみたいと思います。
楽をする
そもそもコンピュータは楽をするためのもの
コンピュータの始まりは大陸間弾道弾の計算だそうで、面倒な軌道計算をまかせる目的だったようです。
「紺屋の白袴(こんや(こうや)のしろばかま)」という言葉がありますが、目の前に計算機があるのに、ツールを使わずに肉体労働化してしまうエンジニアが意外と多いので、グレーカラーとかIT土方とか言われちゃうんですよね。
世の中には色々なツールや手法があるので、使えるときにはどんどん使って楽をしましょう。
どっちが楽か合理的に考える
使えそうなツールでも、メリットだけでなくデメリットもあります。今までの手作業による開発方法をやめることがデメリットになってしまいます。具体的には、
- ツールを学ぶ必要がある
- ツールが使えなくなると作業ができなくなる(依存する)
- 他の人でも使えるように最低限の導入手順や利用方法を残す必要がある
- 見積もり誤差があるので期待する効率化ができるとは限らない
- 効率化されると仕事が減って達成感がない
- 慣れていないので何となく不安でストレスを感じる、など
色々考えると、効率化のメリットがすぐに出ないと感じるかもしれません。でも、ツールを入れて入れなくても効率が変わらないなら、何か問題が起きたり、同じような仕事をする場合、上記のデメリットはほとんどなくなり、ツール化のメリットが感じられるでしょう。これは、リファクタリングやテスト自動化の導入と同じですね。
面倒な仕事を終えると大きな達成感を感じるでしょうし、慣れた作業は安心感があります。しかし、新しい知見や効率化され対応力のある未来は訪れません。将来も含めてどの方法のリスクが少ないか、合理的に考えてください。
恥ずかしがらずに聞く
後輩や部下ができると成長が止まる人がいます。「若い子に聞けないでしょう」という人です。同じプロジェクトの仲間なのだから恥ずかしがらずに聞けばよいと思います。聞くことを恥ずかしがる人は、若い人の知識が得られないので出世するうちに時代遅れになってしまいます。
大学の先生を見ていると、大先生ほど定義を大事にされるので、基本的なことほど確認されます。中途半端に理解するのではなく、説明できるレベルの知識とそれ以外を明確に分けられるからこそ、多くの知識を蓄えて適切な判断や推論ができるのだと思います。
プロセスプログラミング
ソフトウェア開発をどう進めるか、それはプログラミングと変わりません。正常処理だけでなく、あらかじめ予想される例外をどのように扱うか、対策を考えないといけません。
時間だけは戻らない
プログラムの出来が悪い時、処理が途中で終わってしまい、プログラムを書き換えて処理をやり直さないといけません。
仕事も同じです。「段取り八分」というように、仕事の成否は段取りでほとんど決まります。何も考えず、簡単なところから手をすけたり、決定が遅れているからと問題解決を図らないまま、適当に別の作業をしておくなどという進め方は、徐々に問題を大きくします。
時間は戻ることがありません。しっかりと作戦を練ってから作業を進めましょう。
期待しない
複数人で開発する場合はインタフェースを決めて開発しますが、いざ結合すると動かないことがあります。プログラミングでも思い込みでライブラリを使うとよく起きることです。
テストしていないというのは論外ですが、テストしていても仕様の理解不足や勘違い、厳密でなかったので別の解釈をしていたなんてことがあります。「現地現物」というように実物で確認して、早めに小さく失敗しましょう。
実物がすぐに確認できないなら、情報を集めるしかありません。どんなテストをしたか?する予定か?細かなところはどう認識しているか?ストレートに聞くと良いでしょう。高圧的にではなく、自分も間違える可能性のあることを踏まえると良い関係が築けるでしょう。
先に手を打て
「段取り」と言っても色々あってキリがない。そう思われるかもしれません。でも、2割8割の法則あるいはパレートの法則と呼ばれるように、多くの問題は一部に集中することが多く、そこを狙います。
発生しそうな問題をリスクと呼びますが、リスクの定義は、発生確率×影響度です。この積を踏まえて、どのリスクを避けるか、下げるか、保険をかけるか、あきらめるか、を判断します。
リスクは時々刻々と変化します。問題のありそうなところは早めに検討ましょう。技術的な検討をすませて仕様を早く決定した方が良い場合が多いですが、関連する仕様が変わる場合などでは、ぎりぎりまで変更できるようにした方が良い場合があります。
気の持ちよう
同じ問題に直面しても、楽しめる人とそうでない人がいます。
義務感より責任感
世の中には難しい問題があります。暗号でも使われる素因数分解などは簡単に解けません。難しい問題が簡単に解けないのは担当者の問題ではなく、問題が難しいから時間がかかるのです。
責任感の強い人には、難しい問題を抱え込んでつぶれる人もいます。でも、責任をもって問題を把握して、難しいことは難しい、時間がかかるときは時間がかかる、できない時はできないということが責任ある行動です。解決策が考えられるに越したことはありませんが、問題を共有して仲間や上司を頼ることが必要な時もあります。
プロジェクトのゴールを考える
やりたいことややりたい方法がある人も苦しみがちです。別の開発ではうまくいくことでも、今のプロジェクトやそのメンバーでうまくいくかを考えてください。
プロジェクトのゴールを考えると、自分の気持ちがどうでもよくなってきます。今やりたいことよりも、やらないといけないことの実践がプロジェクトを成功させます。目標に向かって集中したなら、その達成感はとても大きく、その喜びはみんなで分かち合えます。
トラブルを楽しむ
進んでトラブルに巻き込まれる必要はありますが、トラブルに巻き込まれたならめったにない機会を楽しみましょう。上に書いたように問題の多くは集中していますから、冷静になって問題点を見極めましょう。
難しい問題ならできなくて当たり前、少しでもよくできたなら大きな成果です。新しい問題で経験したことは、これまでにない知識と経験を与えてくれるでしょう。
身体を壊してまで達成しないといけない仕事はありません。計画通りではないかもしれませんが、問題のない範囲でうまく対処できたなら、それは成功と言えるでしょう。
まとめ
坂本龍馬好きの私は、合理的な発想が好きです。達成感とか自己犠牲、あるいは立場、など判断に関わりそうなことはわがままだと思います。トータルでどっちが楽かという合理的な考え方が仕事を楽にします。
頑張るという言葉の語源の一説に「我を張る」が転じたという説があります。自分で頑張っていると思っていても、合理的な判断から外れていればそれは、我を張っているのではないでしょうか?
あなたが楽になる判断をすることが、仕事を楽しむコツだと思います。