Help us understand the problem. What is going on with this article?

女同士のバトルがしんどい ... 入社2ヶ月

More than 1 year has passed since last update.

ある日のこと、とある自社開発Webサービスのとある機能に大幅な機能追加・修正を任されました。そのときに起こった女のバトルを話します。

上司「おい、この機能をバカみてぇにちまちま修正してろ」

あるSNSサービスの掲示板機能に大幅な機能追加・修正が必要だったのですが、それを1ヶ月で私1人で修正しなければなりませんでした。

私は自社で作成されたサービスのコードの詳細を把握していませんでしたし、関数やモジュールによる分離が行われていないコードばかりなのでなおさら把握が難しい状況でした。

私「先輩、この機能のコード、そもそもどこにあるんですか?」
先輩「たぶん、この会社のことだから、関係するコードを洗い出すのが難しいと思うけど、確か会社を辞めてしまった山口くんが、その部分の修正を任された際にドキュメントを残してくれたよ。まあ、修正する前に辞めちゃったけどね、4ヶ月前に。」

テストコードの追加とリファクタリング

その部分のコードのフローを見ましたが、「超絶簡単な問題を超絶複雑に解こうとして、結果的に理解できない状況」になっていました。

私はとりあえず、コードのフローを整理し、テストコードを書き、テストを実行しながら関数化して分離することでコードを人類が理解できるように書き換えました。

その時でした。バカ女開発者が私の部分のコードを見るなり、こう言いました:

バカ女「何このコード。関数なんて使う必要ないじゃん。馬鹿みたい。早く元通りにしてよ、アタシが理解できないから。」

彼女は、この社内では関数を知らないことで有名な開発者の一人です。社内の非常識なコードを「正しいコード」であると信じており、適切に分離されたコードのことを「スパゲティコード」と呼んでいます。

私「いいえ、これはわかりやすくするために行ったことなので、きっとあなたも理解しやすくなったはずですよ。」
バカ女「は?社内のコードをめちゃくちゃにしておいて何いってんの?...まあいいや、どうせあんたは辞めた山口くんと同じ目にあって辞めるだけだから。」

機能追加

機能追加にあたっては、テスト環境でプロトタイプを作成し、上司にコードを動かしてもらうことで、方向性が正しいのかを常に確認しました。

上司「山口よりも使えるなお前。本番環境でコケたら全責任を負え。その覚悟でバカみてぇにちまちま作ってろ。」

追加する機能について辞めた山口さんがまとめてくれていたので、コーディングは円滑に進みました。具体的には、

  • 修正対象のファイル。
  • 修正内容の技術的な説明。
  • 修正時に確認すべきこと。(コード内のメール通知部分の無効化等)
  • 実装のために使えるEcksSee内の機能(EcksSeeとは、巨大でなんでもかんでも機能を追加したカオスなクラスの仮名)。

などについて残しておいてくれました。

本番環境

本番環境と同期したところ、問題は起きませんでした。

ところが、バカ女がいきなりやってきて、私の隣に座っている開発者Aに対し、

バカ女「Aくん、新しく修正された掲示板のコードなんだけど、理解不能なコードになっちゃったから、アタシがその部分の担当になったときは手伝ってね、うふん♡」

と、私に聞こえる声量で言いました。「なんだこいつ」という感想しかありませんでしたが、とにかく無事機能追加できてよかったです。

学んだこと

  • 女のバトルをしながら開発をしないといけない。
  • 自分の担当部分であっても、関数を使ってリファクタリングすると怒られてしまう。
  • 関数を使ったコードをスパゲティコードと呼ぶ。
  • コードが複雑過ぎて責任を負えない場合は、山口さんのように会社を辞めないといけない。
  • 山口さんのようにドキュメントを残すと良い。

これからもがんばっていきたいです。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away