はてなキーワード: javaとは
我が家は明治期に興隆した商家で、現在も大枠を考えればモノやコトを売ることで生計をなしている。
いわゆる華族であったが、興隆の経過で江戸期以前の地主や武家などと婚姻を経て結びついており、家系図を遡れば皇室とも血筋上の繋がりがあると解釈ができる。
さて、そんな家に生まれた筆者だが正直に言えば高校生くらいまで我が家がそんな家だとは気付いておらず、多少なりとも大きな家に住めている理由として両親や祖父母も「ご先祖様が努力の人だったから」と言っていたので、現在の我が家はそこまでお金持ちではなくご先祖様が増やした資産の恩恵を受けているのだ程度にしか思っていなかった。ご先祖様すげぇなと。
実際、筆者自身の子供の頃の夢はプロアーチャーであったので全く家業を意識していなかった。
我が家はなんか他の家と違うぞ?と気付き始めたのは高校生になった時期で、父や祖父に連れられて社会科見学のような小旅行を頻繁にやるようになってからだった。
自動車工場や造船所、食品工場、アパレル工場、精密機器工場、製紙工場など工業系を中心になぜか見学に連れられ、その工場の担当者らしき壮年の男性から説明を聞くということを頻繁にさせられた。
今思い出せば、父や祖父はそのくらいの時期から「AはBから生産されていて流通として……」のような話をよくしてくれるようになっていた。
社会科見学のような小旅行は面白かったが、なぜ急にそんなことをやるようになったのかという疑問は晴れなかった。まさかそれが後継者教育の一環だったとは。
自分自身の興味と祖父の勧めもあり、大学ではアーチェリーを続けつつもロジスティクスを中心に学ばせてもらい、継続されていた社会科見学が非常に研究へ役立つようになっていた。
そして我が家の歴史を完全に知ったのは大学3年生の正月に「就職はどうするのか?」と言われた際に「参考になるかはわからないが我が家の家業を説明しようか」のように教えられてからだった。
遡れば初代が江戸期に商家として暖簾分けを受け、現在まで続く家業の基盤を明治期に作ることができたとのこと。そこから登場する人名は歴史の授業で習うような人々であり、まるで実感のなかった筆者は驚愕するしかなかった。
そんな家の子息である筆者が普段何をしているのか?と言えば、某物流企業から某商社を経て、現在は父から「そろそろ戻ってこい」と言われ、法人化している我が家の持ち企業へ務めさせていただいている。
筆者の専攻がロジスティクスなので新社会人の頃から数理的に物流を計算するのが主な仕事で、笑ってしまうかも知れないが何処へ行くにもCASIOの関数電卓をポケットへ入れている。現在の関数電卓はソーラーパネル電池で駆動するのでスマホなんかよりもよっぽど信頼度が高い。
弊社が集めたデータや取引先からロジスティクスに関するデータを貰い、それを数理的に損益分岐点とのその確率をはじき出すというものだが、概算ではなく精密に計算する際はコンピューターに詳しい増田の皆様にも馴染み深いであろうAWSやさくらを利用している。
ちなみに筆者のスマホはAndroid。iPhoneにはまともなターミナルがないので、ふと出先で大きな計算リソースが必要になったときAWSへSSHしにくい。まぁノートPC使えよって話だが。
もちろん計算するだけでなく、創作物でイメージされやすいであろう会食などで人脈交流をしたりもするが、実際のところ筆者の世代ともなるとLINEやZoom、Slackなどで友人たちと交流している頻度のほうが多い。
正直LINEやZoomは昨今の流れもあり使いたくないのだが友人たちは経営学部卒などの文系が多いので、どうもセキュアなコミュニケーションツール活用が上手く行かない。
可能ならば弊社で利用しているオフィススイートもMicrosoft office 365やGoogle Workspaceへ移行したいのだが、一部の従業員の皆様の反発から上手く行ってない。後継者といっても実務へ強権を奮えるほど実力はないのだ。筆者の管轄の研究グループは即座にSlackを導入できたり出来たのに。う〜む……。
流れのまま愚痴を言えば、例えば総務などはミドル〜ハイエンド性能なChromebookで十分じゃないか?社内ツールもいつまでJavaベースのを使っているのか。HTML5ベースに移行してしまえば互換性の問題でWindows使い続ける理由もないんだが。いまだ動いてる骨董品メインフレームをそろそろ引退させてあげようよ。
父は「実務に口を出すべきでない」と言うが、多少筆者の趣味も入ってはいるものの環境を整えるのも我々の役目ではないだろうか。
強権を奮って一気にモダンなコンピューティング環境にしたい。営業にも今のガラケーから最新のGoogle Pixel 5あたりのスマホを配ってあげるのに。
というようなことを青臭く思っているのだが、実際の後継者なんてこんなもんである。実権を握れるまでおとなしくしているしか無い。
従業員の皆様には申し訳ないが、おそらく筆者にはご先祖様ほどの商才は無いんだろう。苦労させてごめんね。
だいたいどんな技術もレガシーと化して、新しい人がほとんど入ってこなくなるけども現場ではそこそこ使われているという状態になるのでそこまで勉強する必要はなくなる。
例えばC/C++, Java, Linux, Windowsあたりの技術って昔はみんな一生懸命勉強してたけど、今の20代の人は一通り使えるだけでいいやと思っててあまり深く学ばないのでオールドエンジニアが老害と言われながらでしゃばるチャンスは多い。
納得できないのではない、納得してやらんのだ。
北海道の人口100人にも満たない集落にある漁師の家に生まれ、将来は家を継いで世間知らずであり現金収入は少ないが食うのに困らない一生を過ごす。
そんな選択が俺にはあった。
だけれど、そんな人生に納得できなかった俺は中学卒業と共に実家を飛び出した。
小学校は同級生3人、自転車で2時間先にある中学校は何とか1学年2クラスを作れるという少子高齢が進む地域。
中学では腕っぷしの強くヤンチャな生徒、つまりは不良が幅を効かせているような文化圏、はてブで都会住みの連中がイメージするステレオタイプなド田舎と言って良い。
その当時の大人の世界では義務教育でパソコンを習わせたほうが良いという機運が高まり、各校へパソコンが配備されるようになってきた時代。
しかしながらド田舎の公立高校でそのような先進的な機械が活用されることはなく、暇を持て余したガキだった俺のオモチャへとなるのがせいぜいだった。
田舎には田舎のルールがある。
それは例えば「中学では後輩は先輩に喧嘩で勝ってはいけない」というのもルールの1つだが、クソ真面目にも早朝から起きて実家の漁を手伝い、授業が終われば部活動の野球へ日々精を出していた俺の身体能力は、年上であっても体育の授業をサボるような不良連中より劣っているわけもなかった。
ド田舎の古い価値観を持った父親のありがたい教育方針であった「男がナメられるんじゃねぇ」のもと、先輩たちが売ってきた喧嘩を買いまくり、不良の先輩たちを不登校へ追いやってしまった結果、晴れて俺は学校中からハブられ中学野球の試合にも出られなくなってしまった(野球部には所属してて毎日練習はしていた。先輩たちは卒業まで学校に来なかったが)。
ハブられてしまったため日々暇な時間を過ごすようになった俺が出会ったのが図書室の本と、前述したパソコンだった。
最初はプリインストールされていたソフトで遊んでいるだけだったが、教員も書類はワープロ専用機で作る時代だったのでパソコンの知識がなく管理がザルで、俺はそのパソコンがパソコン通信とインターネットへ接続できることに気が付いてしまった。
Yahooからリンクサイトを経由し、電子掲示板という存在を知った俺は日々電子掲示板サイトへアクセスし、誰とは知らない人たちと会話をして時間を潰した。
話題には事欠かなかったし、専門性の高い話題が出ると「ちょっと待ってね。ここ図書室なんだ」と言ってソレ関連の本を引っ張り出して、パソコンの先に居るお兄さんなのかお姉さんなのか知らないが、興味深い話を日々聴くことが出来た。
「増田クン、これからはPerlの時代だよ」
「いやボク最近やっと思い通りBASIC書けるようになってCの勉強中なんですけど」
「もちろんCは大事だよマイコンに使えるし。でもさサービスを提供するならPerlが向く。DoCoMoのiモードだって裏ではPerlだよ」
「ボクの住んでるとこピッチ圏外ばっかり、田舎だもん」
「iモードはピッチじゃないよ周波帯が違う」
特にコンピュータ関連の話は面白かった。
ゲームは自作できると教えて貰い、プログラミングを始めるようになり、BASICやC、Perl、PHP、Javaをよく触るようになった。
図書室が我が王国のようになり、問題児が図書室に籠もっていてくれているし、図書室通いの結果からか試験の成績も悪くないどころかトップクラスであり教員たちもずっと放置してくれた。
そんな生活の中で知れたのは学区に依存しない高校の存在だった。
寮もしくはアパートなどで一人暮らしをしつつ通える高校が世の中には存在することを知ったのだ。
これだと直感的に思った俺は親父へ直談判することにした。
俺の故郷に未来はないと薄々勘付いていて、正直なところ青二才だったため「じゃあ俺がいい大学入って故郷へ錦を飾れば良いじゃん」と出稼ぎ感覚でいた。
親父は俺の話を無言で最後まで聞いていた。
今思えば何をアホなこと話してるんだと思ったが、一応は国立高校だったため学費はそこまで高くなく、何だかんだで小さな頃から家業を手伝っていた俺がバイトしながら高校へ通うことに関しては古い価値観の「苦労は買ってでもしろ」的な面から了承されたのかなと思う。
おそらく一番困らせたのは高校入学祝いに当時の最新パソコンと引越し先でインターネット回線を引く費用を求めたことくらいだったのではないかと思う。
右も左もわからない状況から一人暮らしを始め、訛りのひどさにクラスでイジられ、バイト先に勤めている大学生の兄ちゃんたちに世話してもらいながらも毎日新しい体験をして過ごした。
世の中は広く世間の移り変わりは早い。着メロは和音が鳴るしディスプレイはカラー。携帯電話の電波は田舎にまで届く。
甲子園を目指したが強豪校はやっぱり強く負けてしまい、人生で初めて望んだ結果が得られないことを経験した。
しかしそれでも俺は何となくコレは真理なんじゃないかと思い始めていた。
そして国立大学へ合格したことを期にコレは真理だと確信したんだ。
今の俺は別に故郷へ錦を飾れたわけでない。
しかし俺は不良が風を肩で切るようなド田舎出身で脳筋な漁師の子だ。根本は変わってないと思っている。
それが今やG社に勤めているって言うんだから人一倍の努力は裏切らねぇなと。
自分が持ってないものが欲しいならば努力するしか方法がない。
学歴が欲しいならば年収が欲しいならば地位が欲しいならば努力するしかないんだよ。
誰もお前のために人生なんかかけてくれない。
お前の人生にかけてくれるのはお前自身しか居ないんだよ。
高卒で三十路手前だが今まで派遣社員として裏方で電話対応のない事務員として働いていた。
タッチタイピングとExcel(VBA含む)は比較的得意だったので、いい加減手に職つけたいと思っていた所、幸運な事にIT企業に拾ってもらった。
入社してから1ヶ月研修があり、javaを使い簡単なアプリケーションを作るという内容なのだが、最終日に役員に向けて発表があるらしい。これが憂鬱すぎて研修内容が頭に入らなくなってしまった。
というのも、俺は新卒で公務員をしていた。昔から人前で話すのが苦手だったが、数をこなせばこなす程慣れるどころか自意識が強まり喋れなくなってしまい、精神を壊してしまった。最終的には精神科のお世話になって仕事を辞めた。数年のスパンを置いて2度ほどwais-3を受けたが、不安事があると俺は動作性知能言語性知能共にIQが20程下がるるしい。
周りの人間も「人前で話すの嫌だなぁ」とは言っていたけど、俺は嫌すぎて目がチカチカするし光がすごい白く感じるしずっと動悸がするし雑談する余裕も無くなるし色んな音が耳元で聞こえてくるし食欲もなるし朝動けなくなる。
プログラミング自体はまあまあ楽しかったし一生コーダーで良いのだが、俺みたいなタイプの人間ってどういう生存戦略を立てて生きているんだろう。
「エンジニアって給料高いしホワイトらしいじゃん。大学卒業したらエンジニアになりたいからプログラミングの勉強しよう」と考えてるタイプの、大学1~2年生に向けた話を書こうと思う。
実のところ、お前らはギリギリなんとかなる可能性があるんだが、詐欺みたいな情報商材やスクールに騙されてやすい層でもある。
頼むから騙されないでくれ。見ていて心が痛む。
これ以外の層、例えば転職しようとしてる奴らには少なくとも増田からまともなアドバイスはできないが、参考になるところはあるかもしれない。
あと、情報系の奴は素直にそのままCSを学べ。学部の勉強を頑張ってくれ。
大学時代で長期インターンかアルバイトで経験を積み、現場のノウハウを身に着けてから新卒でWeb系ベンチャー(給与は並程度だが、ホワイトで今後のキャリアにも繋がる)に就職
これが唯一の正解というわけじゃないが、現実的な路線の1つとして推しておく。要は完全未経験の人がまともなエンジニア職に就くのは難しいため、未経験状態を脱してから就活に臨もうというプランだ。
今回はこれを達成するための話をする。
まず基本的にお前らははカモ扱いされている。前提知識があれば詐欺みたいなスクールに引っかからなくて済むので最低限でいいので把握しろ。
エンジニアは給料が他の仕事より高い部類だと思う。だが、それでも平均で500~600万円台だ。普通に1000万円もらえると思ってた奴はまずこの現実を受け止めろ。
平均でこれなんだから、未経験者が1000万円で雇用されることなどまずありえない。
何の仕事でもいいから雇う立場を考えてみろ。未経験者に1000万円出すか?冷静になって考えれば分かると思うけどな。
もちろん、働きやすさや将来性などを鑑みるとエンジニア職を目指す意味はあると思うが、夢を見すぎないことは大事だ。
「年収1000万とはいかなくても、フリーランスなら高収入かつ自分のペースで働けてウハウハなんでしょ?」とかいう奴も時々見かける。
馬鹿を言うな。これも未経験者には無理なんだよ。未経験者が目指すべきは就職、これ一本で考えろ。
至極当然の話だが、フリーランスはどこかの会社から仕事を発注してもらうことで報酬をもらっている。発注者にとって魅力的な人材じゃないと仕事はもらえない。
仕事を発注する会社はどういうフリーランスを選びたいと思う?そりゃ経験者だよな。スクールや自習くらいの経験しかない未経験者に頼むわけねーじゃん。
「IT業界は人手不足だから未経験者にもチャンスが」とか言われてるけどさ、それは「ちゃんとしたスキルを持った人材が足りてない」という意味であって、人がいれば誰でもいいという訳じゃないからな。
日曜大工で犬小屋しか作ったことないような人に家を建ててほしくないだろ?エンジニアもそれと同じだよ。
とにかく、いくら社会や就活が嫌でも「フリーランスになればいい」という甘言だけは真に受けるな。痛い目を見るぞ。
ここはフロントエンドエンジニア、バックエンドエンジニアとかそういう話じゃない。
お前ら、「稼げて楽な仕事」「将来性がありそう」だと思ったからエンジニアを目指してるんだよな。まずはその関心に基づいた分類を知ったほうがいい。
IT企業には大まかに言って、自社でサービスを企画・開発してリリースしてる企業(自社開発企業)と、顧客から受託開発をする企業の2つに分けられる。
みんなが憧れるキラキラホワイトエンジニアは大抵が自社開発企業だ。受託開発の会社は俗に言うIT土方になることが多いが、どちらも職種としては「ITエンジニア」扱いされる。
「エンジニア」という雑なカテゴリでしか仕事を認識してないやつは、上手く騙されてブラックな受託開発の会社に吸い込まれていく。
当たり前だが、ブラックな方が人手不足なので未経験でも就職しやすい。
そこで、「就職保証」をやっているプログラミングスクールの多くは、キラキラホワイトエンジニアのイメージで人を集めておいて、ブラックな会社に送り込むようなことをやっているケースがある。
最低でもこれには引っかからないようにしてくれ。
ちなみにブラックなところは延々と単純作業をやらされ、転職するためのITスキルすらつかない例もある。
そういう環境に放り込まれると基本的には詰むので、1回でも足を踏み入れてはいけない。
もちろん自社開発が100%ホワイト、受託開発が100%ブラックだとは言わない。
それぞれ例外はあるし、あくまで傾向にすぎないが、受託開発と聞いたら一旦は身構えるくらいの心構えではいてほしい。
プログラミングスクールは「未経験でも頑張れば誰にでも出来る」としか言わないし、広告でも未経験者の体験談を列挙して誰にでもできるような雰囲気を醸し出している。
こういうのを見ると「自分も出来るのでは」と思うかもしれないが、残念ながら物事には適性というものがある。プログラミングは万人が習得できる奇跡のシロモノでもなんでもない。
頑張っているのに何も習得できない人も実際に多く存在する。逆に未経験なのに恐ろしい勢いで理解する人もいる。これらは単純に適性の問題であるとしか言いようがない。
体育が苦手、歌が苦手、数学が苦手、古文が苦手、それと同じで、プログラミングが苦手というだけだ。
苦手な奴が苦しみながら長時間頑張ったとしても、得意な奴には楽勝で追い抜かされている。そんなことを仕事にするメリットはあるのか?
他の分野については得意・不得意が存在することを受け入れているはずなのに、何故かプログラミングだけは「誰でも短期間で出来るはず」と思いこんでいる人が多い。
これはプログラミングスクールのPR手段が詐欺まがいなのが悪いのかもしれないけどな。
もし適性がなかった場合、プログラミング自体に魅力を感じているわけじゃなければ素直にエンジニア以外の道を進む方がよい。ITに関心があるなら、IT企業の企画職みたいな携わり方もある。
別にエンジニアになれなくたって高給・ホワイトな仕事はいくらでもある。なんならエンジニアを超える待遇の仕事だってあるわけだ。
適性がないのに無理してエンジニアになろうとしたところで、先程書いたようなブラック企業にしか入れないかもしれない。それよりは別職種でホワイトなものを探すほうが絶対に良いと思う。
どんな仕事でも就活を突破したら終わりではない。その先にその仕事が続くことを考えると、自分の得意分野で勝負するほうが良いだろう。
語学学習の雰囲気でやってんのかな。プログラミング言語の文法を覚えたらもうプログラミングを習得したと思いこんで、現場に入ろうとする人がいて驚くときがある。
文法っていうのはツールの使い方みたいなもので、それ自体がエンジニアの価値じゃない。プログラミングの勉強に終わりはないから表現として正しくはないかもしれないが、文法ってのは10%未満に過ぎない。
例えば、ひたすら包丁の使い方だけ練習してても凄腕シェフにはなれないじゃん?プログラミングもそれと同じ。
エンジニアってのはプログラミングをするだけの人じゃなくて、プログラミングによって何かを作る人だからな。
プログラミングのための環境構築みたいな周辺知識もしっかり鍛えて、ちゃんと何か作れるようになろう。
「環境構築なしでプログラミングが勉強できます」と謳っているサービスは便利だけど、そこだけで勉強を終わるのは絶対にダメだぞ。必ず自力で何かをリリースできるようになってくれ。
金があったら好きにしろとでも言いたいが、入る前によく考えてほしい。
スクールに入ろうとしている奴は「先輩エンジニアたちはみんなスクールを卒業してエンジニアになった」と勘違いしているのかもしれないが、そんなことはない。
未経験でエンジニアになれているのは、だいたい自主的に勉強して才能を伸ばした奴だ。スクールがきっかけだった奴もいるかもしれないが、あくまできっかけだ。スクールの修了=エンジニア就職と考えてる奴はブラック企業に吸い込まれると思うぞ。
とはいえ完全に独学するとなると、何から始めていいのかわからないという問題はあると思う。そういう意味で何かしらカリキュラムが設定されているスクールが便利なのはわかる。
ただし、数十万するようなスクールに行く必要があるのかは甚だ疑問である。
まずは1ヶ月数千円くらい、格安で利用できるオンラインの教材からスタートするといいだろう。
オンライン教材でも質問サービスを提供しているところはあるから、完全に1人というわけじゃない。
もし、オンライン教材だけで能力が身につけられないと思ったら、その段階になってからスクールを検討すれば十分だろう。
ただし、エンジニアは自分で調べて自分で習得するスキルが必要な仕事だ。もしオンライン教材ですら難しいのであれば、適性が無い可能性を少しは考えておいた方が良いかもしれない。
#駆け出しエンジニアと繋がりたい 的なハッシュタグがあるんだけど、粗悪スクールのカモみたいな奴がやたら多い。
以前定期的に観察していたが、何やら教材の数をこなすのがメインになっている人が多い。
本を読んだりスクールに行ったりといったことでいってエンジニアの力が身につくわけじゃないので、これを見ていると悪い影響を受けやすいと増田自身は思っている。
心細いから初心者同士で繋がりたいと思う気持ちはわかるが、詐欺師まがいの粗悪スクールが紛れ込んでくるハッシュタグで傷の舐めあいをするのはリスクでしかない。
競技プログラミングほどのアルゴリズム能力を求められる会社はまだまだ一握りだ。しかもそういう企業はトップクラスの人間を求めている。
トップクラスの人間は東大や京大で情報系を専攻しているような人間で占められており、悲しいが「未経験の文系が競技プログラミングで大逆転」みたいな事例は聞いたことがない。
趣味としてやる分には全然良いが、競技プログラミングさえやれば就活で安泰だとは思わない方が良い。
それよりも、未経験者レベルであれば、自分で何かプロダクト(Webアプリやスマホアプリ)を一通り作れる方がよほど評価される。
時間が限られているなら、開発スキルの養成を優先した方がいいだろう。
実はこれがあるから、大学生なら未経験からでもエンジニアを目指しやすい。1年・2年でなるべく早い段階でアルバイトかインターンで実績を積み始めるといい。
「未経験から転職」ではこの手が使えないので厳しいという事情もある。
一般的な就活でアルバイトは職歴・経験としてみなされにくいが、エンジニア新卒採用では経験としてきちんとカウントされる場合が多い。
ただし、短期インターンだとプラスにはなりづらいので、インターン≧長期アルバイト>>短期インターンくらいに捉えておくといいと思うぞ。
Web系エンジニアの求人はバイト情報サイト・バイト情報雑誌には掲載されていない場合も多い。載っていても微妙なケースだったりする。
各社の採用サイトやWantedly等だけに掲載されている場合が圧倒的に多いと思うので、そちらをメインに探せ。
まずは自分が知っているWeb系企業の名前と「アルバイト」みたいな検索を掛けてみたら、案外見つかると思うぞ。
「初心者はどの言語から始めればいいのか」というのはよく見かける疑問だが、特に答えはない。別にPythonから始めてもいいし、Rubyで始めてもいい。PHPも悪くない。どれでも正解だ。
そこで、自分が希望するバイト・インターンの候補からスキルを逆算するのも一つの手だと増田は思っている。
例えば、ちょっと興味あるけど採用されるかは分からない、というレベルの企業が「PHP・Ruby・Python・Java等によるWebアプリの開発経験」をアルバイトに求めていたとする。
このような場合、特に注意書きがない限りどれか1つの言語で条件を満たせばよい。一番最初に書いているくらいだからPHPを中心にしているんじゃないだろうか?とアタリを付けて、PHPを中心にした開発スキルの習得を目指せばよいだろう。
良いことなのか悪いことなのかわからないが、日本のWeb系エンジニア新卒採用は学部で足切りされることが少ない。
要は文系学部出身でも、アルバイトや個人開発で実績があれば問題ないケースが多いということだ。
海外だとCSの学位を要求されることも多いので、これに関してはお前ら日本で学生やってて運が良かったなとしか言いようがない。
ただ、この風潮いつまで続くかわからない。今後5~10年スパンくらいで考えるとCSの学位を重視するブームが来てもおかしくはないと思う。
実は結構いるんだけど、プログラミングスクール卒をまるで学歴のように誇示している奴はかなり不利となる。
正直なところ、採用側であるエンジニアはプログラミングスクールに対してネガティブなイメージを抱いている人が多いのだが、スクール卒の人間はそれを誇りに思っている事があるらしくミスマッチが生じている。
これだけ書くとスクールを馬鹿にするなと言われそうだが、ネガティブなイメージには2つ理由がある。
まずは質が悪いスクールが多いこと。さっきから言っているが、昨今のエンジニア志望者は楽して稼ぎたいからエンジニアを目指すという奴が増えている。
その結果として情報商材のパラダイスとなっている。再生するだけで英語力が身に付くCD、絶対に株で儲かる方法、そんなレベルのプログラミング情報商材が大量に出回っている。
これはスクールも例外ではなく、そのレベルの教材だけで生徒をエンジニアとして送り出すところが多い。エンジニアはこの状況を知っている。
それに、プログラミングスクールは無限にある。採用側はそれらのカリキュラムを調べるほど暇ではないため、スクール卒となると全体的にそういう扱いをせざるを得なくなる。
もう1つはスクール出身者の問題。わざわざスクール卒と書く奴は書くことが他にない。
未経験者の採用における理想像は「エンジニアとしての就業経験はないが、これからOJTで学んでいけるだけの基礎知識があり、技術に興味があって今後も新しいことを学ぶ意欲のある奴」という辺りになる。もちろん会社の文化へのフィットなどもあるがな。
ただ、新しいことを学ぶ意欲というのは評価しづらい。誰だって聞かれたらそう答えるじゃん。そこで実質的には、自主的に何か作った経験があるか否かがその指標として機能している。
「技術に興味があれば、習得した技術をより深めて自主的に何か作るもんじゃないの?」という考えを持っているエンジニアが多い。
「技術力がある、技術者を大事にしている」というイメージのあるソフトウェア企業で働いているが、
私の周りの偉い人たちがことごとく「コミュニケーション」を連呼してモヤモヤしている。
ここでの「偉い人たち」は全員(少なくても『元』)技術者であり、そのほとんどは優れた技術者だ。
例えばカーネルコミッタだったり、有名なソフトウェアの開発者だったり、本を書いている人もいる。
雑談になると技術の話で盛り上がることもあるのに、仕事の話になるとやたらと「コミュニケーション」が連呼される。
コミュニケーションが大事なのは分かる。偉い人ならなおさらだ。それを否定するつもりは毛頭ない。
でも私より技術力のある人に「君は技術は十分できるからもっとコミュニケーションを」と言われるとモヤモヤするし、
社内で新しい技術の勉強会などがあるときは「興味がある人は参加してみたら?しらんけど」といった雰囲気なのに、
コミュニケーションのトレーニングに関しては「みんな是非参加するように」と言われるとなんだかなあと思う。
そこで、優れた技術者が出世してコミュニケーションを連呼するようになった理由を考えてみた。
--
人によって程度の差はあれど、多くの人は自分ができることは他の人もできると考えがちで、
自分にとって難しい問題は他人にとっても難しいと考えがちだと思う。
プログラミングが上達してソフトウェア開発のスキルが身につく過程を考えてほしい。
最初はプログラミング言語の文法がわからずコンパイルエラーにあたふたしてた人も、
段々と慣れてきてそれなりに思った通りのプログラムが書けるようになってくると
「文法なんて大した問題じゃない。問題なのはそれを使って何を書くかだ」
なんてことをいっちょ前に言うようになったりする。
とりあえずきちんと動くプログラムを書けるようになった人が、
仕様の変更により大幅な書き直しをするような失敗を経て設計の重要さを実感すると、
「動くプログラムを書くのは大前提。将来の変更を見据えた設計こそが大事だ」
複数のプロジェクトを管理し、複数人に仕事を割り振ったりすると、
「ソフトウェア開発でコーディングや設計が占める割合はほんの一部に過ぎない。
どうやって人と『コミュニケーション』をとるのかが本質になるのだ」
といった類の発言が飛び出すのではないだろうか。
この発言が飛び出す頃には、かつてプログラミングで苦労した記憶など忘れている。
実際問題、自分で設計やコーディングをして困ることはほとんどないのだから。
苦労するのはコミュニケーションだけであり、いかにそれを改善するか苦心する。
--
「結局コミュニケーションが大事なら、コミュニケーションを連呼するのも間違っていないのでは?」
と言われればそうなのかもしれないが、誰にでもそればかり勧めるのはどうにも違和感がある。
うちは自社でソフトウェアを開発している会社だ。手を動かしてものを作る人がかならずいる。
C++のオブジェクトのlifetimeを気にせずセグフォするコードを書く人が受講すべきトレーニングは本当にコミュニケーションの改善法なのか。
業務上Javaを書く必要があるのに「Javaは分からないから」といって自主的にも学ぶ気がない人が受講すべきトレーニングは本当にコミュニケーションの改善法なのか。
実機での動作確認を怠りバグを入れる失敗を複数回繰り返す人が受講すべきトレーニングは本当にコミュニケーションの改善法なのか。
私には何もわからない。
--
「なるほど。そんな問題があったのか。
でもそれは君が相手とうまくコミュニケーションをとって、問題解決を目指すべきだし、
それが難しければ上とコミュニケーションをとって、改善方法を提案すべきだ。
おわり
Javascript を Java って言うくらい気持ち悪いよね
7と8。
技術的なところが気になる人はこれだけ読んでくれたらいい
最後に技術的な観点からエアレペルソナが純国産ではないということを指摘する。
RocketChatという海外で開発されたOSSチャットアプリをフォーク、改変したもののよう。
ttps://github.com/RocketChat/Rocket.Chat.ReactNative
ttps://rocket.chat
フォーク元はバリバリ多国籍、外資である。(RocketChat自体は問題のないアプリであり、このエアレペルソナとはフォーク関係を超える関係はないと思われる)
冒頭のこの部分に関してである。
ttps://play.google.com/store/apps/details?id=chat.airlex.reactnative
Google Playで公開されているエアレペルソナのAndroidアプリをリバースエンジニアリングして調べてみた。
ちなみに、エアレペルソナには利用規約のようなものは見当たらず、リバースエンジニアリング禁止条項も無いようだった。
ttps://apps.evozi.com/apk-downloader/
ttps://github.com/pxb1988/dex2jar
この辺を使ってapkをダウンロードし、apkを解凍し、chat.airlex.reactnative/classes.dexをjar fileに変換した。
classes.dexから変換されたjarファイルを展開するとchat/airlex/reactnativeというフォルダ、パッケージが見つかる。
このパッケージ内のファイル(.class、クラス)がエアレペルソナの処理を行うもののようである。
このクラスをJadを使い、デコンパイルしてみた。その結果が以下である。
ちなみにここからapkをアップロードするとdex2jarをしなくてもJavaのソースコードにまでデコンパイルしてくれた。便利。
package chat.airlex.reactnative; import android.content.Context; import com.ammarahmed.mmkv.SecureKeystore; import com.facebook.react.bridge.ReactApplicationContext; import com.tencent.mmkv.MMKV; public class Ejson { private String TOKEN_KEY = "reactnativemeteor_usertoken-"; String cardId; String host; String messageId; String messageType; /* access modifiers changed from: private */ public MMKV mmkv; String msg; String notificationType; String rid; Sender sender; String senderName; String type; public Ejson() { ReactApplicationContext reactApplicationContext = CustomPushNotification.reactApplicationContext; if (reactApplicationContext != null) { MMKV.initialize((Context) reactApplicationContext); new SecureKeystore(reactApplicationContext).getSecureKey(C0617Utils.toHex("com.MMKV.default"), new RNCallback() { public void invoke(Object... objArr) { if (objArr[0] == null) { MMKV unused = Ejson.this.mmkv = MMKV.mmkvWithID("default", 1, objArr[1]); } } }); } } public String getAvatarUri() { if (this.type == null) { return null; } return serverURL() + "/avatar/" + this.sender._id + "?rc_token=" + token() + "&rc_uid=" + userId(); } public String token() { String userId = userId(); MMKV mmkv2 = this.mmkv; return (mmkv2 == null || userId == null) ? "" : mmkv2.decodeString(this.TOKEN_KEY.concat(userId)); } public String userId() { String serverURL = serverURL(); MMKV mmkv2 = this.mmkv; return (mmkv2 == null || serverURL == null) ? "" : mmkv2.decodeString(this.TOKEN_KEY.concat(serverURL)); } public String privateKey() { String serverURL = serverURL(); MMKV mmkv2 = this.mmkv; if (mmkv2 == null || serverURL == null) { return null; } return mmkv2.decodeString(serverURL.concat("-RC_E2E_PRIVATE_KEY")); } public String serverURL() { String str = this.host; return (str == null || !str.endsWith("/")) ? str : str.substring(0, str.length() - 1); } public class Sender { String _id; String username; public Sender() { } } }
フィールド名を見てみると、cardId, host, messageId, messageType, mmkv, msg, notificationType, rid, sender, senderName, typeが存在する。
メソッドには、getAvaterUri、token、userId、privateKey、severURLが存在する。
ところで、RocketChatというOSSのチャットアプリが存在する。
ttps://rocket.chat
そのRoketChatのAndroid実装の中に同名のEjsonというクラスが存在する。
ttps://github.com/RocketChat/Rocket.Chat.ReactNative
ttps://github.com/RocketChat/Rocket.Chat.ReactNative/blob/develop/android/app/src/play/java/chat/rocket/reactnative/Ejson.java
見比べてみると、フィールドにcardIdが追加されている以外はフィールドやメソッド名、そしてその処理の内容まで一致している。
他にもReplyBroadcastなど、同様のクラスがエアレペルソナに見つかる。
以上のことからエアレペルソナはRocketChatをフォークして、パッケージ名を変えて作られたチャットアプリであり、開発の大部分はRocketChat社の努力と多数のOSSコントリビュータによってなされたものであると思われる。
そもそもこのOSS時代に純だの何だの言っている時点で怪しい。
さて、エアレペルソナがRocketChatをフォークして作られたものであるとすると、気になるのはライセンスである。
RocketChatのOSSライセンスはMITライセンスである。
ttps://github.com/RocketChat/Rocket.Chat.ReactNative/blob/develop/LICENSE
MITライセンスは非常に緩いライセンスであるため、エアレペルソナの様にフォークして別のアプリケーションとして公開することにはおそらく問題がないということは強調しておく。
現状エアレペルソナにログインできておらず(2要素認証のコードが送信されないといった問題が起きている模様)、使用している各OSSのライセンス表示が適切に行われているかまでは調べられていない。
凡人以下ながら新しいネタとか技術とか数学やアルゴリズムは引き出しを増やすように心がけてるんだけどね
食い扶持になる可能性もあるし
しかし、未だにRustがうまく使えないというか、学習コストが高すぎる気がするんだがどうしたもんかな…
国が公開してるとあるExcelファイルを読み込んで、それを望まれるCSVやJSONに加工する、
という仕様は同じにして色々な言語で書いて比較しようと思っているのだけど、
PHPやNode.js、Python、Goは自分には問題なく書けてる
多分、C++やCも、流石に何か便利なものにvcpkgやconanとか使って依存するだろうけど書けると思う
しかし、Rustは難しいなあ
Excelファイルをパースするサンプルコードも難しいというか、長くね?と思ってしまうんだけど
これに慣れる日は来るんだろうか…
Goは学習コストが低いと思うから、とりあえず動作するコードを書くのは問題ないんだよなあ
C#とかDとかNimとかErlangとかKotlinとかDartとかもやろうかなあ
でも、少なくとも後ろ2つはほとんどJavaみたいなもんだろうか
作業効率化のためにシェルスクリプトで書いたツールは今も使っているが、JavaやRubyやPythonで作ったツールはほとんど使っていない
JavaやRubyやPythonは、何でもできてしまうから、ちょっとしたフォーマットの変更などで変更や拡張が頻繁になされるし、その結果プログラムは肥大化する
一方、シェルスクリプトは得意不得意が極めて明確で、扱うデータにはかなり強い制約がかかる。その結果、本質的な機能以外の変更に晒されることが少なく、個々のプログラムは単機能疎結合になりやすい。
というか、「まともなデータ構造が無いからデータに強い制約をかけないと実用的なプログラムを書けない」「構文やモジュール機構が貧弱すぎて単機能にしないと読めなくなる」ので、ある程度センスのある奴なら必然的に良いスタイルでプログラミングすることになる。
今の日本のほとんどの大学で情報系が人気だけれども、本当にみんな情報系に行きたくて行ってるのか?
自分の場合は昔からプログラミングが大好きで、中学の時にはずっとJavaでゲーム作ってたし(ツールも使わずに)、高1の時にはnumpyでCNN(画像認識AI)作る的なこともやってた。だから当たり前のように情報系に進んだ訳だけど、そんな人間遥かに少数派だと言うのはわかってる。
でも逆にそれ以外の人が情報系を志望する理由がわからない。「プログラミング」とか「エーアイ」とか「データサイエンス」なんて見た目の良い言葉に憧れただけなのか?もっと酷いのだと、「偏差値が高いから」なんて理由で選ぼうとしてた奴も友達にいた(説得してやめさせた)。他の学科は高校で基礎をやったアドバンテージがあるかもしれないが、情報系はそんなのない。大学入って0からのスタートで上手くいくとみんな本気で思ってるんだろうか?だったら大学入学してすぐ本買うなり競プロやるなりしてプログラミングの勉強を始めるべきではないか?それをしている情報系のB1なんてかなり少ないと思う。
マジで頼むから情報系にいる限りはプログラム書けてくれ。願わくば情報系に入った時点で「アルゴリズムってどういう意味?」なんて質問をするのはやめにしてくれ。高校生はそれくらいのやる気を持って情報系を選んでくれ。
でも転職活動は弾を打ち続けるの大事。結局最初の面接こぎつけるまで3ヶ月、仕事決まるまで8ヶ月かかった。
合わなかったら2年で別の会社に転職するつもりでいたし、すげえ安く見積もられると次の転職のときに買い叩かれるから吹いてでもある程度の金額のところな。
あと、ちゃんと転職エージェント使って。それも数社。最初の転職のときは5社通した。
面倒だけど職務経歴書書き方だけで全然書類通る率変わるから、一度ちゃんと指導を受けたほうがいい。
担当者がムカつくところは無視してOK。安い転職しか持ってこないのも価値がわかってないから適当にながしておいてOK
登録しておくだけで別の担当者からアプローチあっていい話につながったりする。
あと、英語だけはなんか資格とっとけ。IT+英語これ最強。どっちも適当でもいま有力人材。
英語苦手ででもTOEIC600位まで頑張っておけばなぜか案件ねじ込まれる。840超えてればたいていイケる。実際働き出すと900超えてても無理な人は無理なんだけど。
転職エージェントはIndeedだけじゃなくて大手と外資専門狙って。あと、怪しげな個人は合うだけ無駄だけど電話でなら話聞いてもいい。電話で説明出来ないのは大した案件持ってない。
ITというか開発の手順わかるだけで外資で日本語環境開発の仕事結構ある。
一番やばいのは自分のメンタル。本当にこれすっごいキツい。けどまあ、妄想逃避とランニングでなんとかした。市のプールで水泳もいいかんじ。
最初の3年引きこもってた後の転職の頃は本も読めないくらい。今全然読める。本当8年前頑張ってよかった。
あと週数回のバイトとか単発もののバイトとかで生活費の足しにして。社会復帰のリハビリにもなるし。
カネがないと転職活動もできないけど、カネを使わないとしんどいのも解消できない。
本当おっさんがんばれ、超がんばれ。
追記: