読者です 読者をやめる 読者になる 読者になる

teitei's blog

雑に書くので雑に読んでください。

きっと何者にもなれない自分というエンジニアとしての生存戦略

2016/10/26 現在26歳で業界歴は6年ほど。
まあ、若いと言えば若いであろう。実際色んな人と話をして年齢の話になると若いねとよく言われる。
が、もうそこまで若いとは言えないだろう。
あと3ヶ月も立つと自分も27になる。新卒の子や学生からしてみると、もはやおっさんであろう。
とまあ自分レベルの人間が自分をおっさんと言うと色んな人に怒られると思うので、おっさん予備軍とでも呼称するか。
で、そのおっさん予備軍として今後若く優秀なエンジニアと対抗する際に何が出来るのかと振り返ってみたが、何も残せていない。
例えば、

  • OSSで何か作っているか
  • 有名OSSにContributeしているか
  • CxOや役員などの経営者経験をしているのか

OSSは趣味で作ったものをGithubで公開はしてはいるが、Star数が0のところを見ると利用されてるとは言えないだろう。
そんな感じで若く優秀な人からすると引っ込んでろよパンピーという感じの人間ですが、
自分もご飯を食べてアニメやゲームなどのコンテンツを消費して生きていかないといけないので、自分が何が出来るか・何が貢献出来るかを考えてみた。

きっと何者にもなれないエンジニアの生存戦略

業界の有名人や、業界に友人がたくさんいて、なおかつ優秀ならば縁故で紹介してもらえるのかもしれないが、
自分は引き篭もりコミュ障の糞野郎なので、自分からアクションを起こさないといけない。
それで何が出来るか考えてみた。

  1. 有名OSSにContributeする。 一番手っ取り早いのかもしれない。 レールに乗るのが嫌で社長になる人も居るらしいが、1から作るより既存のレールに乗るのは手っ取り早い。
    パッと思いつくのはRailsDjango、Laravelなどのフレームワークだろうか。
    その言語での有名フレームワークにContributeしているのであれば、その言語を採用している会社への採用されやすくなるかもしれない。

  2. 起業する。 ハイリスク・ハイリターン。何かVCから融資を受けられるようなアイディアと度胸があれば良いのかも。

  3. CxOとしてJoinする。 少し前に流行った?っぽいC(T|x)Oになるパターン。
    起業したい人とマッチ出来たり、CTOを探している会社にいき、Exitで生きるという戦略だろうか。

  4. 副業として顧問になる。 最近は技術顧問が流行りなんですかね?よくわからないです。
    週何日か顧問としてその企業に貢献するスタイル。顧問という立場で色んな人に教えてましたという事であれば今後も生きやすくなるのかもしれない。

  5. サービスを立ち上げる。 何かしらサービスを立ち上げ、それをポートフォリオとしてやっていく。
    アダルトサイトなら作って売却したという話を聞いたことがあるので小遣い稼ぎには良いのかもしれない。

他にもあるのかもしれませんが、自分の稚拙な脳みそでは他にパッと良いのは思い浮かばないです。

自分の生存戦略

上記でいろいろと上げてみたが、自分は上記のパターンには当てはまらない方向で行こうかなと思った。
他人と比較して、ものすごい技術力を持っているわけではないし、経営知識が有るわけでもない。
起業するにしても何かしらVCから融資されるほどのアイディアも、人脈もないし。

で、そんな何者にもなれないお前が何が出来るのか?と考えてみたが1人では何も出来ないので、皆で何かを作れる様なエンジニアになりたいと思った。

皆で何かを作れる様なエンジニアとは

自分はものすごい技術力があるわけではない。例えばRailsのSprocketsが鬱陶しいのでWebpackに置き換えようとしたが、
結局Webの記事に頼らざるを得なかった。技術力があればそこら辺も自分で出来るのだろう。

