はじめに
ゆとり世代の中野です。
エンジニアになって10年目なので振り返ります。
新卒でエンジニアとして就職した当時は1行もコードが書けない状態でした。
当時は会社に所属しなくても生きていける状態になるというを目指していました。
その後独学を続け現在はフリーランスでも特に食い扶持に困ることもなく生きていけてます。
今回の振り返りでは何に悩み苦しんだのか何を感じ考えていたのかゆるく書いていこうと思います。
悩みと苦悩
まず、正直に言うと技術に興味はないです。
この話をするとここ数年「絶対好きでしょ」と言われますが断言しておきます。
別に好きじゃないです。
これはエンジニアになって独学しはじめた頃から一切変っていません。
技術が楽しいというものではなく自分にとって技術はただの手段でしかないです。
ここにとても悩み苦しみました。周りのエンジニアを見ても「技術は楽しいものだ」と言います。
エンジニアなら「技術は好きでなければおかしい」と言う呪いに気づいたら蝕まれていました。
カンファレンスや勉強会など言っても技術が好きな人は多くいるが自分と同じく技術を手段として捉えている人たちはあまりカンファレンスで出会うことがなかったです。
なんとも言えない孤独感を常に抱えて技術と付き合ってきました。
長い時間はかかりましたが最近はそれが自分にとっての強みだと認識できるようになりました。
なぜ興味のない技術を勉強するのか
そもそもなぜ興味がない技術を勉強するのかという疑問を持たれるでしょう。
これに関してはシンプルに3つの理由があります。
1つ目はお給料が良いからです。
自分みたいな学歴のない人間でもこの業界は日本人の平均以上のお賃金が出ます。
2つ目が再現性があるです。
これは場合に依りますが完全に独自の技術だけでやっていますという会社さんはweb業界には少ないです。OSSベースで作られていることがあるのでどこに行っても知見をある程度流用できるので食い扶持に困らないというのがあります。(たまにやばいところあるけど)
3つ目がプロダクトを作りたいからです。
正確に言えばプロダクトを通してユーザに価値を提供したい。 これが自分の本命です。
このためだけにやってると言っても過言ではないです。
誰かを幸せにするプロダクトが作りたい
先ほど自分が技術を勉強しているのはプロダクトを作るためだと言いました。
しかし技術を学ぶだけでは持続性のあるプロダクトを作ることはできないことに気づきました。
ビジネスモデルやユーザやドメインの理解に始まりチーム作りに継続的改善の仕組み作りなど多岐に渡ります。 それらを繋ぎユーザに価値を届けるのが技術です。
あなたのそのプロダクトは誰になんの価値を届けるのですか。
ほとんどの議論でユーザを忘れています。
チームメンバーはユーザを見ていますか。
最後にユーザの体験について届ける価値について話し合ったのかいつですか。
すべてのロールはHRTを持ち合わせたスペシャリストだと思っています。
当たり前ですがどんどんコラボレーションしていくべきだと思っています。
それぞれのスペシャリストが見ている世界が異なることに異論はないです。
しかし、多くの現場では誰もユーザを見ていないのです。
これを自分はプロダクトの価値を届けるためのラストワンマイルだと考えています。 どんなに頭を捻ってどんなにいいコードを書いても誰に届けたいのかがわからないものはきっと届かない。 好きなあの子かもしれないし家族かもしれないし友達かもしれない。
常に誰に何を届けたいのか心の中心に置いておきたいものです。
そう、これが技術が興味ないのに技術を勉強している一番の理由です。
User Firstを言うのは簡単だが難しい
よく耳にする言葉でUser Firstというのがあります。 一言でいうとユーザのニーズや体験を最優先に考えるアプローチです。
しかしUser Firstという言葉を正しく使うことができているかは疑問です。
ビジネスサイドの方のいう User First = 早くリリースしろ
というのを何度も見てきました。
この時におざなりにされるのがいつだってDeveloperExperienceだということも。
DeveloperExperienceについて一言でいうと効率的に快適に開発できる状態です。
持論になるのですがDeveloperExperienceを無視した継続的なUser Firstの実現は不可能だと言えます。
一度だけ打ち上げ花火をあげることはできるでしょう。(多くの屍を作りながら)
しかしCI/CDもないテストもない設計もしていないないない尽くしの中どうやって市場の変化やユーザの要望そしてビジネスのピボットに対応していくのか教えてほしいです。
こうなってしまうと継続的な価値をユーザに提供することが難しいことは自明です。
これを失敗と呼ばずに何というのか自分にはわからないです。 こういうことを理解し先を見据えて適切な意思決定をするには技術に対する理解が必要になります。
さて、ここまでは「技術だけではプロダクトはできないが技術なしでプロダクトを作ることはできない」ということが伝えたくて書いてきました。 次は起きた変化などについてです。
10年間の変化
憧れ
昔は有名なエンジニアの方を憧れたりしていましたが最近は知見をありがとうございますという感謝だけになりました。
結局全ての発言は本人の意識無意識かかわらずどうしてもポジショントークは発生してしまうのと借り物の信念がいつのまにか自分の信念に変っていたのが大きな変化かもしれないです。 誰かに憧れるから自分の進むべき道を見つけることができたことで憧れることがなくなったと思います。
体力
20代は生き急いでたと思います。
特に前半から半ばにかけては命削りながら勉強してました。
21時に帰宅後23時から5時まで勉強して3時間睡眠とって出社するというのを数年してました。
冷静に振り返ってみるとなかなか狂ってたなぁと感じます。
その後も当たり前のように命を削るカードを切りながらやってたのですが最近思ったのです。
「あ、こんな生活をしていたら死んでしまう」と。 今の仕事が一段落したら人間らしい生活に戻そうと思います。
コミュニケーション
自分がエンジニアで勉強しはじめたときはいろんな人にマウント取られて笑われて馬鹿にされてたのを今でも覚えてますし正直今でも謝罪待ってます(普通にモラハラですよ)。 こういうコミュニケーションを取ってはいけないと未だにコミュニケーションにおける反面教師にしています。 特に苦しんだのはコンテクストの違いですね。
学生の頃は共通の話題などがありある程度ハイコンテクストなコミュニケーションが当たり前だったので突然ローコンテクストはかなりストレスを感じていたのを覚えています。 情報の非対称性やどうやったら伝えれるのか色々情報共有をコミュニケーションする上で考えることが多かったです。
コミュニティ
20代半ばまでは色々な勉強会に毎週行ってましたが最近はすっかり行かなくなりました。
理由は色々ありますがあとから見れるし敢えて現地で見る必要性を感じなくなったというのもあります。
当時はコミュニティにいる人だけが優秀だと思っていましたが優秀な人はたくさんコミュニティ外にもいることに気づいてから自然と熱が引きました。もしかしたらこの頃には徐々に自分の信念や価値観が形成されていたのかもしれません。
自己成長から育成へ
駆け出しエンジニアのメンターやってマインドや技術周りのフォローをしたりしていました。 20代前半の時に自分がもっとも必要としてたことを余すことなく伝えてフォローし今では全員エンジニアしているのでやってよかったと思います。
さすがにもうプライベートではやるつもりはないです。
結局成長するには2~3年ぐらいかかりますし。
技術スタックの変化
自分は結構特殊でエンジニアになった時から保守運用やリリース回りについて興味関心があったので言語そのものからというよりは当時はVagrantを使った仮想環境を用いてLinuxの使い方から入っていったタイプです。
今思えば何故…と思うのですが当時の自分にはそれがとても重要なことでした。
そこでwebサーバ建ててアプリケーション動かすようにするなんてことをやってました。
パッケージマネージャーの使い方を覚えたりしはじめたのもこの頃です。
そして初めて読んだOSSのコードはVagrantでした(phperなのに)。
シェルスクリプトを書きvimの設定ハマり各種rcをゴリゴリにカスタマイズしてメンテナビリティの壁にぶつかるなどして少しずつできることを増やしていきました。
そのあとはLaravelを使い始めていきました。
そんなこんなで2018年ごろにVueカンファレンスが国内で初めて開催されてフロントエンドの時代を強く感じました。
とはいえせっかく覚えた技術を簡単に手放せずにずるずると数年phperを続けることになります。
心の中では常にこんなことをしている場合じゃないという葛藤がありました。
転機は自分のプロダクトの技術選定をしている時にどうしてもReact(ReactNative)とTypescriptと対峙する必要がありようやくそこで腹をくくりました。
当時は非同期の概念や書き方の違い何が何がわからないのかわからないということもあり問題の切り分けも上手くできずに悶々としながらコンバートしていきました。 今ではphpを書く気起きないですね。
エンジニアリングの業務形態の変化
20代は会社員だったので正社員で自社サービス中心でした。
30代からはフリーランスに転身してSESや受託なども一通りやりました。
自分は完全にプロダクトの人間なんだなぁと強く再確認することができました。
HTMLとCSSについて
何もわからん
よくある間違い
◯◯のロールの人がいないから上手くいかないのではありません
経験が浅い組織は特定のロールがいないから上手くいっていないとロールに幻想を見ています。
多くの場合上手く行っていないのは組織内のパワーバランスはどうなっていますか。
最後に振り返りしたのはいつですか。
継続的な振り返りはできていますか。
今の組織の中に必ず原因があります。
◯◯のロールの人がいないは幻想です。
答えは外にありません。中にあります。
クソコードがお金を生んでいるのではありません
クソコードがお金を生んでいるは錯覚でお金を生んでいるのはロジックなだけでクソコードがお金を生んでるわけではないです。
別にクソコードではなくても綺麗なコードでもお金は生めます。
ユーザは機能やデザインを買いません
当たり前の話ですがユーザは機能やデザインを買っていません。
多くの方が勘違いしているのですが冷静に考えてほしいのです。
あなたは商品を吟味して購入や契約する時の意思決定は機能やデザインの有無ですか?
おそらく違うはずです。
そのサービスを通してどんな状態になれるのか。
その時どんな状態になりたいのかを機能と言っているだけに過ぎないのです。
機能ベースで話が進んでいる時それは一度冷静に考えたほうがいい時です。
一度立ち止まって深呼吸してみましょう。
全ての人が自分より優秀である
これは自分自身に常々言い聞かせていることです。 しかし、以下の特徴に当てはまる人からは迷わず逃げたほういいです。
- 人を管理したがる
- 進捗だけ気にしている
- 情報の後出しが多い
- 伝書鳩
- 不勉強
- 無理解
- 高圧的威圧的なコミュニケーション
さいごに
この10年間一切の変化がなかったのが技術に対する向き合い方です。
たぶんこの先もずっと技術を手段と捉えその先にいるユーザにどうやって価値を届け続けるのかについて自分は向き合い続けていくことになるんだろうなと感じています。
書きたいことは無限にあるので、きりないので呑みにでも行きましょう!
yutanakano
WEBエンジニア
大阪生まれのゆとり世代です
趣味はバイクでツーリングに行くこと
愛車は Ninja ZX-25R SE KRT EDITION
Expoでプロダクトを作っています