VBerをごっそりボロクソ言うエントリです。
なぜか?今までVBを触る人にろくな人がいなかったからです(一部は除く)
基本的には↓のブログで書かれている通りで、VBにはプロフェッショナルとか成長とかそういう意識は全くありません。
実際のところその通りで、前職では.net4.5が既に登場するも、プロダクトのマイグレーションなどというのはされておらず、なんとVB6のコンバート案件と.net2.0がメインという状態でした。実際には.net4.5を触る人はいましたが、ほんの一部で若手には一切そういった新技術を触らせることはありません。
挙句の果てにpythonやphpのコードを見せると「全くわからない」と反射的に返されたりする上、コピペで低品質なコードが大量発生してました。
学生時代にはphp中心でC#は多少触っていた程度なのでかろうじて助かりましたが、この経験すらないと思うと今こうやって記事はかけなかったと思います。
さて、焼き直しになりそうですが、VBエンジニアになってはいけない理由をいくつか描き下ろします。
単純に技術力がない
一部では技術力のある(Monoとかそれ系)人もいますが、あらかたそういう職場ではXamarinだのVBにこだわらず包括的に技術開拓を推進している人がいます。しかしそういうケースばかりではないですし、そういった職場ではそもそもVBってよりはXamarinなど周辺技術のプッシュの方が多いので、割りとVB限定ケースではないという感じです。
言語で真っ先にVBが出てくるか、ソフトウェアの会社で求人に言語を出していないのに開発ではVBを使っている、みたいなケースでは根本的にアウトでしょう。そういった会社は死んでも避けた方が良いですし、成長なんて見込めません。
入社後にどういうのが待っているかは火を見るより明らかで、例えば上長が技術力がないとか、会社全体で技術力を育てる枠組みがないとか、評価指標が主観的すぎて「残業こそ評価!」みたいな社風みたいな会社になってきます。
そもそもVBは初心者向けすぎる上、コードサンプルの応用性やら色々なところでも不利を被ることが多い(サンプルがC#なだけ)ので、そうなればC#の方が楽でしょう。
gitを導入してもまともに扱ってくれませんでした。教育係に全て教えてもらっても、競合一つすら解決させてくれない。それに加えてpythonやphpはコードの書き方どころか用語一つ分からない分には良いんですが、無くてもいいよねっていうエンジニアにあってはならないことばっかり言ってました。
めっちゃ書きづらい
私のVB嫌いの理由第二位でもあります。例えばインクリメントできない、キーワードの省略ができない、などの言語仕様から、会社によってはコメントアウトをそのまま残す、VCS(そもそもこんな言葉すら知らないこともある)がVisual Source Shredder(VSSってやつです)だったり、コード規約に「●●は禁止!」みたいなことが書いてあったりと開発者ファーストではない環境が揃っています。
VB(実際に職場で書いたときとほぼ同じ書き方のコードです)
' 2022/04/05 Sample1.vb ' int_nに10回足し込んでコンソールに出力するプログラム ' 変数定義 Dim int_n As Integer int_n = 0 ' 初期設定 ' 10回ループする For c = 0 To 10 Step 1 Console.WriteLine(int_n) ' 出力 int_n = int_n + 1 Next ' ' 2022/04/05 del yamada-taro: ' 15→10回に変更しました ' 'For c = 0 To 15 Step 1 ' Console.WriteLine(int_n) ' 出力 ' int_n = int_n + 1 'Next ' 後処理はここに記載する
※Stepは省略することがあります、コメントは増えることが多いです
また、int_nと記載してますが、実際はもっとめんどくさい
(例えば整数の場合はnIntが使えないのでnNumberみたいなやつ、小数点つきならcNumberみたいな感じ)
C#で書くとこうなります
// nNumberに10回たしこんで表示するプログラム int nNumber = 0; for( c=0; c<=10; c++){ Console.WriteLine(nNumber); nNumber++; }
職場は異なりますが、php(cakePHPですが)では
// int_nを10回インクリメントしてLogに出力する int_n = 10; for( c = 0; c <= 10; c++ ){ $this->Log(int_n, LOG_INFO); int_n++; }
です。ログライタはFWによって異なるので何ともですが。
基本的にVB6からの開発者が多い職場では必然とバージョン管理 = ハードコピー = コメントアウトというメチャクチャ面倒くさいことになっています。
コメント?git使ってるから別に残す意味なくない?
ネット上で発言されているVBエンジニアの多くに詭弁が多い
これが最たる例ですが
可読性なんかは
Dim hoge As String = 'piyo' String hoge = 'piyo'; hoge = 'piyo';
どちらも大して変わりません。
VBなら「(変数の)hogeはString型でpiyoを初期値に持つ」 C#でも「String型のhogeはpiyoを初期値に持つ」 phpでは「hogeはpiyoという文字列を持つ」
なので、言語の仕様上からあくまでC#が先に型を明示しているという点でしか違いません。
また、phpでは型が自動的に決まるため、文字列の1は数値の1として扱うこともできます。
そもそもVBは変数に必ず”Dim”をつけなければならなず、その点で余分じゃないかと感じるぐらいです。それに型が長い場合も結局varを使うなりで回避できるので、VBが特段優れていることもありません。
こういった感じにQiitaやQ&A系のサイトでは「VBはそれほどひどくはない」と言われていますが、やればやるほどVBは面倒くさい言語だ、人間もめんどくさいんだという気持ちになっていきます。
私の先輩もそうでしたし、上司も会社も含めてそうでしたが、新しい技術が登場するという情報すら知ろうとしません。大変なことが仕事、楽にはならないという固定観念で仕事をするのが美徳とすら言われます。
VBエンジニア ≒ 害
VBしかやったことがない人は決まってVBの素晴らしさを説きますが、他の言語で容易に論破できちゃいます。というかVBの利点といえば簡単なだけで、別にどの言語にしたって日本語力さえありゃ充分VBを軽く超えられるほどのメリットがあります。
正直、VBには滅んでもらいたいです。関わった人間を幸せにしない。
転職活動をする時は必ずVBではなくphpの経験があるpythonエンジニアと自称します。なんでか?VBエンジニアということはそれだけで悪なのです。それ以外の経験がない人はもう採用してはいけません。VBの悪習を当たり前と呼び、他の言語をこき下ろす以外の能力はありません。
まあ、VBエンジニアは技術どころかその人間性も疑うような人間ばっかりだったので、もう一緒に仕事もしませんしVBエンジニアを名乗ることもないでしょう。
ちなみに上司は社長に媚を売ってアウディ買ったらしいです。平社員の誰も車を持っていないのに。