「きちんとしたとは?」という話はあるけれども、
「コードとはどうあるべきか」を知っていて、コードを読んでそれが巧いか拙いかわかるという普通のレベルのエンジニアの人と話すとき、僕はとても緊張する。とある流れで面接的なものを受けたときも、それで酷く緊張して頭が真っ白になり「自分の得意な言語でループを効率的に書け」と言われただけなのに関数どころか書式もなにもかもが全く出てこなくなってしまって、お互いにこれは困ったねという顔をするしか無くなってしまった。もちろん、その話はそれで無しになった。書面だけでお祈りされることもなくせっかく京都から浜町まで行ったのに。ガッデム。ガッデム俺。
なぜとても緊張するのか?と言えばそれは要するに自信がないからだ。
自分なりに勉強しコードを読み、やり方を年々変化させてなんとかプログラマらしくなってきたけれど、他人にコードを読んでもらう機会がほとんど無く、自分のやり方が妥当なのかどうなのかという自信がない。コンプレックスと言ってもいい。良いとされるもの(例えば:アジャイル)を求めてしまって、それと自分の差を見てまた自信がなくなってしまう(本当はそれが今の自分のプロジェクトにとって最適かどうかの検証が必要なのだけど)。そんなの気にしなければいいじゃんといつも思うのだけど、きっとプライドが高いんだ。「ダメだこいつ」と思われたくない。つーか怖い。
だから、きちんとしたエンジニアの人と話をすると、ダメ出しを恐れてとても緊張する。
でも最近少し学んだことがある。
自信がないことや、もしかして本当に能力が足りないことや、緊張することは仕方がないけれども、緊張しながら言うべきことをまとめて丁寧に伝えることは出来る。
最初に大事なことは「聞かれたことだけを考える」。先回りして補足しておこうとかしても話が錯綜するだけだ。それよりもまず質問に回答を用意することを優先する。
次に「解らないことは解らない」と答える。なんでもかんでも解らないのはダメだが、解らないことを説明するのはあとでいい。全体としてはっきり掴んでいるわけではないことについて言及するときは、解っている部分と解らない部分を分けて解るところだけ明確に答える。解らないところを曖昧に答える必要はない(と考えておく)。
最後に「ゆっくり話す」。考えながら話さなくて良いから、いつもよりゆっくり話すことを心掛ける。早口で話すとその自分の口調に煽られてさらにテンションが上がってしまう。ゆっくり話すとだんだん周りが見えてくる。周りが見えたところで僕が優秀なエンジニアに化けるわけでは全然無いけれど、言いたいことは言えるようになる。
もちろんベースとしては、自信のなさを何とかしないことには根本的な解決にはならなくて、そのためにはコードを読んでもらう人を確保するとか、コードを公開するとか、もっとソースコードをたくさん読むべき。他の言語の実装ももっと見るべき。そういうことは解っているのだけど、そして努力を始めているけれど、今現在足りないという場面に対面したときには、上に書いたようなことを心掛けながらその時の100%を出せるようにしたい。
こういうの、意識しなくても出来る人もいるんだよなぁ…それは素直に羨ましい。いやまじで。