常識がない
別業種の人からみるとエンジニアの作業はブラックボックス化されているが、実際はプログラムという言語を使って、機械が理解するためにわかりやすく、順序立てて説明することに等しい。
つまり第一言語でうまく説明したり常識的な回答を見い出せる人は、プログラミングも必ずうまくやれる(これが一般的なベンダーで文系プログラマーのほうが活躍できると謳っている理由)。
逆に言えば、常識がない人はプログラミングがうまくない。
ブラインドタッチができない
ブラインドタッチができないのは、プログラムを書いている時間が短いからに他ならない。
Qiitaで知識だけ得て手を動かさない頭でっかちが現場でできることはといえば、抽象的な仕様書を書き曖昧な指示を送ることだけだ。
口だけが達者なエンジニアは新しい技術情報を仕入れる際に、そのツールの名前や使い方を単純に覚えるだけだが、本当に必要なのはそういった選択肢が存在するという事実を理解し、その背景を把握することである。
特定の技術に固執している
新しい技術に積極的ではないとも言える。
現在自分ができる範囲から飛び出したものを学ぶ姿勢がなければ成長が難しい。
ストックがないから、プログラム上で個人の「こだわりの独自ルール」を適用してしまいがちになり、他人からはブラックボックスとなってしまう。
少し話がそれるが、2019年現在、Web系エンジニアが下記のいずれかで深い知識がないと優秀とはいえないと思う。
- 機械学習
- AWS(をすぐに使いこなせるようになるほどのインフラ知識)
- ReactなどのいわゆるMVVMフレームワークとReduxなど状態管理フレームワークを使った開発
- WebGLのシェーダー
それ以外のWAI-ARIAだったりレスポンシブ用のCSSコーディング、バンドラーの知識やWordPressなどは、結局のところ突き詰めて開発を進めていくと上記項目のいずれかを習得する必要がある。
機械学習とAWSはバックエンド向けだが、Reactやシェーダーに詳しいフロントエンドエンジニアがHTML・CSSなどの基礎技術が不自由であるとは考えがたい。
またAWSと書いたのは、バックエンドにマイクロサービス化(APIサーバー化)が求められる中で確実に一度は通る道だからだ。
本質を話さない(会話・文章内容が曖昧)
(エンジニアに限ったことではないが)本質の理解ができていないと適切なリファクタリングができない。
例えば、仕様についてディレクターなどプログラムに精通していない人にできる・できないの判断を仰がれるときに、自分の軸で話しているか、あるいは技術的なレベルでするか・しないかというケースに分けて会話しているかという点に着目すると、技術レベルがよくわかる(時間がなくイエスノーのみで答えてしまう場合もあるとは思うが)。
自分の書いたコードに責任を持っていない
Webで調べたものを動作検証などをせずコピペで済ませたり、引き継ぎの際に明確なドキュメントあるいは十分な言葉を渡さないなど、そのコードに責任を持っていない人は仕事にドライといえるだけでなく、作る際に何も考えていなかったために単純に思い出すのが困難だからである。
情熱を持ったエンジニアであれば、それを面倒とは思わず積極的に関わるであろう。
「これオレが作ったんだぜ!」って自慢できるようなプロダクトを毎回作れば自然とコードに責任が持てるようになる。
…と偉そうに書き連ねてみたが、他人から見たら自分はどうなんだっていう。。