stumblr

Your awesome Tagline

268 notes

1行直すだけってそんなに大変なの?

どこの会社でも「1行直すだけでしょ? そんなに大変なの?」ということを何度も聞かれる (もしくは言外にそのニュアンスを含められる) ので毎度説明するのだけれど、「いや、そう思うだろうけれど大変なんですよ」以外に答えられていなくて、自分でもあまりうまい答えではないなと感じるのでまじめに考えてみた。

まず大前提として1行を修正するのに本当に言われるがままにその1行を直すのであればそれは作業者で世の中にエンジニアなんて職業はいらないわけで、ぼくらの付加価値は1行を直すときに1行の外にあるものを想起できるから価値があるわけです。

じゃあ、どんなことを考えているかというと、まずたいていそんなすぐに安請け合いできないシステムというのは1行を直すときに影響を受ける行数というのは10行や20行ではないことが多い。そこで影響範囲を考えます。途端にこれが1万行になったりする。すると、1万行へ影響が出るのにこれはそのままその1行の修正をしてはいけないのではないかと開放閉鎖原則や局所化なんて言葉がまっとうに学習している開発者なら頭をよぎるわけです。

すると、ここで1行の修正だったものがもう1万行を対象にした再設計の開発と化けます。1万行はなにをやっているのかを洗い出し、さてこれは本来どういう役割のものがこの1万行のごった煮に混ざっているのかを考え直し、あれ、これはともすると既存の業務に影響出るんじゃねーのと気付いて今その仕事をやっている人に話を聞きに行き、これはそもそもなにがやりたい仕事なんですか?と業務分析から始めることになります。オペレーションを変えることになると、そのための説明や調整をして回ったり、オペレーションの変更コストを業務担当の人が払ってくれない場合は、その影響先への説明や調整も自分でして回ります (会社のために必要なら調整するよって引き取ってくれる土壌があるとここが開発者の負担から離れて、結果改善速度が早くなります)。

最後はそうやって理解できた全体像から、今採るべき手段はなにが総合的に考えて最適なのかをその都度意思決定するのですが、その意思決定にあたって必要なこととしてこれだけ考えています。

作業者として1行言われるがままに直すこともできるかできないかで言えば当然できます。ただ、その結果、そうやって思考停止で目の前の要望を持っている人の希望を叶え続けると、最後に誰のためにもならないシステムができあがり、誰の手にも負えなくなります。そのことを知っていて、真剣に開発者という仕事に向かいあっている人ほど先ほどのようなロジックで今自分が採るべき手段はなにかをよく考えます。

作業を請負うのでなく事業会社の社員として開発者として働くというのは、要望を持ってくる人へ応えるのが仕事ではなく、それをきっかけに会社にとって一番よい形を技術という自分の強みを活かして考えるのが仕事です。アウトソースで開発をするのでなく、自社に開発者がいて働いているというのはそういうことだと思ってます。『たまたま要望を言ってくる人がコンピューターとか苦手だから代わりにやりたいことをやってあげる仕事』ではけしてないのです。あくまで会社だったり事業だったり、その先のお客さんのために必要なことをするために働いてます。そこへの尊重が基礎にあり説明コストが低く、開発者が本来一番やるべき仕事 (コードを書いて事業を前に進める) へ集中できるというのが『開発文化がある』という状態だろうなというのを最近考えます。

こんな面倒なやつとして振る舞わなくても「おっけ、おっけ、すぐやっとくよー」と言ってばんばん直してばんばんリリースできるシステム開発をやっていける環境で働きたいものですね!

私からは以上です。

  1. rightstaff reblogged this from sunaot
  2. sunaot posted this