見出し画像

頭整理したい犬


※背景画像はchatGPTにお願いして作ってもらいました。

どうしてこの記事を書いたか?

この頃、やりたいことが多すぎて脳みそがバシャバシャしているので整理することが目的。

僕は人の役に立っている実感があまりない

僕は「人に喜ばれること」をしている人でありたい。
今はそうではないのか?
別に「いいえ」というわけではない。普通に感謝されることもある。
でも「全く満足してない」。
僕の仕事は現在、よくある求人票上の名称だと「バックエンドエンジニア」である。
パフォーマンスチューニング、ちゃんと相手のお気持ちを大事にしながら話を聞き出し、開発要件におとし、保守しやすくコードを整備し高速でデプロイまで漕ぎ着けることで、間接的にエンドユーザーの喜びに貢献している。

しかし、僕は人から「ありがとう助かった」とか「あなたがいてくれてよかった」とか「このプロダクト最高!君が作ったの!?ありがとう!」とか言われたい。

じゃあどうするかね?

改善の方向性を考えてみる。
まず目標は「人から感謝されるようなプロダクトをいくつも作り上げること」。
次に現状は「そんなプロダクトは1個も作ってない」ということである。
不足しているスキルセットは圧倒的にhtmlとcssのコーディングスキル(そんな自由自在にできないよ)、情報設計スキル(IAシンキングという本の文脈)、ユーザーインタビューしに行く勇気

課題は浮き彫りになった!ちょっと待てよ・・・?

僕は今どうしてLinuxカーネルをマシンにインストールしつつLinuxカーネルの本を読んだり、C言語やC++を学んだり、アルゴリズムとデータ構造、基本情報・応用情報相当の知識の勉強のし直しをしているのか?
理由は簡単。普通のソフトウェアエンジニアとはそれくらいの知識は知ってて当然の上で、問題解決にあたる職業だと思っているから。
こんな問題があります→解決する方向性をどうしよう?→プロトタイピング(割とマジモンのハリボテ)を見せに行く→お客さん候補とたくさん話して「これ買います。契約しますね。いつできますか?」と言わせるものが出てくるまで試す。
というのが割と一般的なmvp作成のセオリーだとは思うが(この辺りはバーニングニーズという単語で検索すると出てくる。)問題解決方法を考えるプロセスでソフトウェアエンジニアリングという側面からより良い案(当然そこにハマらず考えても良いが、得意技としてその人が持っている状態)を出すことに貢献できるのがソフトウェアエンジニアの1つの像ではなかろうか。さらにいうと、NetflixやYouTubeのようなグローバルに配信するサービスに成長していく過程で、それを支えられるのもまたソフトウェアエンジニアの1つの像ではなかろうか。
僕はその像2つを持つ人でありたい。

なんかモヤモヤがスッキリしてきた。

じゃあそうなるためには?

まず冷静に現状を確認しよう。
・僕はCS学士を持っているわけじゃないんだ。
・経験も、クラウドサービスとmvcフレームワークを用いたバックエンド開発くらいなんだ。
・知識だって、Linuxを改修してゲーム機に入れられるくらいの知識量はない。

じゃあできることはなんだ?
・クラウドサービスのドキュメントを読んで組み合わせて利用すること
・それらを糊付けするためにどうしたら良いかを考えられること

しかし
・特段速くないよね。
・ドキュメントを読む速度も遅いし、実装も納得いく形に落とすまで時間がかかるよね。
・これは僕の師匠的なエンジニアの言葉だけど「すごく遅くて品質が高いってのはなかなかない」。つまり君は今そういうレベルなんだ。
・基本情報、応用情報レベルの知識、それらを活かした問題解決の技能は君にあるかな?お世辞にもあるとは言えないよね?
・コーディング能力も特段高いわけじゃない。

大規模サービスを回したり、ソフトウェアエンジニアリングの観点から問題解決を提案していくには知識も技能も足りてない。
じゃあ勉強を続けないとダメだね。

mvp作成についてはどうだろう?
・一旦、自分が持つhtml,css,バックエンドエンジニアリングの技能で行くなら、webサービスを作ってデプロイするところまでならできそうだね。
よし。これはもう始めよう。

やること整理

像1

こんな問題があります→解決する方向性をどうしよう?→プロトタイピング(割とマジモンのハリボテ)を見せに行く→お客さん候補とたくさん話して「これ買います。契約しますね。いつできますか?」と言わせるものが出てくるまで試す。
というのが割と一般的なmvp作成のセオリーだとは思うが(この辺りはバーニングニーズという単語で検索すると出てくる。)問題解決方法を考えるプロセスでソフトウェアエンジニアリングという側面からより良い案(当然そこにハマらず考えても良いが、得意技としてその人が持っている状態)を出すことに貢献できるのがソフトウェアエンジニアの1つの像ではなかろうか。

再掲

現状:ソフトウェアエンジニアとしての技能がお世辞にもあるとは言えない。

とはいえ今動かないリスクもある。
1、webデザインのコーディング技能を成長させる環境がない状態で成長させるにはそれしかない。やらないと1年後また同じことを言っていることが確定している。
2、市場からのフィードバックや作ったことで更新される競合調査のアンテナは、(現状の自分のコネレベルだと)プロダクトをリリースしないと取得できない。つまり頼れる人がいないから自分を育てて持っていくしかない。

これだけで機会損失が重いので動くことにする。
具体的には
・アイデアを出す
・画面デザインを作成する(これは手法を考えてあるし、実際うまくできた)
・利用技術はRemix by TS、Vite、CSS Modulesで行く。apiサーバーもtsで行こうかなと思う。supabaseを利用予定だけど、あとで差し替えできるようインターフェースファイルを噛ませる予定。

像2

NetflixやYouTubeのようなグローバルに配信するサービスに成長していく過程で、それを支えられるのもまたソフトウェアエンジニアの1つの像ではなかろうか。

再掲

これからやること

・C言語に慣れるため下記を実施する
 ・「C言語によるアルゴリズム入門」を暗記する
 ・ソースコードで体感するネットワークの仕組みを暗記する
 ・ルーター自作でわかるパケットの流れを暗記する
・C++に慣れるため下記を実施する
 ・Modern C++チャレンジを暗記する
 ・Effective C++を暗記する
 ・C++ソフトウェア設計を暗記する
 ・Exceptional C++を暗記する
・将来Linuxを用いた大規模サーバー管理のため
 ・詳解システムパフォーマンスを暗記する
・基本情報、応用情報のテキストを暗記する(経営系の知識は読まない。会社作ったら資金繰りとPL,BS,CFをひたすら読む作業になるだろうからそっち系の方が良いとは思う)
ソフトウェアエンジニアの常識なるものを習得する
 ・CPUの作り方を読む
 ・マスタリングTCP/IPを暗記する
・データ構造とアルゴリズム
 ・これはセジウィックが個人的に読みやすくて欲しいんだけどバカ高くてまだ買えてない
・並行プログラミング入門を暗記指定理解する

戻ってきた自分向けの注意点:理解するために暗記する。暗記しようとして読むとお前は普段より理解が進むみたいだ。だから暗記するつもりで読んで実際に暗記してくれ。あと、挫けない方が数年後楽しいと思うから頑張って。

最後に

というわけで、なんか迷っていたらここに原点があるから戻ってこい俺。


この記事が気に入ったらサポートをしてみませんか?