この文章はなにか
- 振り返り半分、周りとの期待値コントロールのための文章です
- 自分の経歴は、2016 年に新卒で Web 系の会社に入り、業務プログラマ歴は 5 年目です
- 学部文系 → 大学院修士(技術経営) → Web 系の会社(2 年) → スタートアップ という経歴です
得意・不得意
得意なもの
- スタートアップの環境でスピーディにプロダクト開発を行うことが得意です。目安、初期リリースまで 2-6 週間程度で実装しています(今の環境だと)
- フロントエンド、サーバー、インフラまで比較的ひろく一人で実装しています
- 技術選定として、なるべくプロダクトのリリースが速くなるように選定をしています。
- SaaS(いまでいうところの NoCode)を積極的につかっています
- 新しめの技術を試して、積極的に採用する傾向にあります
- ビジネス周りの話が得意です
- 大学院で MOT をやっていました。MBA でよくでてくるような知識は大体わかるつもりです。
- 自分の脳内の配分としては、ビジネスと開発半々です
- 自分のバリューは、プログラミングとビジネス企画をシームレスに行えるというところにあり、双方を行える環境であれば価値を発揮しやすいです。
苦手なもの
- ずば抜けた高い専門性はありません。ゼネラリストです。
- 自分は基本的に非常に飽き性です。一つのことがらに特化して専門性を磨くことは性にあっていません。
- 上記に付随して、自分のスキル振りは色々なところをつまみ食いする形式なので、それ専門にやっている人には太刀打ちできないと思います。
- 大規模サービスの開発
- 大規模なトラフィックをさばくような経験はしたことがないです。
- 大規模なチーム開発を経験したことがないです。
- コンピューターサイエンスの知識はあまりないです
- CS 関連の学部を出ている訳ではないのでそのあたりの知識は乏しいです
- ここ 1 年位のうちに独学をはじめて、何冊か教科書を読み通したというレベルです
スキル(技術)
- 自分のスキル配分は、サーバーサイド : フロント : インフラ、その他 とすると、5 : 3 : 2 くらいです。
- 色々なものをつまみ食いをしているので一つ一つのスキルを見ると、他の人よりも劣っていると思います
- OSS 活動などは、あまりできていません。たまにバグを見つけて issue に報告するレベルです。
- 5 点満点で自己評価でどのくらい得意なのか点数を振りました。
サーバーサイド開発
Ruby(4.5/5)
- できる
- サーバーサイド開発で一番慣れているのは Ruby on Rails です。
- リファクタリングをしながらコードを書くことが出来ます。自分なりに設計を分割できます。
- API 開発は REST, GraphQL で行えます
- Everyday Rails にあるようなテストは書けます。
- メタプログラミングをつかって、Ruby らしいハックをすることもできますが、あまりやりません
- 継承は使わず composition で実装します(サンディメッツ本)
- 開発スピードがほしいときや、特殊な要件がないときは Ruby を選定します。
- できない
- gem を作ったりするほど精通しているわけではないです
- 大人数で開発したことはないので、Rails の闇をそれほど見ていません
Golang(3.5/5)
- できる
- net/http を用いた REST API, gqlgen をつかって GraphQL API を実装できます
- GAE/Go を用いて、なるべくスケーラブルなアプリケーションを書けます
- 型がないと怖いとき、スケーラビリティがほしいときだと Ruby よりも Go を選定します
- できない
- 実際のところそれほど実務経験はありません。歴としては 1 年で、これまでに 2 つ Go でサーバーを書きました。
- 大規模なマイクロサービスは経験がありません
- CLI ツールはあまり作ったことがないです
- Go は独学、かつ我流です。自分なりには Go らしく書いているつもりですが、そうでないかもしれません。
Node(3.5/5)
- できる
- 小規模なアプリケーションや、FaaS で実行できる程度のサーバーサイドは Node.js で実装します
- ロギング、HTTP リクエストのパースなど普通の用途を普通に実装できます
- できない
- API サーバーの実装はできますが、SSR の実装などはやったことはないです(Next.js に頼り切り)
Headless CMS(3.5/5)
- できる
- メディア系のサービスのバックエンドは最終的に Rails で実装することが多いですが、初期リリースまでは Contentful をつかってフロントエンドのみ書いて、要件が出切るのを待つのが多いです。その後上記のどれかでバックエンドを作り直します。
- Contentful, DatoCMS などを使いわけることができます
- 特に考えずにサクサク実装できます
- Headless CMS からデータを export して、捨てることも何度かやっています
- できない
- Headless CMS は捨てる前提で使っているので、長期に渡る運用をすることはしたことがないです。
フロントエンド
TypeScript(3.5/5)
- できる
- 人並み程度には書けると思います
- 必要な型パズルをググりながらコピペしてプロジェクトに導入できます
- 厳格ではない tsconfig、ゆるい運用で 100%のコードベースを TS で構築することができます
- できない
- バージョンアップごとに言語仕様の変化を追ったりはしていません
- 言語仕様について詳細を知っているわけではありません
- ゼロから型パズルをスクラッチすることはできません
- any 不許可など厳しい制約ではかけません
webpack/babel(3.0/5)
- できる
- webpack の設定を適宜、Web 上で公開されているものをベースに修正しつつ、プロジェクトごとに作成することができます
- 適度にググりながらプロジェクトに必要な babel や eslint などの設定をすることができます。
- できない
- webpack の詳しい仕様はよく知りません
- babel の詳しい仕組みなどはしりません。plugin なども書けません。
React(4.0/5)
- できる
- Figma などで事前に作成されているデザインからピクセル単位で合わせて画面を起こすことが出来ます
- Atomic Design の考え方に従ってコンポーネントを分割、整理できます
- emotion, styled-components などを利用して, CSS in JS に寄せて実装できます
- Next.js をつかって amp 対応ありのサービスを実装することができます
- Relay や Apollo を利用して GraphQL API を利用した SPA を実装できます(基本的に Relay ユーザー)
- amp 対応できます(このブログも Next.js を用いた amp です)
- hooks は普通に扱えます
- 基本的に hooks + context で状態管理しつつ、必要なところで useReducer をつかって redux のような実装をできます
- できない
- デザインは苦手です
- 複雑なアニメーションは実装できません
- redux をあまり積極的に採用していません。
- 設計論を自分で展開できるほどに詳しくはありません
- redux-thunk は使いましたが、redux-saga はわかりません
- hooks 時代のパフォーマンスチューニングはよくわかってないです
Vue(2.0/5)
- できる
- Rails に入れてそこそこ運用したことがあります
- できない
インフラ
GCP(3.0/5)
- できる
- GAE, GCE などはわかります
- Firebase まわりなど
- Firestore
- Firebase Authentication
- Cloud Messaging
- メッセージブローカー周り(Cloud PubSub)
- BigQuery でログ基盤の作成など
- Monitoring での監視
- Cloud Run で FaaS 実行など
- コスト削減など
- できない
- GKE, k8s まわりは運用で触ったことはないです
- マネージドサービス以外で、MySQL や Redis, ElasticSearch など運用したことがないです
AWS(2.5/5)
- できる
- EC2, ネットワーク周りの設定、ElasticCache, ElasticBeanstalk, ALB, Cloudfront, S3, Lambda, APIGateway, SQS など(主に前職のときの経験)
- できない
その他(時間があれば追記します)
アプリ
- Flutter(3.0/5)
- 2 ヶ月くらい触ってそれなりのものは作れるようになりました
- provider パッケージをつかいつつ、ベストプラクティスに従って作れています(おそらく)
- React Native(3.5/5)
- 半年くらい触っていました
- React とあまり変わらない印象です
- Expo で開始 → eject しました
- ネイティブ周りが顔を出すとあまり手がでません
競技プログラミング/アルゴリズム(2/5)
- 最近はじめました
- C++を少しずつやっています
- leetcode
- atcoder
- codeforces