なのでエンジニアだけでなく、デザイナーやプランナーも含めて何かを作れるような人間になりたい。
ここで言う何かを作れるような人間とは企画やUI・UX実装時に技術力による制限をかけないようなエンジニアである。
そのためなら何でもやるぐらいのスタンスである。
例えば管理画面のtemplate1行修正だったり、画像ファイルをrepoにコミットするような地道な仕事から、
新機能実装時にレスポンスをコンマ数秒でも早くするようなことまで。
自分一人ではキラーアプリなんて作れるとは到底思えないので集合知を駆使して作ろうということである。

ここだけ聞くと情けない。ゴミエンジニアが。エンジニアなら技術力で全てを殴り倒して見せろというところだろうが、
エンジニアのパワーが強すぎて逆にエンジニアリングとしてイケてないから企画に制限をかけることが多々あった経験からである。
エンジニアリングとしてイケてないのは確かにそうかもしれないが、それをどうにかするのが仕事だと思っている。
それはイケてないから企画・UI/UXをやり直せ・作り直せなど言ったら負けかなと思っている。
結局餅は餅屋で、プランナーやデザイナーはエンジニアリングの事はわからないだろう。逆もまた然り。
ならば、自分の領域の仕事ならどんな事でもやるぐらいのスタンスでやるべきじゃないのかなと思う。 もちろん出来ないことはあるだろうからそこは代替案などを出すべきで、出来ないとだけ突っぱねるのは違う。

ココらへんはid:serihiroさんの下記の記事から感銘を受けた。 serihiro.hatenablog.com

きっと何者にもなれない自分というエンジニアの生存戦略

何だかうまくまとまらないが、結局はこの一言なんだろう
企画やUI・UX実装時に技術力による制限をかけないようなエンジニアとして生きる事
CTOや技術顧問など、上記に上げた生存戦略はキラキラしていて羨ましいが、キラキラしているからといってそれだけの理由でそこに行くのは違う。
あくまでエンジニアとしてエンジニアリングを全うするようなエンジニアでありたい。

というわけで最近は算数すら怪しいがDeepLearningを勉強したりもしている。
理由としてはそれで技術力による制限をかけないようにしたい。それでいて自分から提案も出来るようなエンジニアになっていければなぁ。

なぜこの道に進むのかというと、自分のメンタルモデルとなっている人が全く同じ道を通っているから。
その人はもう50に近い歳だが、若く優秀な人顔負けなほどAWSを使いこなし、周りの人からの信頼も勝ち取っている。
それで成功していることもしっているので自分もこの道を進んで、みんなで何かを作れるようなエンジニアになっていきたいと思う。

新しいエディタを探して、ひとまずAtomに乗り換えた話

今までコードを書く際にはVimを使っていたが、いい加減老害感が出てきたのと、気分転換を兼ねてエディタを乗り換えた。

結論から言うと、メインはAtomにしてサブエディタとしてIntelliJ Ultimate(+ Language Plugin)を使うようにした。
Atomに乗り換えて1〜2ヶ月ほど経ち、ひとまず落ち着いたので記事にすることにした。

Vimから乗り換える必要があるか論

個人的にはバグが無く生産性が高いものを作れるなら、VimでもEmacsでもメモ帳でもIDEでも何でも好きなもので書けば良いのではという意見。
なぜ自分がVimから乗り換えたかと言われれば、冒頭にも書いた気分転換もあるが、自分のVim力に限界を感じたのが原因だった。

自分のVim力の限界

きっかけはNeobundle.vimから、dein.vimに乗り換える事だった。
ShougoさんのNeobundleには大変お世話になっており、dein.vimの紹介記事が出た際に乗り換えようとした際になぜかVimの起動が遅くなってしまった。
まあ、またかとvim hoge.txt --startuptimeを使って原因を探す事や、dein.vimの新しい構文を覚えるのが面倒だなぁと思ってしまった。

