書いたコードを、クソコードにさせられるということがあった。

賢明な諸兄らの中には
「お前のコードが糞だったんだよ。見なくても分かる。」
と言いたい人もいるだろう。

うん。黙ってろ。帰れ。そういう諸兄は帰れ。

◆何があったのか

まず、ガード節まわりの話なんだけど
前提として、そもそも上司の方の技術力が、まぁとぼしめだった。
技術力というかコーディング能力というか。

個人のブログだから弁明する意味なんてないけど、一応言っておく。
その上司は当然ながら悪人では無いし、頭悪い人では無いし、俺のミスをちゃんと見てくれているし、俺はその人を見下してないし俺に悪意は無い。ヒリヒリしたけど怒ってもいない。本当にな。
多田野客観的な一側面として、コーディングの知見は俺が優っていると言える。はず。それだけ。

つまり、if-elseまみれで、かつ超長いメソッドなんかを書いていた。
だからガード節に沢山の効能があるとわからずに、「俺の好みで書かれたコードだ」という判断がなされたわけよ。
初見で分かりづらいからね。仕方ないね♂
簡潔に説明はしたんだけど、ちょっとね。まだ完全には理解できていないようだった。
その点はいいよ。怒ってもしょうがないし。
これからの成長に期待ですよ。

その時の状況がわからないとお前らもなんとも言えないだろうが、お前らが普段ガードを使うときぐらいの状況だったとは思う。短く、硬く、妥当な形だった。

それがまず1点。

次。
システム構築対象となるSalesforceというプラットフォームでは、データアクセスのための便利な構文がコードレベルで組み込まれていて、いわゆる「SQL組み立て地獄」が回避できる仕組みになっていた。

ちなみにSalesforce自体はまぁまぁゴミだよ。なんというか、詰めが甘い。
Salesforceを知っていることが何故か微妙に恥ずかしい。
でも思想は素晴らしくて、簡単なことするにはかなり便利。

話を戻す。
そのクッソ便利な組み込まれデータアクセス構文(SOQL)があるのに、なぜかDaoクラスを作っていた。
うん。
で、「データアクセス処理はDaoにまとめてね」って言われた。
意味あるのそれ。もうカプセル化されてんじゃん。項目名変更もどうせ使用箇所直さなきゃだし、そもそも・・・と6個くらい指摘を書こうと思ったがいいや。

次。
「for文の中でfor文かかないでね」って言われた。
わかる。

でもね、それは場合によるんじゃない?
今回のケースは何の問題も無いよ。せいぜい「1*100が1日に100」とかじゃない?10000*10000程度すらないでしょう。来たとしても、今回はいうほどの負荷にならないよ?
いや来ないよ?

「赤信号は渡っちゃいけないよ」っていうのは分かるよ。
でもな、それは「赤信号だから」渡っちゃいけないわけでは無い。
「赤信号だと危ないから」渡っちゃいけないんだよ。
ホコサキさんも言ってただろ。

◆そして

結局、言い合うのが面倒だったから、うまくちょっとやんわり反抗してからクソコードにした。
まったく気が乗らなかったけどな。

「アレでやんわりなの!?」って言いたい人もいるかもしれんが、アレはかなりのやんわりだわ。
俺が100%なら魔羅でほっぺたペチペチはたきながら祖父の代まで罵倒した後に輪ゴムで絞殺して地中海に向けて自家用ヘリでもって地上6000mから遺棄してインスタに投稿してる。

きれいなコードをクソコードに変えていくのは難しい。
例えば窓の掃除を頼まれたとして「綺麗にして」と言われるのはわかる。
でも「窓を綺麗にしたいから汚して」と言われると途端に難しい。
ある相手は無色透明な窓を綺麗だと思わない。が、事実として無色透明な窓はきれいだ。
しかし、相手はうっすら黄ばんだ窓に慣れて、馴染んでいるため、黄ばみが正しいのだと思っている。
こちらは無色透明な窓が完全であることを知っている。
いざ汚そうとして、汚しすぎると窓としての機能を失ってしまう。
忖度し、相手が納得する程度に汚さないといけない。

そして、「無色透明な窓の方がいいっすよ!」とあんまりしつこく噛みついてはいけない。
社会に出ると「特定の性質を持つ上司と言い合うのは面倒」ということを学ぶことができる。アルバイト先とかでもいたでしょう。無論言い合える上司も沢山いるんだけどね。
しかし、何割かの人間は、人の上に立つと「言い負かされない事」「ナメられないようにする事」を無意識的に考えてしまうことがある。
また、技術の話になると、その傾向も強まる。
でも悪気はないんだから、それを憎んではいけない。自分の技術を疑いなおすチャンスだと捉えたほうがいい。

