13年のエンジニア人生を振り返ってみた

17 min read読了の目安(約15800字

エンジニアと人生 Advent Calendar 2020 10日目の記事です!

https://adventar.org/calendars/5738

昨日の記事はダンさんの プログラミングを始めてからフリーのエンジニアとして食えるようになるまでにやったことを書く でした!

10日目の自分の記事は、「エンジニアと人生 Advent Calendar」ということで、ストレートに自分のエンジニア人生を振り返ってみたいと思います。
エンジニアとして活動を始めたのが20歳の頃で、現在33歳なので、約13年間を振り返ることになります。
長いですね。
書いていて正直、「こんな漠然とした長い振り返り記事を、誰が読んでくれるんだろう?」と思ってしまうほどです。

漠然と振り返りつつも、それぞれの時代ごとの「技術力」と「充実度」について、できる限り率直に書いてみようと思います。
「エンジニアといえば技術力! 人生といえば充実度!」といった雑な考えです。

振り返る時代は、

  • 大学時代(2007~2011年)
  • 最初のスタートアップ: A社(2011〜2015年)
  • フリーランス: B社(2016年)
  • 正社員: C社(2016~2017年)
  • フリーランス ダブルワーク: C社、D社(2018年)
  • フリーランス: D社(2019年)
  • 個人開発(2020年)

といった感じです。
会社名は何となく匿名にしてあります。

では、振り返っていきましょう。

大学時代(2007~2011年)

前半: プログラミングとの出会い

プログラミングとの出会いは一年生の時の授業で、Javaを習ったことでした。

大学の方針でLinuxを使っていたので、プログラミングとの出会いより、Linuxに対する不満を思い出してしまいます。
Linuxの環境では、インターネットに接続するだけ一苦労で、エディタも不慣れなemacsを使わされ、何をするにも思い通りにいかず、プログラミングに入る前に嫌になってしまいそうでした。

家では快適にWindowsを使っていたので、「Windowsは最先端で良いもので、Linuxは時代遅れで使えないもの」のような印象を持っていました。
かなり傲慢で残念な考え方ですが、まあ18歳だとこんなもんですかね。。

プログラミングの話に戻りますと、if文やfor文などの基本的な構文は授業で習ったはずですが、どういう感想を抱いたのか正直覚えてません。
オブジェクト志向についても、車を例にして説明していたような記憶がうっすらとありますが、理解する下地が築かれていなかったのか、全然理解できていなかったと思います。
オブジェクト指向っぽいプログラミングができるようになったのは、かなり後になってからでした。

ただ、何となく「プログラミングの課題に取り組むのは面白かったなあ」という感覚はあったのは覚えてます。
昔から数学の問題を解くのも好きだったので、それと同じような感覚だった気がします。

「課題を解くこと」が面白かったのか、「課題が解けたことをで周りから褒めてもらうこと」が嬉しかったのか、どっちが大きかったのかも曖昧ですが、若い頃は後者が大きかったように思います。
今後のエンジニアとしての活動においても、20代は承認欲求に突き動かされていたような気がします。
承認欲求を満たすためののツールとしてプログラミングがある、ような。
(もちろんそれだけではないと思いますが。。)

大学のレベルはそれほど高くなかったので、周りもLinux環境や初めてのプログラミングに挫折気味でした。
その中で、自分は割とできる方でした。
とても狭い範囲での観測ですが、相対的にできが良かったことで「プログラマーとしてやっていこう」と思えたような気がします。
「プログラマーになる」などと明確に言葉にしたりはしていなかったと思いますが、
何となく社会人として一人前にやっていける自信がなく、漠然と将来に対して不安があったので、「自分にもできることがありそうだ」と思えたことは自分にとって、とても大きな出来事だったと思います。

この「不安」も20代の自分にとっての大きな原動力だったと思います。
20代のキーワードは「承認欲求」と「不安の解消」になりそうですね。

雑に振り返ると、過去は美化されるので、「プログラミングが好きだからやっていた。面白かった」と聞こえのいいことを言ってしまいそうですが、
ちゃんと思い出そうとすると、「好きだからやっていた」の割合は1割かよくて2割ぐらいで、あとは「承認欲求」や「不安の解消」のような世俗的な感情に動かされていたんだなあと思ってしまいます。

「技術力」について少し触れてみます。
授業を受けたことは、エンジニアとしての技術力に影響を与えたのか。
正直、ちゃんと思い出すこともできていないので、「学べたこと」を把握することは難しいですが、授業で何か大切なことを学べたという感覚はありません。
後々の、「実際に何かを作りながら学んだこと」の方が圧倒的に大きいという感じがします。

大学の授業は自分にとって、プログラマーになるきっかけを与えてもらえたという点でとても大きな出来事でしたが、「技術的な学び」という点ではあまり意味がなかったと思います。

後半: エンジニアとしての活動開始

大学3年生の時、学生起業家として活動している方と出会い、プログラマーとして手伝うことになりました。
授業を受けたことで「プログラマーになりたい」と思い始めたものの、実際に何をしたらいいかは解らず、漠然と日々を過ごしていたので、「これはチャンスだ!」と思ったような気がします。
この学生起業の活動が、自分のエンジニアとしての最初の仕事になりました。

仕事の内容は、会社のHPをwordpressで構築したり、EC事業をやろうとしていたので、ECサイトを構築したり、といった感じです。
プログラマーは自分一人だけだったので、ひたすらググって何とかしていたんだろうと思います。(あんまり覚えてない。。)

メンバーも学生なので、ちょっとしたことでも「凄い!」「ありがとう!」と言ってもらえていたと思います。
自分もそれに応えようと「なんとか良いものを作ろう!」と頑張っていた気がします。
「何かを作ることで人に喜んでもらう」ということは、今にも通ずるモチベーションになっているような気がします。

充実度

結構高かったと思います。
学生でこういった活動をしてい人はあまりいなかったので、「自分たちは特別なことをしている」と素直に思えていましたし、
プログラマーが自分一人だったので、かなり重宝されていました。
自分が見える範囲の中で、相対的に自分が上の方にいると思えたら、何だか充実していると思える気がしますね。

技術力

今の自分からすると、当然ですが未熟としかいいようがないですね。
技術に関して思い出せることを雑に羅列してみます。

  • 扱っていた技術要素はhtml, css, php, mysql辺り
  • フレームワークという存在を知らなかった
  • 情報源はweb
  • webのいい記事を見つけると、何か特別な知識を得たような高揚感があった
    • 体系的に知識を得ようという考えはない
  • 困ったら調べるか、強引になんとかする。動いたらok!自分すごい!全能感!
  • ちょっとした処理を関数に切り出すことにより、再利用できるようにしただけで、「自分すごい」と純粋に思っていた

こんな感じです。
よくこれでECサイトを構築できたなと思います。(一応リリースして、サイト上で購入もされました。)
当然クオリティーは低く、メンバーにも色々と妥協してもらったと思いますが、「自分の知っている範囲でなんとか動くものを作る」馬力だけはあったように思います。

色々と知識不足なのは当然として、1つ大きく欠けていたものを上げるとすると「メンテナブルなコードを書く」ということかなと思います。
そもそも「良いコード」という概念が頭の中になかったような気がしますし、「動けばOK!」以上のことは考えられていなかったと思います。

最初のスタートアップ: A社(2011〜2015年)

学生起業の活動は、ECサイトを開発した後に離れることになりました。

代わりに、学生起業の活動の中で出会った方に開発の仕事を紹介してもらえるようになっていました。
紹介してもらった仕事をいくつかこなした後に、スタートアップのA社を紹介してもらい、入社することになりました。

最初の給料は12万円ぐらいだったと思いますが、「就活しなくて済んでラッキー」と思っていたような気がします。
実家暮らしで金銭的に困らなかったことと、基本リモートで自由にやらせていただいていたので、不満を持つどころか、ありがたいなーと思っていたような気がします。
(最終的には20代後半万円まで上げてもらえました)

会社のメンバーは4人で、プログラマーはまた自分だけでした。
入社後も3年ぐらいはプログラマー1人の状態だったので、キャリアの初期段階では周りに自分以外のプログラマーがいませんでした。

仕事内容としては、いわゆるスタートアップの何でも屋のプログラマーという感じでした。
最初の方は、web制作系の仕事や、細々とした開発系の仕事が多かったと思います。
後半になると、会社で扱う仕事の規模が少しずつ大きなってきて、フレームワークを使うようになったり、時代の流れにのって、IOSやAndroidのアプリの開発もやるようになりました。

会社の成長に合わせて、自分の技術力も成長していけたような感じです。
成長痛のようなものは色々とありましたが。。

成長痛の例として、1つの案件を取り上げてみたいと思います。
cakephpを使ったWEBシステムの開発案件で、単純に「今まで扱ってきた案件より規模が大きかった」ことが痛い目にあう原因でした。

ちょっとした開発なら割と早くこなせるようになってきていて、さらにフレームワークとしてcakephpを学んだことで、「なんでも開発してやる!」と調子に乗っていた頃だと思います。
「今までの開発案件は全て小規模だった」ということも知らず、当然、もっと大きい規模の開発がどういったものも全く知らない状態です。

「とにかく早く実装して驚かしてやる!」ぐらいの気持ちで開発に着手したんだと思います。
ところが、開発の中盤になってくると、どんどん開発スピードが落ちていってしまい、バグも頻発するようになってしまいます。
「修正依頼を受けて、修正すると、またどこか違うところで問題が起きてしまう」といった、まさに失敗プロジェクトの典型例のような感じでした。

この記事を書くために、昔のことを色々掘り起こしていたのですが、この案件のメールのやり取りが残っていました。
今見ても、自然と体が熱くなってきて汗が出てくるぐらいなので、当時はかなりきつかったと思います。

失敗してしまった原因は、「メンテナブルなコードを書く」という意識の欠如でした。
いわゆるMVCフレームワークにおける、典型的なアンチパターンの「fat controller」をやってしまっていました。
何がいけなかったのか、ネットで記事を漁っていたところ、「fat controller」に関する記事を見つけ、「まさにこれだ!」と思ったのを覚えています。

こういった痛い目を見ながら、周りの方に迷惑をかけながら、少しずつ成長していった時代でした。

充実度

とても高かったと思います。
今までのエンジニア人生の中でもピークだったと言えると思います。
最後の方だけしぼんでいきましたが、まあ辞める前はそんなもんですよね。

なぜ高かったかというと、

  • エンジニア一人なので、とても重宝されていた
  • 全てが新鮮
  • 会社の成長に合わせて、自分も成長できていると強く実感できていた
  • IT業界自体がキラキラしているように感じていて、自分のその中に入っているという感覚

周りから尊重されていて、全てが新鮮で、さらに成長も強く実感できている。
充実度の観点で言うと文句なしの環境じゃないでしょうか。

あと2010年代の前半はIT業界がとてもキラキラとして魅力的に見えてました。
Twitter、Facebook, Apple, Gooleなどなど。。

これが「自分が若かったからすごく輝いて見えていて、周りの人は割と冷めて見ていたのか」、「実際に今よりも輝いていたのか」はよくわかりませんが、
勘違いでもいいから、そういった輝きの中にいれたと思えたのは、人生の中で貴重な体験だったような気がします。感謝。

技術力

初期の頃は、「ちょっとしたものが割と早く作れる」だけでしたが、最終的にはそこそこ成長できたように思います。
相変わらず視野が狭いので、成長という意味ではかなり遠回りをしていて、無駄な部分もかなり多かったと思います。
いいメンターと出会えていたら、かなりショートカットして成長できんだろうなあ。。と。

  • フレームワーク(cakephp)を使うようになった
    • 今までスクラッチで開発していたので、かなり感動した
    • 使えるようになっただけで、使いこなせてはいない。いわゆるフレームワークに使われているような状態
  • gitを使うようになった
    • 最後の方でプログラマーを雇ったときに必要性を感じで勉強
    • それまでは、編集したファイルをメモしておいて、リリースするときはメモを見ながらファイルをアップロードしていた
    • 一人だからなんとかやれてましたが、無知の恐ろしさを感じる
    • 苦労していた分、git, githubの凄さを身にしみて感じて、「これは世界が変わるなあ」と感動した
  • 良いコード、メンテナブルなコード、設計に関心を持つようになった
    • 痛い目にあって、「動けばOK!」から脱却した
    • 良いコードの例として、身近にあるフレームワークのコードを読む習慣がついた
    • リーダブルコード、コードコンプリートといった類の本を読みだしたり、web記事でもこの手のジャンルにアンテナを貼るようになった
  • IOS, Androidの開発ができるようになった
    • ちょっとした動くものを作れる程度
    • 扱える言語が増えるほど、新しい言語の習得は楽になってくると実感した
  • AWSを触りだす
    • 最低限のWEBアプリケーションを動作させることができる程度

こんな感じです。
色々できるようになったなあと思う一方で、最近の教育がしっかりしている会社なら数ヶ月ぐらいで学べることなのでは、とも思ってしまいます。
「苦労した分、深く学べた」と思いたいところですが、客観的に見てかなり無駄な時間もあっただろうなあと。
一言、「git使いなよ」とか「これ、fat controllerだよ」とか言ってもらえたら、どれだけ無駄な時間を過ごさずに済んだか。。

一方で、組織のなかで働いた経験をした今、振り返ってみて「エンジニア一人」の環境の良かった点は、「学ぶこと」が自然にできる環境だったところかなと思います。
学ぶことのメリットがわかりやすくて、大きすぎるんです。

たとえば、

  • IOSの開発を学ぶと、会社としてIOS開発というオプションが増える
  • 技術要素を深く学ぶと、
    • クライアントに説得力のある回答ができるようになり、信頼を得られ、直接的に仕事に繋がる
    • ハマることが減り、生産性を上げられる
  • 生産性を高める方法を学ぶと、そのまま会社としての開発生産性を上げられる

こんな感じです。
惰性でダメ人間だった自分でも、そこそこ使えるエンジニアになれたのは、こういった環境の中で過ごせたことが大きかったんじゃないかなと思います。

フリーランス: B社(2016年)

A社を辞めたあとの引き継ぎ期間として、半年ほどフリーランスとして契約を結ぶことになりました。
稼働として週1日ぐらいだったと思います。

生活費を稼がなくてはいけないので、次の仕事を探していたところ、「週3日働く」という働き方を推奨しているエージェントがあり、「これは今の自分にぴったりだ!」と思い申し込みました。
申し込むとすぐにB社を紹介してくれました。

B社は社員が100人以上いて、自社のサービスも複数持っていて、エンジニアも20人ぐらいいる感じです。
前のA社と比べると、会社の規模としてはかなり大きな会社です。
会社のHPもしっかりしていて、オフィスもキラキラしているように見えて、「こんな会社で働いてみたいな」と思い、すぐに応募しました。

結果、無事採用されました。
「充実度」の観点でいうと、「入りたいと思った会社に採用されたとき」が瞬間的には一番高いように思いますね。

仕事内容としては、webシステムの開発、保守です。
週3日の稼働で、結果としては半年ほどで辞めることになってしまいました。

充実度

低かったように思います。

今までは、唯一のエンジニアとして重宝されていたのが、「週3日だけ出勤するエンジニア」に変わるわけですから、組織から見た重要度は当然ガクッと下がりますよね。
技術的な面は評価していただけていて、色々と親切に対応していただけましたが、やっぱりこの落差は大きかったように思います。

たとえば、プロジェクトの重要な話し合いは社員間で行われて、決まったことの一部だけシェアされるような感じです。
立場的には当然の扱いですが、「ゲスト感が強く、プロジェクトにコミットできていない」と感じてしまっていました。

週3日は働くのは、役割に徹する形で、色々と割り切ってやらないといけないんだなと思い、次は社員としてフルコミットできる環境で働きたいなと思いました。

技術力

半年ほどの期間なので、成長した部分はあまりなかったと思います。
自分以外のエンジニアと多く接することができ、割と評価していただけることが多かったので、「今まで学んできたことは間違いじゃなかったんだな」と少し自信を持つことができました。

正社員: C社(2016~2017年)

週3日の稼働を経験したことで、次はフルコミットできる環境がいいなと思い、正社員としての仕事をエージェント経由で探し始めました。
そこで紹介していただいたのがC社です。

C社は当時、社員は100名ちょっとの急成長中の会社で、B社よりさらにキラキラしているように見えました。
技術的にも優れていて、「ぜひ働いてみたい!」と思いました。

「ここで通用したらエンジニアとしてかなり自信が持てる」と思い、入社後3ヶ月ぐらいはかなり張り切っていたように思います。
技術スタック的に新しく触れるものが多かったので、帰った後も、土日も技術本を読んだりして勉強していました。
ちょっとしたタスクでも、ただ作業をするだけじゃなくて、対応箇所の周辺のコードを読んで「少しでもプロジェクトへの理解度を上げていこう」と取り組んでいました。

こうした努力の結果かどうかはわかりませんが、信頼関係を築くことができ、1年半という短い期間にはなってしまいましたが、色々なプロジェクトを任せていただけるようになりました。
評価していただいた点で、自分にとって意外なところだったのは、
「ただ開発するだけじゃなくて、色々意見を言ったり聞いたりして、物事を進めていくという姿勢」だったように思います。
これは自分の経歴の中で自然と培われたもので、それが会社の状況とフィットして、上手く機能したのかなと思います。

充実度

前半は結構高かったように思います。
「この環境で通用するように頑張ろう!」と張り切っていたこともあり、色々と成長も実感できていました。
成長が実感できていると充実度は高いですね。

また、最初に配属されたプロジェクトが、いわゆるスタートアップ的なわちゃわちゃしている状態だったので、自分の経歴とフィットして、納得感を持って仕事ができている状態でした。
プロジェクトとして色々と整理はされていませんが、ステークホルダーと直接話しながら、物事を進めていくような環境です。

前半張り切っていた分、後半はしぼんでいってしまったような気がします。
1年ぐらいで環境に慣れてしまって、「成長を実感することでの充実感」は薄くなっていきました。

意欲的に関わっていたプロジェクトがひと段落したところで、次に取り組むことが見えず、約1年半で辞めることになりました。

技術力

かなり色々な技術スタックに触れることができました。
触れただけで、それぞれ深く理解できたかというと怪しいですが、実運用を通して、それぞれの技術スタックの役割や特色を理解できたのはありがたかったです。

WEBのフレームワークとしては、symfonyとrailsを経験できました。
スクラッチでECサイトを作ったことから始まり、cakephp、symfony、railsと3つのフレームワークを経験したことで、webのバックエンドの開発はそこそこ自信を持てるようになりました。
フレームワークに使われるのでなく、「フレームワークの特色を把握して、プロジェクトに応じて活用する」ことができるようになったと思います。

インフラ周りの技術としては、embulk, docker, aws, ansible, terraformあたりに触れました。
それぞれの理解度はそれほど高くないですが、役割や特色は運用を通して把握することができたので、必要に応じて調べながら活用することができるレベルになったと思います。

フリーランス ダブルワーク: C社、D社(2018年)

C社を辞めたとき、次のことは考えていなかったので、3ヶ月ほど仕事をすることなく、のんびり過ごしていました。
30歳ぐらいですね。だいぶ現在に近づいてきました。

この頃辺りから、がむしゃらに、突き動かされるように行動できなくなり、人生に対して迷いが生まれてきたような気がします。
原因としては、、

  • 20代の頃のような、わかりやすい成長を感じることが難しくなったきた
  • IT業界自体が前よりもキラキラ見えなくなってきた
  • そこそこ自信が持てるようになったことで、「不安を解消すること」がモチベーションになりにくくなった
  • 承認欲求もだいぶ薄れてきた(たぶん)

こんな感じでしょうか。
一言でいうと、「飽きてしまった」と言えるでしょうか。
入りたいと思うような会社もなく、向かいたい方向性(マネージメントやテックリードのような)も特に見えないような感じでした。

3ヶ月ぐらいのんびりした後、特に結論は出なかったので、前と同じように週3稼働のエージェントで仕事を探しました。
単に「週5働くのは嫌だな」という消極的な理由だったと思います。

そこで、紹介していただいたのがD社です。
D社はメンバーが10名ぐらいのスタートアップです。
メンバーも経験豊かな方が多く、大人のスタートアップというような感じです。

事業内容に少し興味が持てたのと、人が魅力的そうに見えたので応募したところ、無事、採用していただけました。

D社に応募したのと同じタイミングで、C社から「また手伝って欲しい」と連絡が来ました。
「しばらく週3でのんびり働こう」と思っていたのが、急に「週6、2社で働く」という状況になってしまいました。
そもそも「週3でのんびり働こう」と思ったのも何か意思があって決めたことではなかったのと、C社が提示してくれた条件がよかったので、受け入れた形です。

前のB社での経験で、「週3稼働は難しい」と思っていました。
難しいと思っているからこそ、「2社とも週3勤務でちゃんと貢献する」ということを2018年の個人的な目標に設定しました。
なんの脈絡もない目標で、誰に言うわけでもなかったですが、1年という短い期間ならモチベーションとして割と機能しました。

週6でのダブルワークは思っていたよりもハードで、プログラミングしようとすると頭がズキっと痛むようになったり、もともと食生活が良くなったこともあり、年末辺りは体調を崩しがちになってしまいました。

充実度

前のB社と同じような理由で、どうしてもゲスト感が強くなってしまい、充実感は低かったと思います。
一方で、報酬は一番高く貰えた年で、のちの個人活動をするための貯金を蓄えることができました。
ありがとうございます。

技術力

C社は前に取り組んでいたプロジェクトの保守、引き継ぎを行なっていた感じなので、特に新しく学べたことはなかったように思います。

D社で扱った技術スタックは

  • fuelphp
  • IOS, Android
  • Vue.js
    といった感じです。

fuelphpはいわゆる流行りのフレームワークではなく、機能的にも、エコシステム的にも、色々と見劣りするところがあると思います。
一方で、「薄いフレームワークで理解がしやすく、色々拡張することもできる」といった面もあり、思いのほか手に馴染んで、割と好きになりました。
(今、自ら採用しようとは思いませんが。)

IOSとAndroidは「ちょっとしたものが作れる」程度だったスキルを少し補強することができたかなと思います。

フリーランス: D社(2019年)

なんとか「2社とも週3勤務でちゃんと貢献する」という目標は達成できましたが、体力的に「この働き方は続けられない」と思い、
2018年いっぱいでC社の仕事を辞め、2019年はD社に集中して、週5で働くことにしました。

D社に集中したことで、自分の集大成だと思えるようなプロジェクトを1つ完遂させることができました。
いわゆるアジャイル的なプロジェクトへの取り組み方や、対応できる技術スタックの幅広さなど、自分が経験してきたことを全て活かせたような感覚で、
「自分がいたからこそリリースできた!」のような傲慢なことを思ってしまうほどでした。

一方で、食生活を改善しなかったこともあり、体調は相変わらず不安定でした。
集大成と思えるようなプロジェクトを終えたことによる燃え尽き感もあり、さらに体調が不安定ということで、8月で辞めることになりました。

やりきれたこともありましたが、一方で色々とやり残したこともあるなかで、主に体調不良が理由で離れる形になってしまい、申し訳ない気持ちが強いです。。

充実度

自分の力が出しきれているという点では充実度は高かったです。
とにかくやることがいっぱいあって、それを捌いているという感じで、こういった状態は「仕事をしている感」を感じやすくて、まあ心地よさはあるなあという感じです。

一方で、自分がやった仕事によって直接的に業績が良くなるような甘い世界ではなく、
「色々やっているけど、意味がないことも多くやってしまっているのではないか」とか「一見貢献できているようで、実はあまり貢献できていないんじゃないだろうか」とか思ってしまうこともありました。

「取り組むべき課題をしっかりと定める」ことの難易度が高すぎるので、こういったモヤモヤ感を完全に払拭することはできないんだろうなあと思いますが、
コミュニケーションの取り方次第で改善できる点もあると思うので、この辺りは結構反省することがあるなあと思っています。

週3稼働のゲスト感が強いスタートで、コアメンバーとの事業への思いや知識の蓄積の壁を感じていたように思います。
壁を感じていたことにより、それぞれのタスクに対して「どんな意味があるのか」や「どういった経緯があるのか」といったことを考えることを諦めてしまっていた気がします。

「割り切って考えることを諦めて、無責任に質問しまくる」か「素直に壁を感じていることを共有して、少しでも意味を理解して取り組みたいと訴えるか」どうなんでしょうね。。
現実的にある程度の割り切りは必要な気がしていますが、この辺りはまだ全然消化できていません。

技術力

2018年のところに書いたので省略。

個人開発(2020年)

2019年の8月にD社をやめて、年末まで仕事をせずのんびり過ごしていました。
体調が不安定だったので少し療養が必要だったのと、相変わらず人生の迷子になっている感じで、次にやることが見えなかったからです。

少し重たく聞こえてしまうかもしれませんが、「真剣に悩んでいる」という感じではなく、
「仕事をしなくても日々幸せに暮らせるんだなあ」という感じでのんびり過ごしていました。
体調も食生活を見直すことによって、だいぶ改善してきました。

この間に色々人生に関する本を読んでいました。
その中で出会った本が森博嗣の 面白いとは何か? 面白く生きるには? でした。

森博嗣は元々好きだったのですが、この本の内容が自分の置かれているシチュエーションに重なり、今後の生き方の方向性を見出すきっかけを与えてくれたような気がします。

以下、本文から一部引用します:

人生には、「面白さ」が必要である。
というよりも、生きることが「面白い」ことを探す旅だといっても良いだろう。

「面白いことがない」という状況は、「面白いことが思いつけない」状況だ、ということです。
そして、思いつかなくなってしまったのは、面白さを他者から与えられたり、売っている面白さ買ったりといった生活が続いたからでしょう。
与えられたものや、買ったものは、一時的には面白くても、いずれ厭きてしまいます。
自分で思いついたものであれば、考えて、思いつく過程でさらに別のことを連想し、つぎつぎと面白さが展開します。
その違いに気づけば、与えられるもの、買えるものでは不充分だとわかるはずです。

そんなときに、生きる希望となるものは、やはり「面白さ」である。そのことを覚えておこう。
辛いときこそ、「面白さ」を探すことだ。それを忘れないように。
「面白さ」は、最初は小さい。しかし、育てることで大きくなる。
「面白い」と思えるものを大事にして、磨きをかけることが、これまた「面白い」のである。

自分のエンジニア人生を振り返ってみると、「スキル」や「効率」のようなものに囚われてしまっていて、「面白さ」を見失ってしまっているように思いました。
まあ、仕事として「スキル」や「効率」に向き合うのは自然で、むしろ正しい姿勢だとも思います。

ただ、「スキル」や「効率」に注力する場合、先にある「欲しいもの」がないと虚しくなってしまうんだと思います。
解りやすいところでいうと、地位、名声、お金。
「人の役に立ちたい」や「ゆとりのある生活」といった抽象的なものも「欲しいもの」になり得るのかなと思います。

ということで、「培ったスキルでお金と自由を得ることで、仕事以外の部分で「面白さ」を育てる」といった次の生き方の方針がぼんやりと見えてきました。
完全に方針を見失っていたので、ぼんやりとでも方針が見えてきたことで、ずいぶん楽になった気がします。

前置きが長くなってしまいましたが、自由とお金を得る方法として、個人開発にチャンレンジしてみることにしました。
個人開発に関して何も解らない状態からのスタートだったので、2020年の目標として「1円でもいいから稼ぐ」というかなりハードルを下げた設定にしてみました。

結果、2020年の活動で、計7万円稼ぐことができました。
目標の7万倍の達成は凄いですが、年収7万円です。少ないですね。

活動内容としては大きく分けて、「プロダクトを売る」と「情報を売る」の2つを行いました。
「プロダクトを売る活動」はIntelliJのプラグインを開発しまして、売り上げの主な部分はこれが占めています。
こちらの記事 に作ったものの紹介や経緯などを書きました。

「情報を売る活動」は、今年新しくできた Zenn というプラットフォームで活動をしています。
まだ始めたばかりですが、下記のようなアウトプットをしました。

「OSSからRailsをゆったり学ぶ」というコンセプトの本の試作品を公開しました!

個人開発の現時点の手応えとしては、「とりあえず何かしら形にして公開すれば、見てくれる人はいるんだなあ」と思う一方で、「生活していけるレベルで稼ぐのはかなり大変だな」と感じています。

充実度

今までの生活とかなり違うので評価が難しいですが、割と高かったように思います。
生活費さえ稼げれば、この生活を続けたいなと思えました。

人間関係によって得られる刺激は一切なくなりましたが、代わりに、「自分で生活を作っていく」面白さを得たような感じです。
たとえば、「今週は午前中に3時間だけ集中して作業して、午後はのんびり過ごそう」とか、色々な生活スタイルをかなり自由に試すことができます。

一方で、難しさを感じることもありました。
今までは、タスクをこなしていれば簡単に「仕事をしてる感」を感じることができ、手軽に充実感を得られていました。
個人活動の生活でも、開発タスクをこなしていくプロセスは、前と変わらず心地よく過ごすことができていました。

しかし、そもそもの課題設定や、タスクへの落とし込み、タスク優先順位の設定、は難しくて、納得感を持って「できた!」と思えることはほとんどなかったように思います。
単純に慣れていないのか、頭の使い方が違うのに切り替えられていないのか、原因はわかりませんが、常に「今取り組むタスクは本当にこれでいいんだろうか?」というような思いを持ってしまっていました。

スタートアップの経験が長いので、いわゆる雇われの評価志向には染まっていないと思っていたのですが、結局は雇われの身だったわけで、評価志向が強かったんだなと気づけされました。

評価志向というよくわからない言葉を使ってみましたが、たとえば、
「週に1時間しか使わなくても成果があれば良し」と素直に思えれば、評価志向ではなく、成果志向になっている、と言えるでしょうか。
なんとなく「毎日最低6時間ぐらいは作業しないとダメだな」とか、「今日は10時間作業したから頑張った!」とか、時間や労働量で評価してしまうのが評価志向という感じです。

この評価志向に染まっていると楽で快適なのですが、実際に成果を出さなければいけない状況に置かれると、全く機能しない考え方だなと思いました。
簡単に「仕事をした感」が得られてしまうので、「成果に対してちゃんと向き合う」という大変だけど重要な部分をおざなりにしてしまうんです。

この評価志向の考え方は、かなり根本に染み付いてしまっているので、「個人活動を続けていくのであれば払拭しないと」と思っています。

技術力

IntelliJはJavaで開発されているので、Javaと、IntelliJ Plugin SDKについて学びました。
まあニッチなスキルですが、少し抽象化すると、
「ドキュメントなどの情報が少ない環境で、主にコードを読むことで開発環境を理解して、ある程度の規模のシステムが開発できた」
という感じでしょうか。

新しい技術を身に付けることで得られる刺激は減ってきていますが、「技術を学ぶことで、動くものが作れた」ときの喜びや面白さは、まだ感じることができると実感しました。

振り返ってみて

一ヶ月前のこともあまり覚えていないような記憶力で、「13年を振り返る」という無謀なことをしたので、実際の当時の感覚と違って、かなり的外れのことを書いてしまっているかもしれません。
今までも、節目節目でぼんやりとエンジニア人生を振り返ったりはしていましたが、ここまでちゃんと振り返ってみたのは初めてでした。

こういった機会を与えてくれた エンジニアと人生コミュニティ には感謝です!
このコミュニティには、個人活動で成果が見えずに悶々としている中、刺激が欲しくて「えいや!」と入ってみた感じでした。
入ってしまってから、コミュニティに入ってコミュニケーションを楽しめるほどの社交性を持っていなかったことに気づき、どうしたものかと思っている日々ですが、
このようなアドベントカレンダーをやってみるきっかけを与えてもらましたし、slackを眺めているだけでもかなり刺激をいただけるので、素直に入ってみて良かったなと思っています。

エンジニア人生を振り返ってみたことで、何か新しい方針が見えてくるわけでも、個人活動の成果が上がるわけでもないので、また現実と向き合っていく日々に戻りますが、
「まあこんな人がいても良いよね」というゆるい感じで、色々と活動をしていけたらと思っています。
最後まで読んでいただきありがとうございました!

明日の記事はKawamata Ryoさんです!お楽しみに!

この記事に贈られたバッジ