見出し画像

入社直後のアプリ改修プロジェクトが大炎上だった話(自分の失敗あり)


1.はじめに


こんにちは!
子どもプログラミング教室エドグラの大村です。

今回は、私がプログラマーとして転職してすぐに携わった、某コープ(生協)のECアプリ改修プロジェクトが思い返せば大変だったという話をします。

その時はまだ最初の仕事だったのでプログラマーの仕事とはこういうものかと思っていましたが、冷静に思い返せば予定外のトラブルや段取り不足や長時間労働などまあまあ大炎上のプロジェクトだったなと思っています。


2.どんなプロジェクト?

某コープのモバイル・スマホ・PC版のECアプリをバージョンアップさせるプロジェクトです。新機能実装・新規ページ作成・デザイン・古い記法の修正・テストコード作成・その他テスト一通り、APIの実装…など様々なことをやりました。

Ruby on Railsで開発されたアプリであり、入社前から特に勉強していたもので自信があったのでプロジェクトのメンバーに入れてもらうことができました。
HTML/CSS、JavaScript、Rubyなどで作られています。
ソースコードが個人で開発するアプリに比べとんでもなく大規模だったので初めて見たとき圧倒されました。

期間は約1年。開発環境はその時流行りのDockerです。Slackで自社メンバーとも他社メンバーともコミュニケーションをします。


早々にこのような大手の大規模アプリケーションをほとんど1から開発するかのようなプロジェクトに参画できてラッキーだとわくわくしていたのを覚えています。


3.私がやらかしたミス…

プロジェクト開始。要件定義書の指示に従って、テストコードを作成したり古いコードなどを修正したりとスムーズに進めることができます。(初見ではパニックでしたが)

ちなみにここで私は一つミスをやらかしました。

不必要な箇所のコードを修正してしまい、それに気づく前にGitという変更管理システムで保存してしまいました。すぐに気づいて修正し直しGitで再度上書き保存をしますが、Gitではすべての変更履歴が保存されます。

ほぼ問題ないと思いながらも念のため上司に相談したところ、普通に深刻な問題となる事例でした。なぜなら手を付けた箇所には「プロ」として依頼先へ理由説明が必要だからです。

プログラムに問題が起きる可能性は常にあり、リスク管理として誰がどのコードをどのように変更したか、誰の指示か、どんな意図があったかなどはいつも明らかでなければならず、細かな調査・原因究明が行われます。影響範囲がでかいのです。
「部下の一人がなんか不注意で無駄な修正しちゃってたみたいです」と先方へ報告すれば、今回のプロジェクトで手が付けられたすべてのプログラムコードを再確認し、問題ないという証拠を提出しないといけなくなるかもしれません。そして信用は無くなり二度と仕事を任せてもらえなくなるかもしれません。

結論としては、それへのベストな理由と伝え方を上司が一緒に考えてくださり、なんとか事無きを得ることができました。(生きた心地がしませんでした…)
この出来事で、甘かったなと思い、「プロ」としての責任感を強く持つべき重要性を痛感しました。

もう一つ重要なのは、組織においてミスした時に「そんなこと伝えられてない」「自分で分かるわけがない」などと身を守りあやまれないというのは非常に信頼を失うということです。

プログラマーはプライドが高い人が多く、完璧を求められる仕事でもあるので、自分のミスを素直に謝れない人も少なくありません。
私はきっちり「自分のミスです。ご迷惑をおかけし申し訳ございません」と伝えたおかげで丁寧にフォローをしてもらえました。



4.炎上スタート

プロジェクト開始から数か月。コードの修正やテストコード作成、単体テストなどはあらかた完了し、次は新しいデザインと追加機能などです。

Webデザインの会社からデザイン案が送られてきました。
が…
ざっと述べると次のような問題がありました。

・全ページ分のデザイン案がない
似たページからデザインを推測しながらやるしかないということに
・要件定義書にはなかった機能が載っている
⇒自分たちで実現できるプログラムを作るしかない
・デザイン案のCSS(デザイン用の言語)が抜けまくっている
⇒デザイン案の見ためどおりに自分たちでCSSを考えるしかない

何が一番大変って、統一的な指示書もなく、計画にはない実装を他社の皆さんとも分担して作っていきましょう、というカオスな状態です。

計画に無いことをとりあえず進めていけばどんなミスが起きるかわかりません。まずは他社の人たちとこれをどう進めていくかをなるべく早く決める必要があります。

まあ正直言うと私は、上層部の打ち合わせ不足でやばいデザイン案が下りてきたんじゃんって思いましたが、その場の空気に合わせて「デザイン会社○○ふざけんなよ~」って一緒に言ってました。

元々開発プロジェクトなんて費用を抑えるために余裕日数がほとんどありません。大炎上のスタートです🌝


5.消火活動

数か月間、21時半が定時となりました。

先輩社員が「昔は寝泊りしながらやってたこともある」と教えてくれました。教員時代はもっと遅いこともあったので特に気にしておらず、実は会社に寝泊りを体験してみたかったです。現代ではこれがアウトにならないギリギリの時間のようでした。(残業代はいっぱいもらえました)


CSSでデザインを作り、JavaScriptやjQueryやRubyで「マイカタログ機能」や「購入機能」、その他さまざまなページについてとにかく朝から晩まで作業しました。
完了したページがあれば、ちゃんと動いたり映るかのテストです。テストコードを実行してカバレッジ100%になるようにしたり、アプリ画面で実行結果をスクショで保存していく作業もあります。

帰ったら即夜ご飯⇒風呂⇒寝る⇒起きて仕事に向かうなので、あんまりプライベートがなかったです。毎日プログラミングコードが夢に出てきて寝ているときもプログラミングをしていました。

休日出勤を頼まれましたが、土日は家庭教師をしたかったので、午前中だけ顔を出すという状況でした。



6.アプリ完成&リリース

コーディングが終わり、リリースまで何度もテストがあり、開始から1年と数か月後にアプリがリリースされ、インストールしてみると、自分の手掛けたところも当たり前ですがたくさんあって動くので感動したことを覚えています。


自分で苦労して実装したものがみんなの役に立つという成果がプログラマーのやりがいなのだと思います。


7.さいごに

今回は自分の話を書きましたが、プログラマーとして現場で働くのっておおざっぱにこんな感じなんだとただの1つの例として読んでいただければと思います。

プロジェクトは炎上してしまう時もありますが、そんな時はサバイバル感覚で楽しみましょう。
それにプログラミングの仕事は案件にもよりますがやればやるだけ実力がついていくのが分かるので、忙しいときでも楽しいです。


「自分で苦労して実装したものがみんなの役に立つという成果がプログラマーのやりがいなのだと思います。」について、
今回プログラマーを目指す子に一番伝えたかったのは、プログラミングを仕事にした場合どんなやりがいを持てそうか考えてみてほしいというところでした。


この記事が気に入ったらサポートをしてみませんか?