しかし俺は、実はそんなに怒ってもいない。「そうか。うん、まぁいいよ。次頑張れよな?」ぐらいの心情。
「知らない」ということに対して怒るべきではない。俺だって知らない事いっぱいあるもの。

ただ
「そのコード俺が書いたんじゃないやい」
と言いたい。

だって俺もっと綺麗でコンパクトで簡潔で疎結合で役割がハッキリしてて仕様が読み取れて仕変に強くて単体テスト可能なコード書けるもん。
それが悲しい。
保守する人に申し訳ないと思う。

プログラマーを目指している人に、こっそり教えてあげたいことがある。
それは「社会は思ったより技術力低いよ」ということだ。お前の技術力が低いからって心配することは無い。

会社でバリバリの人だって理解に苦しむコード書いてる。先輩から原始人が書いたみてーなJavaScriptのコードの引継ぎさせられて本当にビックリした。驚愕した。「誰が書いたんですか?」って聞いてしまったもの。
また、それなりの評価の人でも「なんで?確実にオカシイ」っていう設計を持ってくる。
そして、それについてパシッと分かりやすく簡潔に話すと、それはギスる。だから俺は、やんわりと方向を修正する。たしなめる。
もちろんパシッと話せる相手もいるけどね。だいたい3割くらいか。それは職場環境によるだろう。

俺の下で作業する人で、なんか俺を理解しているっぽい人は、俺に対してはパシパシと話した。
それに対して俺は「なるほど。じゃあこれはこうなって、これを考えて、お前はこういう作業をしなければならないんだね。」と話す。
俺が間違っていた時は「うんうん。そうだな。すまんな。じゃあこれはこうなるから、こういう風にしてくれ。」と話す。
短時間で色々きまる。ギスらない。

でもそんなのはあまり通用しない。

それで、みんながみんな、互いに苦しめ合っている。
その中に入って苦しむんだ。
その点、俺は「しゃあない」と思い始めてからは全然苦しくない。
この社会に対する評価が下がってきているから。

間違っている仕組みが、とても多いと思う。主にIT周りだけど、それ以外にも多いよね。B-CASカードとか生活保護とかAVのモザイクとかJASRACとかクレジットカードとか年金の管理とかマイナンバーの用途とか過労死とか62円の郵便はがきとか知識技術のない医者とか電波利権とか一万円が入らない券売機とか反応しねー自動ドアとかこちら側のどこからでも切れます(大嘘)とかとかとか
俺には、それら「問題」の正解はわからないけど、今の状態は明らかにおかしいというのは共通認識だろう。

この社会では大人が会議をして色々なことを決めていると思うんだけど、やっぱりキレた奴とかエロい人はそこには居てくれないんだなってことが容易に判る。
偉い人がいて、その人が重要なことを決定してしまうんだ。

つまり、しょうもない大人が多いのだ。だから「しゃあない」するしかない。
こんな事言っている俺だって、ある側面では多分しょうもない事をして「しゃあない」と思われたりしているんだ。

俺は概ね幸せに生きているからいいけど、そういうガッカリ製造機があってくれると困る。
なぜなら、社会が不幸になると俺もそれに引っ張られてしまうから。
だから俺も、ひかえめサイズの脳みそを使いながら「どうすれば皆が幸せになれるのだろうか」って割と真面目に考えながら生きてるんだろ?

自分は学んでいる途中なんだってことを、大人は忘れがちだ。
「頭よくなりたい」「人に優しくなりたい」「正しくありたい」という思いを、どこかのタイミングで無くしてしまうことがあるのだろうか?
あるいは、最初から持っていなかった?

例えば「習うは一生」というコトワザは有名であるが、それを知っていたとして、果たしてどの深度で理解しているのか。
「習うは一生」に似たことを言う人は沢山いるが、「お前はわかってないだろ」と言いたくなる大人も多くいる。

「分かったつもり」「自分はできるつもり」が蔓延している。

コトワザなんて、それに意味があってコトワザになっているのだから、言葉の響きだけで使ってはいけない。

◆結論

話が逸れたけど

だから、まぁ、勉強しなね。
「きれいなコードを書くためには」っていうことを知ろう。
そして、誰かにとっての技術力のある上司になってくれ。
更に言うと、まぁお前ごときには無理なお願いかもしれんが、クレバーな上司にもなって欲しい。
俺には今、その人はいない。特定派遣で社外に出てた時はいたけどね。

お前がクレバーな上司になれないと、分かりやすいところでは、まず怒り方が下手になる。
「そんな怒り方をしても誰も得しないのに」「何も解決しないのに」「なんでわざわざ相手に不快な思いをさせたがるの?」「怒るタイミングと違うよ」「お前がマネジメントできてないだけだよ」と思われる。
聞いているだけで心が疲れる。

だめだよ?フォローするのは俺とかなんだからね?

まぁいいや。みんな頑張れよ。

リファクタリングと、その手法の話