開発者は詐欺師です。
言い過ぎかもしれませんが、少なくともそう感じます。多くの開発者自身もそう感じていると思います。自分は不十分で、ダメで、周りの人たちと比べて才能がないと感じるのです。
そう、自分が詐欺師のように思えてしまうのです。
自分が詐欺師であるような感覚に苦しむ有能な開発者の話を何度も、何度も聞いたことがあります。才能が足りない専門家は単純に能力がそのレベルに達していません。それを、なんとかして隠そうと必死です。
「自分の才能が足りないことを、周囲に悟らせてはいけない」
「自分はふさわしくない」という重荷
多くの人が重責を抱えています。恐れ、懸念、失望から、細かいことにも敏感になります。そして、インポスター症候群(訳注:自分の能力や実績を認められない、自己評価が異常に低い傾向のことで、詐欺師症候群とも呼ばれる)に悩まされ、生活の大部分で辛い思いをしています。
専門家によればインポスター症候群は偉大さの兆候であるそうです。
ですが、そんなことは嘘だと感じるのです。
インポスター症候群をぐっとこらえて働き、キャリアを築き上げられる人も中にはいます。最近の研究では70%もの人がインポスター症候群であることが示されています。多くの人は、徐々にその重荷につぶされているのです。
実際、インポスター症候群は偉大さの兆候なわけではなく、もっと深いなにかの兆候なのです。
インポスター症候群は偉大さの兆候ではない
インポスター症候群は栄養失調のサインです。
創造的、知的、精神的な欲求が満たされていないサインなのです。
どうやって分かるかって?
どの分野でも本当に極めた人は、自分の知識に足りないところがあると分かっています。いまどの辺りにいて、目標とするところまであとどのくらいかがしっかりと見えています。
彼らは創造的、知的、精神的に満たされています。
試行し、探究しながら自分に足りない部分を分析し、自分の限界を知ろうとします。そこから学び、他人のスキルを利用して、さらに学び、成長します。
このようなスキルはインポスター症候群を克服するのに必要なのに、ほとんどの開発者が教わっていないことが不幸をもたらします。
システムがないことで実績が挫折感を引き起こす
Stack OverflowやCodepen.ioは便利なツールですが、諸刃の剣ではあります。たいてい、このような共有サイトのテクニックを吸収するのではなく、単純にコピー&ペーストしてしまうからです。
それでいいときもあります。
プロジェクトを終わらせるために、やれることはしなければならない状況もあります。
しかし、そこにインポスター症候群が潜んでいるのが見えますか?
- 日産自動車の開発者がStack Overflowからコードをコピー&ペーストして大きな問題になった
- Quoraには自分で問題を把握せずにStack Overflowで検索しているので、自分がダメなプログラマーなのではないかと疑問を持っているユーザーがいる(ヒント:この問いが良いプログラマーに成長させる)
- 開発者が他人のコードをコピー&ペーストすることは悪いことなのか質問している
彼らはなにも悪いことはしていません。
開発者の大多数は忙しく働き、コミュニティに協力的で誠実です。
しかし、彼らにはシステムがないのです。
開発者の壁にぶち当たったことがありますか?
次のような経験はありますか?
なにかを開発しようと決めます。机に向かい、IDEを開いたのに、なにもできない。ただそこに座っているだけで集中できません。やろうとしているのにやれない。
身に覚えがありますか?
開発者の壁に関する記事を読んで、次のような状況に思い当たることがあるはずです。難しいことは後回しにするか、簡単なところだけやって、その場しのぎでなんとか乗り越える、といった考え方です。しかし、解決できないこともよくあります。
それは問題の根本的なところを対処していないからです。
きれいなコードや実用的なコードが書けるかといった観点は、本質的なものではありません。偉大なことは構造的であることが必要です。
一流の映画スター、学識経験者、軍人、運動選手、そのほかどのような成功者でも、彼らの成功は巧みに作り出されたものです。
成功するために開発者に求められることとは、またインポスター症候群と向き合うために必要なことはなんでしょうか?
一流スターのシステムに従う
もっとも高いレベルで結果を残す人たちについて興味深いことがあります。彼らは自分ができると思うことや、自分が感じたこと、ほかの人の評価を信頼しません。
実現したいことを成し遂げることを考え、ゴールから逆算して、そこに到達できるシステムを作ります。
とても特別なシステムです。
単になにかを作るために使うシステムでも、実際の作業に使うプロセスでもありません。おそらく、多くの人はすでに持っています。
そう、学ぶシステムです。
彼らが使うシステムは大量の知恵、知識、知力を劇的に身につけるのに役立ちます。創造力と専門知識を高めるのに必要なものです。
たいていの開発者はこんなことを思いつきもしないでしょう。無知や鈍いからではなく、教わらなかったからです。このシステムの欠如が、インポスター候群を生み、開発者の壁を作っています。この問題に直面するとき、ほとんどの開発者は平凡なアドバイスに従って、コーディングし続けてしまうのです。
しかし、本当の対処法は逆なのです。
コーディング作業を減らせばより優れた開発者になれる
ふざけているように聞こえますか?
「仕事を減らせば良くなるってどういうこと?」
自分自身が弱っているのです。インポスター症候群に時折悩まされていますよね? 開発者の壁にぶち当たっていると感じたり、ほかの多くの人のようにうまくできないと思っていませんか? 創造性、知性の栄養失調状態なのです。
受け入れ難いのは分かります。
ちょっと想像してみてください。
マラソン大会に出場するように依頼されたとします。スポンサーがいて、プロ級の設備にすばらしいコーチやトレーナーもいます。もしレースに勝てば、スポンサーは免税で30万ドルもの報酬を約束しています。こんな好条件ならできそうな気がしますね?
ここに罠があります。
あなたは食べ物も水も飲むことができません。レース前20日とレース後の20日は飲食禁止です。
それでもできますか?
できませんよね。
開発者は「食事」を摂らずにマラソンをしているのです。
ええ、Stack OverflowやCodePen、ほかにも参照したり学べるサイトがたくさんあります。こうしたサイトを常に参照し、必要なことを調べるのに利用しています。
栄養失調になるなんてとんでもないです。
こういうことです。レストランに入り、テイクアウトで注文し、それを目の前に置く、それでお腹が満たされますか?
満たされませんね。
お腹を満たして満腹感を得るには、実際に食べなければなりません!
現実的ではないことを言っているのは分かっていますが、そういうことなのです。
開発者は日々驚くようなものを作り出すことを期待されています。「それ」を実用化することが求められています。しかし期待に応えるには、創造的刺激、実用的な専門知識、教育が不可欠です。
突き詰めるだけでなく、常に新鮮なアイデアを取り込む必要があります。アイデアを実験したり、テストしたり、あれこれ手を加えるのです。
なぜって?
持っていないものは出せないからです。
必要な栄養がなければ、創作に不可欠な栄養もないということです。それが仕事の結果に表れます。
昔書いたコードを見て気恥ずかしくなったなら、言わんとしていることが分かるはずです。
栄養の十分な開発者は常に与えるものを豊富に持っている
もし栄養失調になったらどうしますか? 栄養の十分な開発者になるためにどうすれば良いですか? 選りすぐりの開発者はどうやって常に、機械的にきれいなコードや驚くようなアプリを作り出せるのでしょう?
彼らは「食べる」場所をリスト化しています。
- Stack Overflow(当然です)
- CodPen(フロントエンド向け)
- Redditのフォーラム:JavaScript、PHP、Python、Ruby、Java向け
- Plunker
- XDA-Developers(モバイル向け)
- Python、PHP、Ruby、JavaScript
- Googleのサイト検索とSourceForge.net経由のGitHub
- そしてもちろんSitePoint
上のリストは明らかに包括的とは言い難いものです。
包括的であることは意図されておらず、ただスタートすることを目的にしています。このリストを修正して独自のリストを構築してください。影響力のある開発者をフォローして、構築したリストのサイトに時間を費やします。
FacebookやLinkedInは?
興味がある人、グループ、アプリ、プロジェクトがあればフォローします。開発者は仕事せずにブラウジングすることに罪悪感を覚えがちですが、そのような感情は無視してください。ほかの開発者の仕事をブラウジングして覚えておきます。
- なにか衝撃的なことはありますか?
- どのような工夫やテクニックが良いと思いましたか?
- 自分の仕事だったらなぜか説明できますか?
答えを考えてください。
こうした情報を目にした瞬間、必要不可欠であると感じるでしょう。
良いと思ったものを保存、ブックマークするサービスが必要になるはずです。私はPocketを利用して、見つけたものはなんでもすべてブックマークしています。速くて分かりやすく、簡単です。
ここは少し規則的にしないといけない部分です。
同じセットやタグタイプを使って見つけたものにタグ付けします(たとえば、PHP、クラス、関数など)。あとで探しているリソースや詳細をすぐに見つけられるので重要です。
最初に分類タグの初期セットを作って(たとえば、PHP、関数、クラス)、あとは記述的なタグ(たとえば、class_parents)を使って扱うものを分類します。
個人ライブラリーの情報量はどんどん増えてくるので、タグ付けを怠ると探し出すのが難しくなります。
準備万端、さあ実践です。
真似したいアイテムを選ぶ
不法に誰かの作品を盗用しろと言うと思いますか? いいえ。誰かの作品を許諾なく、商用的に使用、共有、投稿するように頼むと思いますか? 絶対にそのようなことはしません。
学ぶために、誰かの作品を私的にコピーすることを提案しているのです。
なぜか。
なぜなら、すべてはリミックスだからです。
ニューヨークの映画製作者、Kirby Fergusonは「すべてはリミックス」シリーズを作成し、「オリジナル」の構成要素はすべて、それが登場する以前の要素をばらすか、再ミックスしたものであることを示しています。
新しいものはないのです。
すべては誰かの作品の繰り返しです。映画、ガジェット、ゲームなど作成するものはすべて、ほかの人の作品がベースになり、影響を受けたものです。Kirbyは、伝説的なクリエーターたちは実に簡単な方式で、驚くようなものを絶えず機械的に生み出していることに気づきました。
その方式は、コピー、変換、結合です。
これが開発者の壁とインポスター症候群への対処法です。成果、お気に入りのストーリー、驚くようなアプリ、技術的な進歩はすべて、それより前にあったものを基礎に作られています。
単にほかの人の作品のリミックス版なのです。
どの業界の伝説的な生産者も、この簡単であるけども、見逃しやすい方式を利用しています。
真似するものを変換する
誰かのコードを取り入れてアイデアをコピーし、また別のコピーしたアイデアと一緒にミックスして組み合わせます。変換したものを何度も何度も結合して、完全に「新しい」なにかになるまで混ぜ合わせます。
秘訣があります。
この方法は「食べ方」と同じです。うまくできれば、学び、詳しくなり、自分のものになります。この作業を十分にこなすと、教えてはもらえない些細なことまで吸収できるようになります。限界は超えられ、制限は打ち破れるでしょう。
コピー、変換、結合。
このシステムがインポスター症候群と開発者の壁を過去のものにします。このシステムを使って学ぶ姿勢であり続ける限り、アイデアは至るところにあると気づくのです。
システムに従いさえすれば、自分の理想とする開発者になれます。
このシステムを無視すると、自分のスキルは衰えていきます。
スキルを失うのにかかる時間は、スキルを獲得するのにかかった時間に比例します。システムに従って一貫していればいるほど、開発者としての知識は深まり、スキルを失いにくくなります。
飢餓状態はインポスター症候群を招く
開発者なら一度は壁を体験しているでしょう。しかし、これからは違います。原因を理解しているので、永遠に型にはまることはないはずです。
あなたにはシステムがあります。
欲しいものを作れるシステムです。同じようなすばらしい作品を常に作れるのです。見た目や雰囲気は違いますが、結果は同じです。
伝説めいたことです。
ほかの誰かが自分よりもすばらしい仕事をしているように感じたら、コピー、変換、結合してください。自分が作って実現した美しい、驚くようなものがすべて見えます。
ほら、あなたは詐欺師ではありませんよ。自分が理想としていた開発者です。
(原文:How to Become a Better Developer by Coding Less)
[翻訳:和田麻紀子/編集:Livit]