とある元SEの思考を探る

ひょんなことからとあるICT企業ではたらくことになったなんちゃって元SEがしたためるブログ。主に、政治・経済・社会問題・日常の出来事について発信していきます。お読みいただけたら、感動にむせび泣くほど嬉しいです。よろしくお願いします。


私が思う「尊敬」できるエンジニアについて考えてみました

尊敬できるエンジニアはどういうエンジニアかを考えてみました。

私は、エンジニアの判断する上で、知識・スキル・人間性という3つの軸で判断することが多いです。

 

しばしば、知識とスキルの違いが曖昧になりますが、私が思う「ある技術に対して知識がある」とは、「ある技術を使って動くものを作れる」ということを意味します。経験を積めば、様々な技術に触れる機会が多くなるでしょうから、それだけ知識は増えます。概ね、知識とは経験に比例するものだと考えています。

一方、スキルとは、知識を前提として、より良い設計でアプリケーションを作れる度合いだと思っています。例えば、Railsで言えば、controllerにゴリゴリ業務ロジックを書いて動くものを作ることはできます。しかし、より良い設計という観点から言うと、業務ロジックはなるべくmodel側に寄せて、controllerの役割とmodelの役割を明確にし、複雑な業務ロジックをmodelの単体テストで担保できるようにするのがベターと言われています。もっと良い設計があるかもしれませんが、controllerに業務ロジックを書くエンジニアとmodelに委譲するエンジニアであれば、後者の方がスキルのあるエンジニアと言えると思います。

人間性とは、一緒に働こうと思うかどうかです。例えば、同じ会社に勤めていても、頭ごなしにあれやれこれやれ、このようにやれと言ってくる人とは一緒に働きたいと思わないでしょう。一方、「こんなことがやりたいんだけど、手伝って欲しい。。何かいいアイデアはないかな。一緒に考えて欲しい。」と言われるほうが、(少なくとも私にとっては)気分良く仕事ができます。人間性に関しては、個々人に大きく影響するので、私が働きたいと思う人が他の人とって違うかもしれませんので、個人差があるところだと思います。

 

そして、私にとって、尊敬できるかどうかは、「スキル」と「人間性」に大きく依っているのではないかと最近思い始めました。知識が豊富でも保守・運用性のことを考慮せずとりあえず動くものを作るというのは職業エンジニアとして失格だと思います。より良い設計というのは、保守・運用性の高いというのもその要素の一つに挙げられます。

「動くものを作る」というのは、勉強すればできることです。スキルも、勉強すれば向上することですが、動くものを作れたということに満足してしまう場合は、おざなりになってしまうところです。一歩高みを目指すエンジニアにとっては、動くだけに満足せず、どうすれば他の人でも保守しやすいコードになるか、自分以外でも読みやすいコードになるかというのを考えるのは、プロフェッショナルとして尊敬できる点でしょう。

 

ここで、もう一度スキルについて深掘りをしてみたいと思います。

現場では、とにかく早くリリースすることを求められることが多々あります。そのような状況では品質がないがしろにされる場合があります。スキルのあるエンジニアは、それでも、できる限り品質の担保に努めます。つまり、ここのテストコードは今は書く余裕がないけれども、テストがしやすいように、メソッドを少し細かく分け、役割を明確にしておこうとか、ビューに関係のあるコードだからモデルではなくプレゼンテーション層に入れようなど、そうした設計です。フレームワークやライブラリを作るのならともかく、わかりにくいメタプログラミングを多用しないといったことも大事かもしれません。if文を何度もネストしなければならない状態になったら、何かが間違っているかもと思って少し立ち止まって設計を見直すということもするでしょう。

そうした様々な設計を考慮しその上でかつ、超速ですべてのメリットデメリットを考慮してその時点での最適な設計を瞬時に導き出す。さらにその過程も何らかの形で素早く後世に伝えれるようにする。この速度もスキルのあるエンジニアと言えると思います。

本当にスキルのあるエンジニアなら、テストをも求められる短納期で書き切るでしょう。

 

知識は時間をかければ誰しもなんとかなると思います(動くものは作れる)。

しかし、スキルに関しては頭の回転の速さも求められるところです(私にはムリ…)。だからこそ、スキルがあるエンジニアを私は尊敬したくなるのだと思います。

人間性についても、一緒に働きたいかというのも重要な要素です。高慢な態度の人はやはり苦手です。

だから、私は、知識よりも「スキル」と「人間性」が大事だと思います。経験の少ないエンジニアは知識が少ないのはある意味やむを得ません。あらゆる言語に精通して、インフラもフロントエンドも詳しくなるなんていうのは1年で身につけるのはムリだからです。しかし、その中でも常に向上心を持ち、周りのことを考えてコードを書く。これを地道に継続できるエンジニアはたとえ知識が少なくても尊敬できます。

 

今回も、自分への戒めの意味を込めて、もっともっと自分を磨いていきたいという思いを込めて、書かせていただきました。

ここまで読んでいただき、ありがとうございました。

 

関連記事

smartenergy.hateblo.jp