見出し画像

こんなエンジニアになりたい

このところ「エンジニアとして仕事がしたい」という思いが強くて必死に勉強しているわけですが、「こんなエンジニアになりたい!」という、理想のエンジニア像みたいなものを整理しておこうと思います。

目的は
①言葉にすることでビジョンを明確にする
②理想から逆算して日々の勉強に生かす
という2点です。

理想のエンジニアとは

ぼくが理想とするエンジニアというのは、ズバリ、「可読性が高いコードがかける」ことです。

「速く実装できること」も大事だとは思うのですが、ぼくはそれよりも上記のほうが重要だと思っています。

コードは、書いて終わりではありません。
自分の書いたコードは何年もプロダクトのなかに残り続け、その間にいろんなエンジニアが読み、修正し、メンテナンスをしていくことになります。

開発が爆速で完了した。それだけみるととても素晴らしいことのように思えます。

でも、もしそのコードが汚くて読みづらければ、バグ修正やメンテナンスをするエンジニア(まったく赤の他人かもしれないし、未来の自分かもしれない)にとってはマイナスでしかありません。

つまり、可読性を犠牲にして開発したコードというのは、短期的には「いい」ものかもしれないけれど、長期的にみたときには「わるい」ものになってしまうのです。

また、もうひとつ大切なポイントとして『拡張性』がありますが、突き詰めると、「可読性の高いコード」と「拡張性の高いコード」というのはほぼほぼ同じものになるような気がしています。

可読性の高いコードとは

では、「可読性の高いコード」とはなんなんでしょうか。

ぼくが考える「可読性の高いコード」の特徴は
①ネーミングが分かりやすい
②初心者が読んでも分かる
③規則性がある
という3点。

まずはネーミングについて。

コードを書くときは、常に名前をつけていますよね。cssセレクタに変数、メソッドやクラス...。まずこれらに「適切な名前がついていること」が可読性を高める第一歩だと思っています。

たとえば、得点をあらわす変数名は『point』よりも『score』のほうがしっくりきませんか?
『point』は汎用的でいろんな使われ方をするので、パッとみたときに中身が何なのかイメージできません。「ある点の位置座標」かもしれないし、「話の要点」かもしれません。『score』であれば、だいたいのひとは「何かの得点なんだな」とイメージできるのではないでしょうか。

ネーミングは、「このコードは何をしているのか」を伝わりやすくするための大切な手段であると考えます。

つぎに、初心者が読んでも分かる、という点。ここでいう初心者というのは、プログラミングの基礎をひととおり勉強したひとを想定しています。

さすがに100%分かるのは無理だと思いますが、「なにをやってるのかだいたい分かる」くらいの状態にはできるんじゃないかと思っています。

自分の書いたコードは、将来誰が読むのか分かりません。初心者でも分かるように書いておけば、だれでも理解できるはずですよね。

なのでぼくは「短いコード」にはこだわりません。すこしくらい長くてもシンプルな書き方のほうが読みやすいし、それはスペースや改行についてもおなじことが言えるはずです。

そして、規則性について。

これはコードの内容とは直接関係ないですが、規則性をもたせるというのは、コードを読む側からするととてもありがたいですよね。

たとえば、CSSセレクタの命名規則である『BEM』やCSSプロパティの記述順、'-(ハイフン)'と'_(アンダースコア)'の使い分けなどなど。

規則性は、おなじく「コードの役割」のヒントとしてとても有用です。

可読性の高いコードを書くための具体的なアクション

さいごに、ここまでまとめてきた「可読性の高いコード」を実現するために、ぼくが意識することをまとめておきます。

・ネーミングについて
①より具体的なイメージが浮かぶ単語をつかう
②ひとつの単語で伝えきれないときは、複数の単語を組みあわせる
③思い浮かばないときはググる

・初心者でもわかるコードについて
④ひとつの関数にはひとつの機能しかもたせない
⑤できるだけシンプルなパーツに分解して実装する
⑥コードの短さにこだわらない

・規則性について
⑦セオリーとなる規則性を学ぶ(違和感を感じたらググる)
⑧基本的にCSSセレクタはOOCSSとBEM、プロパティはAtoZで記述する

・その他
⑨優秀なエンジニアが書いた、質の高いコードを読む

こんな感じでしょうか!
あまり欲張っても実現できないと思いますし、ひとまずこのあたりを意識して勉強をつづけていきたいと思います。

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