ぽぬメモ!

ただのゲーム好きオヤジ

フリーランスのエンジニアに求められるのは悪役なのかもしれない。

新しい会社では、会社の弱いところを、率直に話してもらえたので、

「改善できるように具体的な改善策」や自身のストロングポイントについてはなしをしたら即座にオファーの話がまとまった。

本題ではないものの、月単価も¥100kアップした。

代表は東工大出身の方だったためか、東大文系の方より数千倍話がしやすかった。

どこかで聞いた話に似ているが、「1から10まで説明しないと動けないエンジニアが多い」と嘆いていた。

なんだか同じような考えを持っていて、過去の自分と同じ苦労をしているようだった。

新しいことのキャッチアップをしているエンジニアと仕事がしたい

Googleでさえ、誰でも同じコードを書けるようにガイドラインを順次アップデートしている。

このブログ読者で多勢を占めるC++なら下で公開されている。

google.github.io

白熱した nullptr と NULL について、Googleの見解は以下

  • 整数には0を使う
  • 実数には0.0を使う
  • ヌル文字には'\0'を使う
  • ポインタ(アドレス値)には、nullptrを使用する(型安全=タイプセーフ)

つづけて、こう書かれている。

C++03のプロジェクトでは、0よりも NULLがよい。 これらの値は同じだが、NULLは、読者にとって、よりポインタらしく見えることと、C++コンパイラによっては、NULLに特別な定義を与えており、有用な警告を発してくれる場合がある。

正しい型を使うことで、コードの可読性が向上する。

というわけで、nullptr を使用しているのなら、このコードを書いた人は、理解して使っているはずなので、nullptr を使おう。

「はぁポインタが0を指し示していて、voidってなんだよFxxx」というのは、愛だとおもう。

同じく、JavaScriptのvarのような曖昧な型定義は、

実務では、TypeScriptを使っていないとヤバい人になるし、ラズパイのPHPだって同じだ。

PHPなら、$a = '5'; で、$aは文字「5」になるが、$a *= 2; とした瞬間、 $aは整数「10」になる。

さらには、if('aaa'==aaa){} は真になる。

だから、int $a = '5'; とか、String $a = '5'; と明示することをルール化したり、

型安全(=タイプセーフ)になっているかという観点で、

型を含めた厳密なチェック if('aaa'===aaa){} で、正しく偽になるようにコード規約を定めコードレビューする。

こんなアタリマエのことを言うのは年寄りの仕事だとしても残念だけど、代表が教えるのはさすがにおかしい。

あとは、テストできないコードを書く猛者もいるので、TDD(テスト駆動開発)を導入したりする。

ある戸塚の職場で、ビルドエラーになるコースコードをぶっこまれて、

ただでさえ6〜8時間かかるビルドを修正して、徹夜とかになると、メンタル崩壊するので、CI/CDは徹底する。

単体テストを走らせ、問題あるコードをマージさせないようにしている。

たかだが、単体テストだし、CI/CDが通っても、満足なものになるかはわからない。ただしビルドが通らないっていうのは、

やることやってないし、そういう思想のエンジニア向きではない人に限って、自分のコードを疑わない。

更には、このプロジェクトには CI/CD は適さないとか、テストコードが間違っていたらどうするんですがとか、言い出しかねない。

たから、正しく失敗するテストを用意するのであって、なんでも通るテストを書く人、

読みにくいコードを正当化されたり、ビルドの数時間が何度も無駄になったら、間接的な立場に変わってもらったりしている。

組み込みだろうが、スマートフォンアプリだろうが、ロジックが出来上がって、テストコードがないなんてものは、ありえない。

と、こんなことを言うと、フワッ(オノマトペ)とした、プロジェクトでは、茶番反対意見がでるのでフリーランスのエンジニアは、

正社員の方からよく思われないことがあったりする。

だけど、だけど、代表からフリーランスに期待されるのは、残念プロジェクトの改善なので、そこだけはメンタル崩壊しないように心がけるようにしてる。

辛くなって、クスリで持ち直したら、この動画を見るようにしている。


www.youtube.com

これはリアルな話で、情報通やジャーナリストでは無いけれど、あまり考えると、激ヤセしそうだし、このあたりでやめておく。