エンジニア・プログラマあるあると思って読んでください。
ソース管理がSVN
さすがに2021年以降の新規開発案件ではないと思いますが、SVNでソースコードが管理されているのは嫌です。「えっ」ってなりますね。
SVNが嫌というか、Gitは慣れるととても使いやすいので、Git以外のバージョン管理ツールが使われていると嫌です。
SVN使っていたら、SIerとしてのあり方を疑ってしまいます。
DBマイグレーションが整備されていない(Alter文やCreate文が配られる)
開発中にDBの変更は全然ありますよね。ある現場では、2019年だったのですが、すべてCreate文でDB変更が提供されていました。
ローカルで入れていたテストデータを都度消さないといけないはめになり、とてもストレスでした。外部委託しているエンジニア達のことを何も考えてないと思いました。
Java案件なら flyway migrate を入れて欲しい。初めてflyway migrateを使っている案件に会ったときは、「こんな素晴らしいのあるんだ!」と関心しました。
DBのテストデータが整備されていない
これは求めすぎかもしれないです。Gradleのタスクでテストデータのロードが用意されていたら、開発はかなり捗ります。1件だけでも画面を結合して動かせるようなデータあると嬉しいですよね。
特にテーブル数が多かったり、担当外の機能のデータが必要になったたりしたときに、データを作るにはもう外部キー制約を外して無理やり最低限のデータを作るしかないというケースがよくあります。そんな案件でテストデータのロードタスクがあれば、自分でデータを作る工数が開発メンバ分削減できるので、チーム全体の生産性がアップしますね。
CDがない(自分でbuildしてdeployしないといけない)
Javaではデプロイするためにビルドしてjarやwarを作る必要があります。自分でビルドしてSCPやFFFTPで開発サーバにアップして、Startバッチを起動するというのは、新規のプロジェクトでは流石にないと思いますが、CDが発達した今、もうめんどくさいと感じるようになりました。
Git pushを契機に自動デプロイしてくれたら、めちゃくちゃ楽です。
共通部品の提供が遅い
どの画面・機能でも使われる部品類の提供が遅いと、いつまで経ってもPGが完了した気分になれません。かなりストレスです。
部品類はメンバ全般が使うものなので、量産フェーズに入る時点で用意されているべきです。プレ開発時にインターフェースだけ、メソッドのがわだけでも用意しておくと、開発メンバは部品提供されるものとして進められます。
部品類が提供されていないと、TODOコメントがいつまでも消えなかったり、メンバは独自実装して進めたりと、品質が上がってこないんです。
ドキュメント類の不整備
プロジェクトディレクトリ内に関係ない資材が置かれている(テスト用JSONなど)
JUnitが通らない
Lomokが使えない(使わせてもらえない)
Lombokを使ってないプラグインは今でもあると思いますが、Java開発ではsetter/getterはどうしても頻出なので、Lombokは必須だと思います。
IDEでsetter/getterは自動生成できますが、ソースが汚れるのでイマイチですね。Lombok入ってなければ、私は使用することを提案します。
jQueryプラグインが多い(消していいかわからない)
ブラウザのカレンダー部品ではなくDatepickerが使われている
<input type=“date”><input type=“datetime-local”> ってご存知ですか?(デモ)
HTML5から導入されたdate/datetime-localですが、プラグインやライブラリなしで使えます。にも関わらず、わざわざDatepickerプラグインを使う案件がありました。顧客提示しちゃってるから見た目が変わるのはよくないという理由で覆らなかったのですが、Datepickerの見た目にこだわる顧客はいないと思うので、ぜひdate/datetime-localを使いましょう。
Datepickerは適用するために $(”#hoge”).datepicker()と書かなければいけないなど、手間がかかるので嫌です。