システム設計のまとめリポジトリ作ったとか師匠が欲しいとか色々

社会人1年目も終わろうかという感じなのでちょっと日曜日の余暇を利用して近況報告だったり最近感じた事なんかをダラダラ書いてみました。

awesome-software-design-jaというリポジトリを作りました

概要

システム設計やアーキテクチャの議論をする時に

QiitaのXXっていう記事読んどいて〜

とか

YY出版社のZZっていう本が良書だよ!

と、アドバイスをさせて頂くことが重なったので一念発起して自分がこれまでシステム設計やアーキテクチャを考える上で参考になった記事や書籍をまとめたリポジトリを作成しました。

github.com

作ってみた感想

Twitterで投稿した所、予想以上の反響を頂き素直に嬉しく思いました!
特に以前から作る構想があったわけではなく金曜日の仕事終わりにふと「作るか〜」というくらいの気持ちでザーッと挙げ連ねたという感じです。自分の持っている知識の割合がなんとなく可視化されて面白かったです。

 

サービスを開発する時に思うこと

いくつかのサービスの立ち上げを経験して、まず自分がエンジニアとして一人前にならないとどうにもならないな〜と痛感しました。作れるサービスって開発に携わるエンジニアの技術力によると思っていて。もちろん技術力が必須ではないサービス(コンサルとかD2Cとか)もありますよ。ただ自分がこれまで携わってきたサービスってエンジニアがまずコードを書いてサービスのPoCを作って、って感じでした。そうなるともうサービスをどれだけ質・スピードを高くしながら作れるかはエンジニアの技術力次第なんですよね・・・。1年前の自分よりは多少視野が広がったかもしれない、とは思いつつも根本的な部分では周りと比較してまるでダメだなと痛感しています。こればっかりは自分の実力・練習不足という他なく猛省しています。

ただ最近友人から「師匠がいないのも停滞している原因ではないか」という指摘を受けました。自分はエンジニア人生の大半を文字通り一人で過ごしてきました。レビューを受けたことはほとんどないですし、技術的な話も気軽にできる人は周りにほとんどいないです。まあ、これに関しては自分の社交性の低さとか徳の低さとかもっと他の部分に原因があるのは自覚していますw。ただ自分にはエンジニアの知り合いがいないので身近に師匠になってくださる方がいなく・・・。

とにかく師匠が欲しいです。自分のどこが具体的に駄目で、どう強くなるのが良いのか。もちろん本当に強い人は独学で強くなれるのは知っています。ただあれ、完全に生存者バイアスというか、再現性が皆無で一種のギフトだと思うんですよね・・・。もちろんその裏にはものすごい努力があるもの知ってはいるのですが、自分程度の実力だとそもそも自力で突破できる壁なんて全然ないんですよね。けどやるしかないのでなんとか根性で勉強はしているつもりですが、目標としている方々や活躍している同世代のエンジニアを見ると「本当に彼らに追いつけるのだろうか・・・」と心が折れそうになります。ウサギと亀の話ではないですが、現実のウサギはトップスピードのまま走り続けますし止まってはくれないです。亀の僕は差が広がっていくのをマザマザと見せつけられて終わる、みたいな感じです。師匠募集しています、っていって募集が来るわけないのは分かってるんですが、皆さんはどうやって師匠を見つけましたか?何卒迷えるエンジニアに1つアドバイスをください・・・。

さて、若干視点を変えて、サービスを開発する時って一人じゃ限界があります。となるとビジネスサイドの人間とやりとりをしてどうやったらリリースまでこぎつけられるか、という話し合いをします。戦略レベルの話ですね。技術選定だったり、アーキテクチャ議論だったり、採用の話だったり、納期だったり。ただ最近ライティングソフトウェアという本を読み始めて(まだ序章ですが)、戦略に対する認識が変わりました。

ライティングソフトウェアでは著者がザ・メソッドというプロジェクトを正しく進めるためのメソッドを提唱しています。そのザ・メソッドはシステムデザインとプロジェクトデザインから成り立ち、前者がシステム設計やアーキテクチャに関するデザインで後者がプロジェクトを進める上での原則をまとめたものです。そしてシステム構築においてシステムデザインよりもプロジェクトデザインの方がシステム構築の可否を握る割合が多いと主張しています(確かそんな主張だったはず・・・)。これは確かにそうだな〜と思いました。完璧なアーキを提唱・実行したところで無謀な納期、アテのない採用、足りない予算では勝てる戦も勝てません。ただそこらへんにも首を突っ込むとなると単なるプレーヤーとしてのエンジニアではなくCTOとして立ち振る舞う、ないし権限を委譲してもらう必要があり、それは一個人でできる範疇を大きく超えています。ただ、少しでも勝率を上げるためにはそういったエンジニアリング以外の部分の手綱も握った上で戦場に立つことが必要なのかな〜とか思いました。

 

最後に

タイトル考えるのが一番難しかったりしません?自分の場合書きたいことをテキトーにば〜っと書いて最後にタイトルを考えるので文章にピッタリのタイトルが思い浮かばないんですよね笑