1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

新人の頃、“動くコード”が正義だと思っていた話

1
Posted at

新人の頃、“動くコード”が正義だと思っていた話

新人エンジニアの頃、私はこう思っていました。

コードは動けば正解

エラーが出ない
画面が表示される
DBに保存される

それだけで

できた

と思っていました。

しかし実務を経験する中で
この考え方は完全に崩れます。

動くコード = 正義ではない

むしろ

動くだけのコードは危険

です。

今回は

なぜ「動くコード」が正義ではなかったのか

を実体験ベースで書いていきます。


「動くコード」で満足していた頃

例えばユーザー登録処理を書いたとします。

@PostMapping("/users")
public void register(UserDto dto){

    User user = new User();
    user.setName(dto.getName());
    user.setEmail(dto.getEmail());

    userRepository.save(user);
}

ちゃんと登録できる。

OK、完成

新人の頃は本気でそう思っていました。

しかしこのコード、実務ではこう見られます。

バリデーションは?
重複チェックは?
トランザクションは?
例外処理は?

当時の私は

そんなの必要?

と思っていました。


実務で最初にぶつかった壁

あるとき、こんなバグを出しました。

同じメールアドレスが複数登録される

原因はシンプルです。

重複チェックを書いていなかった

でも当時の自分からすると

登録できるからOKじゃないの?

という感覚でした。

しかし実務では

正しく動くこと

が求められます。

動く ≠ 正しい

ということをここで初めて理解しました。


「動くけど危険なコード」の具体例

① Nullを考慮していない

sendMail(user.getEmail());

一見問題なさそうですが

user.getEmail() が null

だと落ちます。

新人の頃は

そんなデータ来ないでしょ

と思っていました。

でも実務では普通に来ます。


② トランザクションを意識していない

userRepository.save(user);
orderRepository.save(order);

途中でエラーになると

ユーザーだけ登録される

という状態になります。

データ不整合

です。

これも

動くけど危険

なコードです。


③ 例外を握りつぶす

try{
    userRepository.save(user);
}catch(Exception e){
}

これも新人の頃やりがちです。

エラーが出ない = OK

という考え方です。

しかし実務では

原因不明の不具合

を生みます。


なぜ「動くコード」で満足してしまうのか

振り返ると理由は明確でした。

① 成功体験が「動いたこと」しかない

新人の頃は

エラーが消えた

これが成功です。

なので

動く = ゴール

になってしまいます。


② 本番環境を知らない

新人の頃は

ローカル環境

しか見ていません。

しかし本番では

不正なデータ
大量アクセス
想定外の操作

が発生します。

現実はもっとカオス

です。


③ 保守という概念がなかった

新人の頃は

コードを書く = 終わり

でした。

しかし実務では

コードを書く
↓
修正する
↓
改善する
↓
また修正する

が繰り返されます。

つまり

書いた後が本番

です。


「良いコード」とは何か

実務を経験して思うのは

良いコード = 長く安全に動くコード

です。

具体的には

読みやすい
変更しやすい
バグりにくい

です。

つまり

未来のためのコード

です。


個人的な気づき

一番大きな気づきはこれです。

コードは「今」ではなく「未来」のために書く

新人の頃は

今動けばOK

でした。

しかし実務では

半年後に誰かが触る

前提で書きます。

そのとき

読めないコード
変更しづらいコード

は確実に問題になります。


まとめ

新人の頃

動くコード = 正義

だと思っていました。

しかし実際は

動くだけのコード = 危険

でした。

重要なのは

正しく動くこと
壊れにくいこと
変更しやすいこと

です。

もし新人の頃の自分に一言言うなら

動いたらスタート

と言います。

そこからが本当の開発です。

最初こそは大変ですが、慣れとともに意識して完璧なコードを書けるようになります。

それまでは根気強くがんばりましょう!!!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?