#新卒エンジニアが上司からの機能変更に揉まれまくって気が付いた事
僕は現在大手人材会社で新卒エンジニアとして働いている。WEBエンジニアとして、フロントエンド、サーバーサイドの設計から実装、テストまで担当している。といっても、作ってるシステム自体はSI案件でなく、自社開発の中規模アプリケーションだ。だから、新卒でも(文系出身)でも担当範囲が広い、と考えている。
チームは10人程度で、WebとiOSに分かれている。僕はWEB側で4ヶ月経験を積ませて頂いた。jQueryでのDOM操作も慣れてきたし、コードも汎用関数に纏める事で軽量化を図ることが出来るようになってきた。スコープも意識しているし、設計に関しては機能からDB設計を行えるようになった。高度なクエリはまだ書く事は出来ないが、数十〜百行程度のクエリは普段書いている。インフラ系の知識に関しても駆け出しレベルではあるが蓄積されてきた。自分で開発環境も整える事が出来る。
そんな僕が、最近学んだ経験をここで話すことにする。
現在僕は少し複雑なロジックの機能を担当している。ちなみに、それだけに2ヶ月もかかっている。
まず、他社の同等機能を洗い出して必要な機能を定義する。そして、それに必要なテーブルを作っていく。すると、もう実装に移る。
いま僕がいる部署では、スピード重視なのか設計や要件定義は殆どしない。これがアジャイル開発なのかなぁ、と思ったりもするのだろうがどうだろう??教えてください。
そんなこんなで、初め定義した機能を満たした画面が4週間で完成した。4画面でこの機能は構成されている。僕も比較的満足して上司に報告した。
すると、上司は
『同時にこれとこれが登録出来る方がよくない?、そっちのが便利じゃん。』
僕は確かにそうだな、と思い機能変更にあまり抵抗を持たず改修に移った。すると、その変更要求を満たすにはテーブルを再定義する必要がある事に気が付いた。
仕方がないので、変更し、定義書をプッシュする。定義が変わったので、コードの様々な箇所に影響が出た。必要以上に改修が嵩み、2週間が過ぎてしまった。
やっとの思いで、変更要求を満たす事が出来た。
しかし、またその状況で困難な事に陥る。今度は自らが機能の欠陥に気が付いてしまった。変更要求を鵜呑みにして、改修した結果、一部の登録情報に影響が出るというものだった。
これはダメだ、と思い上司に相談し納期を遅らせてもらった。
必死に改修を続けた。自分のコードを読み直す中で、段々とクソコードだな、と感じるようになった。道理で改修も進まないわけだ。そこで、自分が書いたクソコードもリファクタリングする事にした。
オブジェクト思考の再利用性や保守性を身を持って実感する事が出来た。
そんなこんなでついに担当機能を完成させた。今まではリーダーに見せていたが、今度はマネージャーに見せる事になった。
結果は、不合格。あれだけリーダーやメンバの意見を信じて、機能変更してきたにも関わらずそれが否定?されてしまった。
上司曰く、機能が複雑すぎてお客さんにとっては難しい、との事だった。自分もその言葉に目を覚まして再度自分が作った物を見てみると、機能だけはリッチだが、本当に分かりにくい、使いづらい、難しい、と感じた。その瞬間に自分の愚かさを痛感した。
この経験を通じて僕は以下のような事を学んだ。
###・マネジャ、リーダー、メンバーの意見が絶対な正解ではない。
###・コーディングに追われて、システムの利便性を見失わない。
###・何よりも自分の意見をもってそれを信じる事。(勿論、誰よりもその機能に詳しくなり、顧客志向である事の前提のもと)
###・自分の意見を正しいものだと納得させる話し方を身につけること。
確かに今回の機能実装に関して、遅延してしまったが、自らの教訓として得る事ができた。新卒の内にこの様な経験をたくさん積んで、次に同じ様なシチュエーションに遭遇したら適切な行動がとれるようにしようと思う。
以上です。アドバイスあればよろしくお願いします。