70
45

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【しくじり】新人、○○不足で最弱Javaプログラムを作成する

Posted at

はじめに

エンジニア歴約5年程なのですが、心配性な性格のおかげ(?)で過去やらかした記憶があまりありません。
※もしかしたら記憶から抹消しただけかもしれない。

そんな私が唯一記憶に残っている、若干やらかしエピソードを記事に残そうと思います。
誰でも失敗は経験してるんだよ〜ということで、特に新人の方に読んでいただけたら嬉しいです。

実際のJavaコードはありませんので、予めご了承ください。

○○不足でへなちょこプログラムを作成した

- 新入社員研修まで遡る

かれこれ約6年前、新卒で入ったIT企業の新入社員研修のときです。
文系出身で情報系の知識はまっさらの状態でしたが、未知の世界にどっぷりハマり研修も楽しく過ごせました:relaxed:

特に研修最終段階で実施した、Javaのじゃんけんプログラム作成はボリュームが多かった分、有意義な時間でした。

研修外の時間は稼働をつけられませんでしたが、なんとしてでも良いプログラムを作りたい一心で、当時フォロー役として新人と一緒に研修に参加してくれた先輩のお力添えをいただきながら、研修後も必死にコーディングしました。

プログラムが完成したときは本当に嬉しかったですし、達成感に溢れていました。
長時間かけて真剣に取り組んだからこそ、普段自分に自信がない私でも「周りの誰よりも良いプログラムを作った!」と少しでも思えたくらいです。

しかし、プログラム作成発表の際に、やらかしは起きました。

- 「これ、✕✕じゃない?」

Javaのじゃんけんプログラム作成発表当日も、担当講師の方々から以下お言葉をいただきました。

「あなたのプログラム、本当にきれいなコード書くね。」
「ここまで読み手を考慮したコード、なかなか書けないよ。」

最後まで粘って良かったと思いましたし、このようなコメントをいただけると思ってなかったのでぶわっと気持ちが溢れたのを今でも覚えています。

ですがこの後、追加で以下のお言葉をいただきました。

「でもこれ、グー:fist_tone1:しか出さなくない?」

なんだって。。??と固まりました。
そんなはずはないと思いましたが、実際に動かした際に本当にプログラム側が":fist_tone1:"しか出さなかったのです。
なので、人間(プログラムを動かす側)がパーを出し続ければ全勝するじゃんけん最弱プログラムを作っていたということになります。

「プログラム作成発表の際に、やらかしは起きた。」と先述しましたが、作成段階ですでに起きていました。
それに気づかなかっただけです。

- 原因はなに?

なぜこのようなことが起きてしまったのか?
当時、必死に振り返りました。

「何度もコードを読み返したのに気づけなかった。」
「修正しては動かす、を細切れに繰り返したのに。」

すぐには原因究明できなかったのですが、ふとあることをやっていないことに気づきました。

「あ、全パターンの検証やってなかったかも。。」

完全に私の落ち度です。
3×3パターンきちんと出るか確認するなり、せめて":fist_tone1:"、":v_tone1:"、":hand_splayed_tone1:"をランダムで投入するなり、最終確認を怠っていなければ気づけた点でしたね。
"検証不足"だったのが、当時のやらかしの根源でした。

- 原因がわかって最初に思ったこと

「本番環境じゃなくてよかった。。」

素直にこう思いました。
反省の意ももちろんありましたが、大事にならない環境だったことがとにかく救いでほっと一安心でした。

研修だったので"若干"やらかしエピソードとしましたが、現場での本番環境だったらどうでしょうか?
かなり深刻なバグとして捉えられていたと思います。

担当講師の方にご指摘を受けたときはむしろ笑いに包まれて和やかな雰囲気でしたが、お客様に提供するプログラムだったらと想像すると、ぞっとします。
当時の担当講師の方々と同期、笑いに変えてくれて謝謝:pray_tone1:

- 経験から学んだこと

これはもう、皆さんおわかりだと思います。

"検証の網羅性を確保し、手を抜いてはいけない!!!"

この経験をしたことで現場に出てから、とりあえず触ってみることから始まり、網羅性のある検証を心掛けるようになりました。
※とりあえず触ってみる(モンキーテスト)、は意外と不具合が見つかるのでおすすめ。

検証って地味な作業と思われがちですが、ここで新たな発見をすることも多いので侮れない工程です。
要件定義や開発も好きですが、私は検証も好きです!

最後に

今回は、Javaの最弱じゃんけんプログラムを作成したお話をさせていただきました。
新人の方は研修期間中に失敗と成功を繰り返して経験を積んでいただき、若手以上の方は初心の気持ちを忘れずエンジニアライフを楽しみましょう!

最後までお読みいただき、ありがとうございました:beginner:

70
45
2

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
70
45

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?