一年弱salesforceのApex開発をしてみて思ったことを書き綴ってみようと思います。
実測をしたことはないし、測ることもできないと思いますがsalesforceのApexの開発をしている人は何らかの開発経験を持っている人が担当していることは少ない気がする。
実際、ある大手のsalesforce開発会社からのセミナーの案内を見ていると
- (エンジニアとは無関係の業種)からsalesforceエンジニアになれました!
というような文言が成功事例として紹介されている。果たしてそのセミナーだけでエンジニアを名乗るだけの知識を得て、そして実践に移すことが可能なのだろうか?ととても疑問である。
PCやエクセル数式に詳しい人たちが基本的なプログラミング言語の使い方を学び、Apexでプログラムを組んで「便利になった!」という成功経験を積むというのはとても喜ばしいことである。
だが、そこには開発者という目線が足りていないので
- 組んだプログラムに問題が起こる可能性はあるのか?
- この書き方でも動くが、もっと効率の良い書き方があるのではないか?
ということを「気づくことも、考えることも」できないのである。
ここで言っているできないという事実は知識がないが故の事象である。ここを見極める目を養うことで解決はできる。
だが、ここで注目するのが「開発者ではない、なりたいと思ってない人がここまできたという事実」である。
別にエンジニアになりたいわけではないのでそのようにコードに漂う不穏な空気を察知する感覚を養う気もないし、何なら今できる内容で無理くり実装を続けていく。
もちろん、テストケースはデプロイ基準のコードカバレッジ75%を満たすためだけに書かれているので無意味なコードが書き殴られて終わりである。
そんなコードを不具合を起こさずに保守したり機能追加できるだろうか?もちろんできない。
砂上の楼閣を作り上げたことに気づきもせず、何なら「自分はApexの開発ができる」と思い込んでしまう。
そして、負債となったコードはバグを大量生産し、「Apexで開発するべきでない」という論調になり、それを保守されるエンジニアにとってはApexは上記のひどいコードのお守りをさせられることになり「Apexには近づかない方がよさそうだ」となるのだと思います。
開発会社に入ってもらう??指示を出す人がエンジニアでない場合、上がってきたコードが良いものかどうか判断ができないのに??
事実、開発会社に作ってもらったものもひどいものであった。確かに動く。動きはするが、可読性は最悪、保守性も最悪なものだった。
salesforceはノーコード、ローコードで開発はできる。
プログラムを書いた人でなくても作ることはできる。
作ることはできるけど、それがどのように負債になっていくのか。考えたことはありますか?
私はこの負債に対して立ち向かい、おかしな設計を直しながらテストコードを書き充実させていっている。
最初からテストコードがしっかりしていれば、リファクタも機能追加も随分楽だっただろうと思う。
Apexのデプロイのためにコードカバレッジが75%必要だからとりあえずコードを通過して何も検証していないテストクラスを書いている人は、いますぐそれをやめてください。
そんなテストクラスしか書けないのなら、あなたは負債を作り出しているだけなのでApexの開発から立ち去ってください。