見出し画像

ソフトウェアエンジニアに必要な違和感を感じる能力

ども、かにかまトマトです。カナダでアプリとかを作ってます。

ソフトウェアエンジニアにとって大事な能力の1つ。
それは違和感を感じれる能力ではないかなと思います。

普段ソフトウェアエンジニアとして仕事をしていると、コードをガリガリ書いている時間よりも人のコードを読んでる方が長いです。

自分でコード書く時であっても、大体の場合は誰かがすでに書いてあるコードの上から修正や追加を行います。なので既存のコードを読んでなにが行われているかを正しく理解しないといけません。
たった1行分の追加でも、その周りあるいは全体を理解しないと書けなかったりします。

その他にも、人の修正や追加のコードを本体に含めるかどうかのコードレビューをしないといけません。人が書いたコードにおかしな点はないかのチェックです。

求められている修正・追加は意図した通りになっているか。
既存のコードは壊れていないか。
変なロジックが混じっていないかどうか。

ソフトウェアエンジニアにとって、こういった人のコードを読むっていうのが仕事の大事な部分なのです。

そこで大事になってくるのが違和感を感じれる能力。
この違和感を感じられないと、変なコードやバグをスルーしてしまいます。

ではその「違和感」とは一体何なんだろうか。
なぜ「違和感」を感じるのだろう。

たぶん僕が思うに、「自分が考える本来あるべき姿からズレたもの」が違和感を感じるポイントではないかと思う。

つまり、自分では「こうあるべきかな」と考えていることからズレていたり変化していると、人は違和感を感じれるのではないだろうか。

違和感を感じれる人と感じれない人

では同じものを見ても違和感を感じれる人と感じれない人がいるのはどうしてだろう。

勝手に原因を想像してみよう。

1つ目は知識量や経験からくるもの。
そもそもの形を知らない人はそれが違和感があるのかどうかさえ判別できない。「こうあるべき」ってのがないパターン。

昔の銀行員の人は偽札をすぐ見つけたらしい。
毎日お札を触って質感、大きさ、色など「本来あるべき姿」を大量に経験しているからちょっとした違いも違和感を感じれるのである。

なのでソフトウェアエンジンであれば、たくさんの良いコードを見なければクソコードで違和感を感じられないのである。

難しいのはベストプラクティスと呼ばれるものでも、時代や場面や状況が変われば内容も変わってくる。
なのでさまざまなパターンを知って常に最新のベストプラクティスをアップデートしておかなければいけません。

2つ目は細部に注意を払えているか。
物事をざっくり見ている時には違和感は気づきにくい。
どこまでそれに興味をもって細部まで注意を払えているかで、違和感の感度が変わってくる。

「魂は細部に宿る」はよく言ったもので。
ソフトウェアも制作物である以上、魂は細部に宿ると思います。

3つ目は言語化できるかどうか。
例えば、ある国では色の認識が多い。
英語や日本語では下の4つの色は「青」で済まされるが、ロシア語の人達は「濃い青」と「薄い青」の言葉があるらしい。

TedTalk

だから実際にこの青の色の違いのテストをやると、ロシア話者のほうが変化に気づきやすいらしい。

普段から違いを言語によって意識してるからとも言えます。つまり概念や言語があると人は違和感に気づきやすいのかもしれません。

ということは、普段から違和感を感じたら言語化しておくことは大事なのかもしれない。なぜ違和感を感じたのか、気持ち悪く感じたのか。

間違ってなくても、「なんか理解するのに少し時間がかかったな」とか、「ちょっと読みにくいな」とか。
こういうのはなぜそう思ったのかスルーせずに、ちゃんと追求して言語化出来たほうがいいのかも知れません。

そういう言語化を繰り返すことで、より違和感にも気づきやすくなるし変なコードも見逃しにくくなるはずです。

ということで

人のコードを読んでいても「ん?」って思うことはよくあります。

そういう違和感って小さいことであればスルーできてしまうんですが、そこが自分の成長の機会であったりバグを未然に防ぐシグナルだったりします。

とはいっても、違和感をすべて自分の違和感のない方向に修正するとかそういうことではなくて、違いを認識できるかどうかの問題です。
違いが分かった上で許容するのと、気づかずスルーするのではわけが違います。

なのでなにか違和感を感じたら、一度自分の中で何に違和感を感じて、どうして気持ち悪かったのかを、説明できるぐらいまで言語化しておくことは大切だなと思いました。

言葉にならない小さな「ん?」を大事にしてほしいと思います。

ではでは。


余談

と思って書いた今日の記事ですが、なんか見覚えあるなと思って調べてみたら、だいぶ前に全く同じ内容の話を書いていました。

すいません。初期の方に書いて忘れてました。半年以上も前でした。
毎日noteを書いていて200日も超えて、おかげさまで記事も日数と同じだけになりました。
結局いつも同じことを考えているんだなと気づきました。
今後はもっと幅を広げる努力をして、同じ内容でも違う視点を持てるように頑張ります。

まぁでもすぐ忘れるので今後も同じ内容を何度も書くと思います。
お許しを。

ではでは。


この記事が気に入ったらサポートをしてみませんか?