Vim力が高い人であればソースコードを飛んでパパっと調べることが出来たりする事ができたと思うが、
個人的にはVimScriptは覚える気がないので毎回この手のトラブルのたびにVimScriptの文法を調べることが面倒になってしまった。
覚えれば解決するのではという気もするが、VimScriptかぁ・・・という謎の嫌悪感があるのと、
今までは業務で書いているコードはPHPPythonの様なLLからJavaC#等の本来IDEで書いた方がメリットが高い言語でもVimで書いていたが、
仕事でJetBrains製品をオススメされ、実際に使ってみた結果もうそこまでVimに労力をかけなくても良いかなぁと思ってしまったという事も大きい。

メインのエディタとしての選択肢

ということで試しに乗り換えてみるかーぐらいの気軽な気持ちで色々と選択肢を漁ってみた。
条件としては主に下記。

  1. VimKeyBindが使える。
    • もう8年ほどはVimKeyBindで過ごしてきたので今更変えると移行コストが辛い。
  2. Pluginで拡張が出来る。
    • Vimで色々とカスタマイズをしているので近しいことが出来ないのは辛い。

というわけで調べてみた。(個人の感想です。

  • Emacs

    • Vimと同じく老害感が出るのが・・・。
    • Evilという選択肢もあるが、違うコレジャナイ感が凄い。
  • Eclips

    • 重い。ただただ重い。
    • 過去に使っていて苦い思い出が・・・。
    • 昔はIDEといえばEclipsだった感があるが、最近はAndroid StudioよろしくJetBrainsが台頭している感があるし、Eclipsは良いかなと判断。
  • Atom

    • 初期に触れた程度だったが、思った以上にPluginが増えていた。
    • 重い・遅いと言っている人が多かった印象だが触ってみた感じはそこまでだった。
      • 最近のPCの進化の賜物かもしれない。
      • ある一定以上のファイルサイズを読み込む際の重さ、エディタ立ち上げの遅さは気になる。
    • Vimほどではないがカスタマイズ出来る事が豊富。
    • 設定ファイルもcson、cofee、lessなどある程度親しみやすい。
    • Github製かつOSSという特定の団体からの大人の事情による圧力は無いだろうという安心感。
      • まあ、Atom is Deadになる可能性も無くはないが。
  • Xcode

    • Mac以外でコードを書くことはほぼほぼ無いのでありかもなーと思った。
    • Apple製でほぼ1年おきに使っていた機能がカジュアルに変わるのは辛い。
  • Visual Studio Code

    • リリース当初に触れただけだったが、触ってみるとかなり良かった。
    • Extensionsの数がちょっと少ないかなという感。
      • 自分で作れば良いのではという突っ込みは無しで。
    • MSが信用できない。
      • あくまで個人の感想
      • 最近はOSS活動に精を出していることは知っているが、過去の出来事(ハロウィン文書)やIEに苦しめられた記憶が残っていてMSに対する心象が悪い。
  • IntelliJ Ultimate(+ Language Plugin)

    • もはや説明する必要は無いだろうがほぼ何もカスタマイズしなくても使い勝手はかなり良い。
    • LLでもかなりのコード補完が聞くし、とにかく賢い。
    • Pluginもボチボチある。
    • あえてケチを付けるなら
      • 有料かつOSSでは無いので何かあったときに原因を特定し辛い。
      • 細かなカスタマイズがやり辛いのがイマイチといえばイマイチ。

と他にも調べたが省略。

選択

もはや面倒になってJetBrainsで良いかなぁと思ったが、下記の理由でメインにするのは止めて、詳細なコードレビューやリファクタリングの時だけ使うようにした。

  1. カスタマイズがし辛い
    • GUIによるカスタマイズ。
      • 慣れれば良いのではという感じではあるが、やはりCUIでやりたい。
  2. 他端末への設定の共有
    • GithubでDotfilesを管理しているので、それで共有出来る仕組みが無いのは辛い。
      • Dotfilesで共有出来るのであればぜひ教えてもらいたい。

というわけで下記の2つに絞った。

  1. Atom
  2. Visual Studio Code

どっちもElectron製でなおかつ各種カスタマイズも出来るしで悩んだが、心象の差でAtomにした。
とはいえMSに対する心象も過去よりは良くなっているので本当に微妙な差ではあった。

Atomはコードを書くとき・レビュー時などのメイン作業。
IntelliJ Ultimate(+ Language Plugin)は詳細なコードレビューやリファクタリングの時だけ使うようにした。

詳細なコードレビューやリファクタリングの為に金を掛けるのかという意見もあるかもしれないが、
金で良いプロダクトを作れるのであればいくらでも払って構わないかなという気持ちはある。

冒頭にも書いたが1〜2ヶ月ほどこのスタイルで進めてみてうまく行っているのでまあまあ良かったのではと思っている。
Atom Pluginの紹介しろという意見があるかもしれないので紹介しておくとお使いのブラウザから、(ctrl | ⌘) + l -> Atom プラグイン と打つと出てきます。

けつろん

自分の責任で好きなことを好きなもので作れ。

友人が死んだ話

他の方は見てて面白くはないだろうが、自分の中で残しておきたいので書くとする。

タイトルもあるが、友人が死んだ。死因は自殺とのこと。

自分の身の回りの親しい人で、老衰以外で亡くなったのは初めてだった。

最初に友人の親族を名乗る方から連絡が来たときは、何か質の悪い冗談だと思っていたが、 残念なことに、本当に残念なことに、そうではなかった。

友人との関係性としては友達の元カノというだいぶ微妙な立ち位置で、 学生時代からの付き合いなので計7年ほど関係を持っていたことになる。

とはいえ、ここ1年前ぐらいまでは殆ど連絡を取らなかったが、何かがきっかけで連絡を取ることになった。 確か転職活動中にとある会社のサービスの意見を聞きたくて連絡したのがきっかけだった覚えがある。

そこからは何度かSkypeで話したりしていて、 お互いオタク趣味を持っていたこともあり、馬鹿な話をしていて盛り上がっていた。

他の人には相談しづらかった事を相談したり、友人からも相談されたりもしていた。

元々精神的に不安定な、言ってしまえばメンヘラではあったが、それを除いては普通の友人関係だった。

友人が亡くなって、自分宛に遺書があると連絡が来たときは、 メンタル極まって何か悪い冗談をしているだけだと思っていたが、 遺書を初めて読んだときに、友人が亡くなって、もう声も聞くことも、顔を見て話をすることも、お互いに馬鹿みたいな話をしてゲラゲラ笑うことも、相談することされることも出来ないということを実感してしまった。

亡くなる数日前にもSkypeで話をしていたが、今思えばあそこで話をしている中で、 東京に行きたいと行っていたことや、現状がしんどいなど、 いろいろサインがあったことを見逃した自分が馬鹿なんじゃないのと思ってしまう。

あそこで自分が言葉を間違えなければ、ひょっとしたらまだ生きてくれたのではないか、 ひょっとしたらまだ人生に希望を持ってくれていて、ひょっとしたら彼氏と結婚して幸せになってくれるんじゃないのか。 など色々考えたが、それはただの自分の願望で、ただそう思いたいだけなんだなと。居なくなった現実を見たくないだけだと。

地元に帰省をしたら、一緒にバーに行って酒飲んだり、マッカランを奢ってくれると言っていたり、カラオケ行って一緒に不満を叫ぼうと言っていたじゃないか。 と約束していた事や、 お互い死ぬときはコンテンツの海で死ぬと言ったはずだっただろとか、彼氏と幸せになるんじゃないのかとか、今となってはもう遅いがそんなことを思ってしまう。

もうあのお互いふざけ合って話すことも出来ないと思うと、さすがに精神的ショックがデカすぎて辛い。

今まで葬式は残された人の為にやる物だから不要だと思っていたが、 その考えが一変しているのを感じている。これは葬式やらないと辛すぎる。

残された人が、亡くなった人の収まりを付けるために、葬式をやる。 当たり前のことだと思っていたが、親しい人が亡くなって始めて分かるとは情けない。