アイキャッチ

プログラマー人生を楽しむために知るべき97のこと【スキル向上編 】 「完ぺきなコード」を求めるな/ひがやすを×和田卓人対談

働き方

    腕一本で新しいものを生み出すプログラマーという仕事。

    これほど面白い仕事はないという人がいる一方で、時にデスマ地獄のような負のスパイラルに巻き込まれてしまうことも…。

    プログラマー人生をより良いものにしていくには何が必要か?

    スーパーPG二人が語り尽くす!

    プロフィール画像

    株式会社電通国際情報サービス シニアITプロフェッショナル
    比嘉康雄(ひが やすを)氏

    国産OSS『Seasar』シリーズの開発などを主導してきた、アルファギークの一人。電通国際情報サービスに勤めるかたわら、さまざまな技術カンファレンス、コミュニティーに招かれて講演活動も行っている。個人ブログ『ひがやすをblog』で、SI業界や各種エンジニアへの提言も行っている

    プロフィール画像

    タワーズ・クエスト株式会社 プログラマー 兼 取締役社長
    和田卓人氏

    テスト駆動開発(以下、TDD)の普及役として知られる。学生時代、オブジェクト指向分析/設計に傾倒。その後、ソフトウエアパターンやXP(eXtreme Programing)を実践する人たちと出会い、TDDの誕生を知る。現在は講演活動やハンズオンイベントを開催しながらTDDの普及運動を行う

    ―― 本日もお集まりいただきありがとうございます。さて、「プログラマー人生を楽しむために知るべきこと」第2回のテーマは、「スキル向上編」でよろしいですか?

    ひが はい。ただ、話す内容は前回の続きになりますけど。

    ―― えっ、また恋愛の話ですか?

    ひが そうじゃなくて、前回の「恋愛編」でもお話ししたXP(エクストリーム・プログラミング)やYAGNI(ヤグニ)との出合いで、仕事のやり方も大きく変わった、という意味です。

    和田 良かった。ちょっと焦りました(笑)。

    ―― 分かりました。ではまず、ひがさんはXPを知ってどうスキルアップしていったのかを聞かせてください。

    ひが 今お話ししたように、スキルが上がったというよりも、仕事のやり方が変わったという言い方が正しいですね。前回もお話ししたように、就職してからの僕は、私生活なんかどうでもよくなるくらい仕事に没頭していた。じゃあ、仕事はすごく順調だったのかといえば、案外そうじゃなかった。

    和田 そうなんですか。

    今でこそ名を知られる存在のひが氏も、就職時は不安に苛まれていたという。その不安とは…

    今でこそ名を知られる存在のひが氏も、就職時は不安に苛まれていたという。その不安とは…

    ひが 例えば、今書いているコードは良いコードなのだろうか?、ダメなコードを書いているつもりはないけど、良いコードを書いているという実感も持てない、そんな不安な気持ちをいつも持っていました。

    和田 すごくよく分かります。

    ひが それが、XPの考え方を知ったことで、悩まなくなったんだよね。

    和田 僕も、プログラマーとして変わるきっかけになったのは、XPやテスト自動化の発想に触れたころからです。それまでは、今思えば頭でっかちな設計をしていたと思います。あれこれ事前に考えて、万全を期したつもりでいざコーディングしてみたら、すぐにバグが発生してガッカリ……みたいなことを繰り返していました。

    ひが そういうプログラマーって、実はたくさんいるよね。理想主義的というか。ただ、和田さんは(マーティン・)ファウラーを知って変わった。そうだよね?

    和田 ええ。著書『アナリシスパターン』などを執筆して、オブジェクト指向設計の大家だったファウラー自身が、XPと出合ってからけっこう考え方を変えましたからね。僕もその影響はすごく受けています。

    書くコードの良しあしより、間違いを修正する技術が大事

    ―― 途中で口を挟んですみません、今回のテーマは「スキル向上」なので、仕事のやり方が変わることで、どうスキルが上がっていくのかを伺いたいのですが……。

    ひが プログラマーにとってのスキルアップって、良いコードが書けるようになることだと思うんですね。でも、「良いコード=完ぺきなコード」だと考えると負けなんですよ。完ぺきなコードなんてどこにも存在しない。青い鳥を探しているようなものです。

    ―― なるほど。
    「完ぺきなコードを求める必要なんてない」と熱く語るひが氏に、強く同調する和田氏。そのココロとは?

    「完ぺきなコードを求める必要なんてない」と熱く語るひが氏に、強く同調する和田氏。そのココロとは?

    ひが そもそも良いコードか悪いコードかで悩むこと自体がナンセンス。必要最小限の機能が満たされていて、テストされているコードならそれで十分。間違いが見つかればすぐに修正できるようになっていれば良い。完ぺきなコードを求める必要なんかないんです。

    和田 確かにそうですね。わたしも以前は「世の中には『完ぺきなコード』があるはずだ」と信じていましたが、そんなものはないのかもと思ったことが、一皮むけるきっかけだった気がします。

    ひが プログラマーになりたてのころって、動くコードは書けるけど、さっきも話したようにそれが「良いコード」かどうかの判断軸がなくってあれこれ考えたり、勉強したりするじゃない。でも、YAGNIの思想に触れて、書くコードの良しあしで悩まなくなってからは、まずはやってみようと発想転換できるようになった。

    和田 その発想転換は大事ですよね。

    ひが 僕は悩んで立ち止まっちゃうこと自体が、「負けている」って思っちゃうタイプだからね。自分の強みは、YAGNIに導かれた圧倒的な行動力。行動したことで得たラッキーがたくさんある。『Seasar』のようなオープンソースプロジェクトをやることになったのも、そのうちの一つです。

    アウトプットすることだけがエンジニアを鍛える

    和田氏は学生時代、「最初に書くコードで失敗は許されない」と考えていたというが…

    和田氏は学生時代、「最初に書くコードで失敗は許されない」と考えていたというが…

    和田 発想転換という意味では、わたしの場合、リファクタリングを知ったことも大きな転機になりました。バージョン管理やテストコードがあれば、後からコードをいじっても良いんだ! と。それまで持っていた「コーディングは一発で成功しなければならない」という強迫観念から脱することができました。

    ひが これはプログラマーに限った話じゃないかもしれないけど、正解を求めるためにあれこれアクションしてみた結果、「正解はない」と知ることこそが一番のスキルアップなんだよね。

    ―― それを知った上で実践をしていくからこそ、プログラマーとしての腕前が磨かれていくわけですね。

    ひが そういうことだと思います。行動しなければ何も変わらないから。

    和田 悩んだり、「答えを探してるんです」と言うものの、行動できていないというパターンの人って案外多い気がします。例えば、プログラミングの最新知識を学ぶために勉強会という場があるのに、「もっと知識がないと勉強会に参加しづらい」と二の足を踏んでしまうような。

    ひが うん、それってナンセンスだよね。

    和田 エンジニアである以上、誰もがインプットをしていると思うんですよ。いろんな形で。でも、仕入れた情報のうち、どれが自分の悩みを解決してくれるかは、アウトプットしてみないと分かりません。社外のプログラマーと「こうしたら良いんじゃないか」と議論したり、具体的にコードで書き始めてしまったり。そうやってアウトプットすることで、目の前が開けていくと思うんです。

    1. 1
    2. 2

    Xをフォローしよう

    この記事をシェア

    RELATED関連記事

    RANKING人気記事ランキング

    JOB BOARD編集部オススメ求人特集





    サイトマップ