小さな会社で5年ほど開発をしています。
色々やることは変わりつつも主に自社プロダクトの開発をしており、APIやDBの設計・技術選定についてはリーダーが行うため基本的に自分は内部で使われるバックエンドのコアな処理(色々な処理のパイプラインとしてつなぐようなもの)の開発を行うように動いていました。
(設計書的に該当するようなものは書いてないですが1から自分で開発しています)
今は広い範囲で触るようになりAPIの設計やフロントエンドを触るようになっているのですが、見ていくほど粗が多く見つかる状態です。
表面上はそれなりに整理・構造化されたコードは書けていると思うのですが、少し考えると問題は山ほど出てきます。
・ユーザーが書いた任意のコードを実行出来るが、本当に制限なく任意の物を実行できる(実行サーバはユーザー単位で完全に隔離された環境なので実害は少ない)
・N+1問題を放置
・画面の再レンダリングに無沈着
・エラーハンドリングが雑ですぐに500になる(でなくともログ見ないと対処が分からない)
・etc
改善をしたいとチーム内ではなりつつも実際は時間がなくほぼ行っていない状態です。
機能追加やビジネス的な優先した結果であり、ある程度仕方ない部分はあると理解しています。
(相反するものじゃなくね?という意見もあると思いますが規模が小さいので…)
0から動くもの作る力は身についたと思いますが、範囲が狭かったり非機能的な意味での質の高いものを作る経験が出来ていない(と思われる)状態です。
企画やPdM/PM側の側面を強めたいのであればいい環境だとは思うのですが、技術者側としてキャリアを高めていこうとした際に、上記のようなことがネックになると最近考え始めています。
ベースラインとして求められるクオリティが高い会社(総じて大規模なサービスは高いはず)にすべきか考えているのですが、皆さんこのあたりどう考えてるいるでしょうか?