割とあちこちで書かれてる気はするんだけど、ざっくりまとめてみる。
1. クォリティを浅い部分でしか認識していない
「認識しやすい」クォリティ部分でだめなケースはまぁ論外として(正常系が動いてない:露骨にバグがある)。
「セキュリティ的に問題がある」「メンテナンス性が悪い」など、目に見えにくい部分でのクォリティで、割と露骨に差がでます。
具体的には「今問題が出ていないんだからいいじゃないですか」。ハインリッヒの法則とかヒヤリハットとかって単語を、二度と忘れられなくなるまで調べつくしてください。
あなたが見つけ出し潰し尽くすべきは「1件の重大な事故」ではありません。「300件の(危うく大惨事になる)傷害のない災害」なんです。
まずはその300件を「認識することが出来る」程度のスキルと知識と経験をつみましょう。
2. 速度を意識していない
同一機能、同一クォリティである以上「早く組みあがるほうがよりよい」のはごく当たり前な事です。
あなたが「まごうことなく世界最速で設計&コーディング&テストが出来る」という確証がないかぎり、あるいはあってもなお(百尺竿頭進一歩)、「今よりももっと早くするためには?」という問いを、常に自らに投げかけてください。
最低でも「一般的なエンジニアの10倍」程度の速度は、努力すりゃ出ますから。
3. 無知であることを認識していない
あなたがいまやっている解法よりも「より素晴らしい解法」が存在する可能性が、当然ながらあります。
「森羅万象のすべてを知り尽くした」のでない限り、新しく学ぶべきことなど、比喩でもなんでもなく「山のように」あるはずです。
学習は、それをやめたときから「退化」しはじめるんです。
総じて「今のままでいい」って発言が出た瞬間に「ダメだな」って思うです。なにがいいのかまったく理解ができない。
別に「毎日進歩する」必要はないので(毎日だと、マジで疲弊します(苦笑) )。毎月程度の頻度で、ゆっくりと歩んでいきましょう。
で、お勧めの学習方法。
・月に1冊以上:慣れたら週に1冊以上、技術本を読む
・月に1冊以上:慣れたら週に1冊以上、技術以外の本を読む
・作る。とにかく作る。手を動かしてコードを書く。週に1度〜月に1度以上は何かを組み上げましょう。小さいものでもよいので。
・3ヶ月に一度、自問自答。「この3ヶ月で新しく身に着けた知識/スキルは、なに?」
・6ヶ月〜1年に一度、自問自答。「自分が今持っている知識は、やり方は、本当に最適解? よりよいものがあるんじゃない? 間違ってるんじゃない?」
これを年単位でやってれば、何もやってない人とは多分「かなりの差」が付くのではなかろうか、と思います。