❤️

異業種からWeb開発者としての生き延び

2020/11/24に公開2

現在、会社の技術横断組織のメンバー(主にフロントエンド担当)として技術支援(壁打ち的やレビュー)やエンジニアの評価制度・採用、組織を横断したエンジニアのコーチング・メンタリングなどエンジニア組織を良くするための課題解決にそこそこの裁量をもたせてもらって事業に携わらせてもらっています。

そんなことをしている私ですが、そもそも製薬業界(学位も薬学修士を修めています)から業界転職をしており、気がつけば6年ほど経っていたのと、最近は自分のキャリアについて聴かれることも増えたので一度、開発者目線で「どんなことを?どういうモチベーションで?こんなことになったんだっけ?」を少し振り返ってみようと思います。

※1. 今の自分の視点から振り返りつつ、またカッコでたびたびツッコミを入れながら書いていきますので、文体の時系列に違和感があるかもしれませんがなるべく書いている時の自然な気持ちを大事にしたいのでご了承くださいませ。

※2. 給与や待遇などももちろん当時から考慮していましたが(生きていく上では非常に重要)、あくまで開発者目線としての振り返りを軸としたい(いろいろなコンテキストを含めると文章が崩壊する)ので、あえて触れておりません。

※3. フロントエンドというよりWeb開発者としてどうやって来たかという視点が大きいのでフロントエンドの話はあまり厚くないです。

そもそもこの業界に来た経緯

この業界に来た理由としては結果からすると「背水の陣」に近いです。ただ、いろんなご縁があり、今はこう導かれたのかなとも思ったりもしています。

モノづくりの憧れ

薬学・製薬業界出身の私ですが、高校時代は美大・音大に進学をしたいと考えていました。今でも絵を描いたり作曲・器楽演奏(ピアノ・ファゴット)をライフワークとして20年以上続けており、当時の自分は「自分でモノを作ってそれによって対価を得て生活する」ことに憧れていました(完全に「若気の至り」でしたけどね)。

経済状況や親の支援の関係、美大・音大に進むことはその当時成らず、結果として次に興味があった薬学への道へ半ば後ろ髪を惹かれながら進学しました(薬学への興味は高校が SSH [Super Science High-School] 指定校だったことが大きいです)。

大学〜社会人になってからも「モノづくり」の憧れは燻っており、これは後の業界転職への動機にもなります。

体調不良と踏ん切り

大学院を経て社会人にはなったものの、大学院時代からあまり精神状態が良くなく(これは研究室がというより自分の理想と現実との乖離を素直に受け入れられなかったことに原因がありました。モラトリアムってやつですね。これ以上は助長になるので概略だけ)、リカバリーも満足にできない状態で社会人生活に突入しました。

中途半端な状態で仕事を行っていた結果、不眠症とパニック障害を併発するまで自分を追い込んでしまう状況に2年目ほどでなってしまいまして、当時は仕事中に息ができなくなってしまったり、希死念慮を払拭するためにお酒を大量に呑むことで毎日なんとか自我を維持するのに精一杯でした(睡眠導入剤とお酒をカクテルしていたり...(;´∀`)良い子は絶対マネしないでくださいね)。

「このまま今の生活をしていても、ただ自分に喰い潰されて終わってしまう」と考えた私は、なにかこうこのままダメになるくらいなら「モノづくり」できる仕事に挑戦しようというモチベーションになりました。つまりこの業界を降りようと。

ただ、お金も持っていない私の選択肢はそこまで多くなく、イラストや音楽関係の専門学校に通い直すことはほぼ皆無でした。

そんな時、当時絵描き仲間で比較的Web業界で仕事をする人(エンジニア、デザイナ)が多く「Web業界なんかどう?」なんて言ってくれることがあり、Webデザイン・プログラミングスクールならなんとか学費を捻出できることが知った私は、特に考えも無しに、ただ現状から脱出することだけを考えて、仕事をしながら土日にスクールに通い詰めました。

この時から「とりあえず現状の状態から脱してから後のことは考えれば良い」という楽観的な感覚と、「次の業界でも同じようなことを繰り返すんだったら死のう」みたいな極限的な感覚が自分の中に芽生え、今日までこの業界でなんとかやっていけた動力の原石みたいになっていました(自分自身を実験台にというか、研究しているときももっとこう大胆に踏ん切りついていれば良かったのですが、過ぎたことを悔やんでも仕方ないですね)。

Webデザイナとして仕事をするハズが。。。?!

社会人とスクールを行ったり来たりを半年ほど行い、なんとかWebデザイナとして制作会社に入り込んだ私ですが、今思うと奇想天外なことが連続していたなと。

Webを作るのって大変

Webデザイナとしての初日、半ば「デザイン(=クリエイティブ)がでるぞ」と生きこんで出社した仕事は予想外の内容でした。

「LAMP環境」なんて知らないで仕事してた

この業界での初日の仕事!

と別に初の仕事がなんだって話ですが、当時の自分としては衝撃的でした。デザイナで入ったはずが、さくらのレンタルサーバ上にLAMP環境を構築してWordPressを導入するのが初日やった仕事です(当時は専門用語も含め何も知らない形でとりあえず言われた指示通りにコンソールを弄ってました)。

Webデザイン・プログラミングスクールでは、主にWebデザインとHTML/CSS/JavaScriptの基礎でWebページを作ることをベースに勉強・習得した自分にとって「そもそもデザイナでもこんなことできないとダメなんだ。。。Web業界ヤバくない?」というファーストインプレッション。

その後、ちゃんとデザイン業務などはしていくようになるのですが、最初の現場は上流工程からデザイン、はたまたフロントエンドの実装+WordPressの構築・運用(WordPressのバージョン管理やPHPのバージョン上げ)まで一気通貫する仕事内容だったため、ずぶずぶとそして気づかぬうちにフロントエンド+αの世界に足を突っ込んでいくことになります。

はじめてのフロントエンド?

仕事を段々と熟していくうちに、ある作業がものすごく面倒くさいことに気づきます。CSSです。

現場はWordPressのオリジナルテーマをベースに案件によってカスタマイズしていたのですが、如何せん3000行超もあるCSSが全くどこに使われているかわからない(整理した結果2000行くらい使っていなかった)。毎回の作業でCSSを読みながら取捨選択するのは苦痛極まりない感じでした。

結果、もっとCSSを効率的にそして整理して書けないか?ということでAltCSS(Sass - Compass)に手を染め始めます。

効率化したい!

Sass、そもそも単語や利便性などは知っていたもののどう使うかから出発となります。当時Koalaでコンパイルできることは解っていたものの、何故かターミナル(Rubyのインストールやrbenvの設定など)から始める道を選んでしまいます(当時から「GUIはGUIがぶっ壊れたらAlt言語は使えなくなる」という勘があって、Gitに関してもターミナルでCLIつかって操作することを選んでいたり謎のこだわりがありました。結果としては今の仕事にはかなり役にたっているので良しとしています)。

これが地獄でして、.bashrc、.bash_profile等意味ワカランの状態で、ひたすら技術記事のソースをコピペしてを繰り返すもその日は動くんだけど、ターミナルを再起動すると動かない。。。(sourceコマンドやってなかったり、ShellScriptよくわかってなかっただけなんですが)みたいな当時は「(゚Д゚)ハァ?」みたいなことを3ヶ月やっていました。

月日が流れとりあえずSassを使いこなせるようになった私ですが、この3ヶ月間で解ったことといえば「技術記事のソースコードに疑問を持て」ということ。そして、「ソースコードで一体何がしたいのか」考えるきっかけにもつながってきます。これは後々効いてきまして、自身がエンジニアとして鞍替えした以降も徹底した行動原理になっています。

3ヶ月の長いトンネルを抜けた私は、デザイナでありながらもターミナルに全く抵抗がなくなり、次に当時β運用だったGulpを使ってCSS以外の実装の効率化に移っていきます。

(Gulpを使い始めたきっかけは、この業界に入る前から良くしてもらっていたエンジニアに「Gulp年末までに使えるようにならないと、忘年会してあげない」ということを言われ、それがとっても嫌だったというかなり意味のわからないモチベーションでした)

Gulp、Node.jsの環境構築からだったのですが、Rubyで鍛えられていた(?)自分にとってNode.jsの環境構築はこれと言って難しさを感じること無く、環境構築においてやんわりと自信を持ち始めます(その時の名残でnvmは今でもずっと使い続けています)。

その後、HTMLの実装効率化でEjsにも手を付け始めWebpack、Browserifyもほぼ同時期に取り入れることで、ローカル開発でのWordPressの実装(HTMLベースのモック)はかなりの工数削減ができました。CSS設計もこの時期にやっており、BEMを少し拡張した設計手法なども考えたりしていました。

事実、これらのおかげでデザインにも割と集中できるようになりましたが、次に自分の興味としては「WordPressローカルで動かせないんかな?」みたいなまたよくわからない方向にベクトルが行ってしまい、この時期からもうおそらくデザイナとしての道はなんとなく踏み外してしまっていたのかと考察しています。。。

PHPをローカルでも動かしたい!

WordPressをローカルでも動かしてレンタルサーバ上と同じ環境で開発したい私は、早速Vagrant上でPHPの環境を構築できるということ知り、意味もわからず触り始めます(当時から自身の開発環境ですぐ始められることはとりあえず頭より手が先に動いてました)。

ここがRubyの環境構築に続く難関で、Vagrant上でLAMP環境(ここで初めてWordPressがLAMP環境で動いているということを知る)を構築するもまぁ〜動かない。いろんな記事からコマンドを叩いてみるもまぁ〜動かない。ここで私は、ソースコードだけでなくOS周りのことやWebアプリケーションの構成ことを全く知らないのかもしれないということをなんとなく理解し始めます(OSやWebがわかっていなかったので、自身のやりたいゴールがそもそも設定できてなかったのですよね)。

ただ、当時はVCCWというとてつもなく便利なパッケージが存在し、それを知った私はかろうじてやりたいことを達成するができました(LAMP環境との戯れ(このあと実際にLinuxの構築からの仕事をしたりする)は今後も続くことになります)。

この時期から本番で動いている環境と開発環境をなるべくシームレスな同期状態にしたい、シンプルに開発したいというモチベーションが今での仕事でも環境周りの整備に関して貪欲に働いているのかと思います。

「Webを支える技術の輪読会」との出会い

フロントエンドに片足を突っ込んだデザイナ生活と並行して、勉強会にも足を運んでいました。

これも発端が謎で、絵描き仲間で雑にもくもく会をしようということで遊びに行った先で、現Classiのただあきさん(@tdakak)、現クリプラのしょうこさん(@shokolateday)と偶然にも知り合うことになり、「Web業界にすったもんだでやってきました」なんて話をしていたら今度「Webを支える技術の輪読会やるから出てみない?」という流れに。

当時、デザイナとして頑張るぞ!と思っていながらも、なんとなくいろんなことも知っていたほうが良いかなみたいなノリ(適当)もあり、早速参加することにしました。これがこの時期一番の衝撃になるとも知らずに。。。

Webをよくわかってなくね?

Webを支える技術の輪読会に出てみたものの、こう買った本の内容が数ミリもわからんとい事実が最初でした。

「Webデザイナなのに、Webわからんって笑えんな」みたいな焦燥をよく覚えていて、ある程度章が進めばわかるかなと思いつつも全くわからない。むしろもっとわからなくなる。他の参加者の方は業界でも長くエンジニアをやられている方が多く、比較するのも野暮でしたが「今の自分の仕事だけではなにか全く欠落している技術的な部分が沢山ある」ということの把握でした。

そう思いながら参加し続けたその中でも、和田さん(@t_wada)のURI設計に関する講演は非常に印象深くて、正直「何を言っているんだろう?」という感情と「なにかこうWeb開発ってもっと面白いことがあるかもしれない」みたいな感情が自分の中に沸き起こり、よくわからないけどWebって面白いかもしれんみたいになった瞬間でもありました(その後の飲み会でも対面に和田さんがいらっしゃって、いろいろお話させてもらったのは未だに覚えています)。

そして今後「設計」という観点にこだわり始めるのも和田さんの講演がきっかけになっていたりしています。

デザイナとしての一年を過ごしてみて

これまでダイジェストでこの業界にデザイナとして入って、Webのデザインからタスクランナーやら仮想環境構築やらまで一通り舐めることでWebページを構築するにはある程度の力が着きました(ちなみにこの間にWF引いたり、画面遷移図作ったり、ABテストしたりなどデザイナの基本的な仕事もちゃんとやっていましたよ)。

当時としては自分なりに吸収して行動に移せることはすべてやったと思っていて、じゃあ実際に次に何がやりたいのかってのはあまり考えていなかった気がします(この間個人でもWebを作る仕事をしたりして場数は熟していました)。

先述しましたが、この業界では完全にサバイバル状態で仕事をするという状態(ダメなら「死んじゃえ」と言う極端な気持ちが強かった)だったので、そもそも職能以上に「知らないことは是が非でも身につけてやる」と言う傾向が強かったと感じています(それは今もですが)。ですので、何か「こういうキャリア・人になりたい」ってのが当時からあまりなかったような。。。

一つ言えることとして、「Webを支える技術の輪読会」を通して全く私がWebというものをわかっていないで仕事をしていることはやんわりと認識していたので、じゃあ現状のママでいいやというモチベーションでもありませんでした。「なにか自分の知らない世界がこの業界にはもっとある」というRPGでいうと、最初の章をクリアして次のフィールドに向かう感覚に近いですかね。

そんなことを考えているうちに、次の現場でエンジニアとしての転機が訪れます。個人的にはWebがどういうものなのかブレイクスルーする特異点みたいなところでした。

エンジニアとしての転換

特にデザイナ?(最後はWordPressの決済プラグインの拡張とかやってましたよね貴方)としての仕事に当時不満などは無かったものの、たまたま登録していた転職サイトでとある企業からオファーを頂き、人事や役員の方と話しているうちに「(正式に)フロントエンドエンジニアとしてウチで働いてみない?」と言う流れになり、「せっかくだしやってみるか」ということでエンジニアとしての道を歩むことになりました。

オブジェクト指向?デザインパターン?

エンジニアとして仕事をすることに啖呵を切った私はとりあえず、「エンジニア、はたまたフロントエンド自体はどういうことしないとあかんのや?」という一旦自分のやってきたこととまだ観ぬ現場で行われている技術や知識などの差分を埋めるために「ブレイクスルーJavaScript」という本をとりあえず読んでみようということに。

そもそもソフトウェア開発手法のイロハも微塵に知らなかった私は、突如出てきた「オブジェクト指向」「デザインパターン(本ではObserveパターンが取り上げられていたかと)」というそもそも概念がわからなかったため、「何故」そういうソースコードを書くのか全くわかりませんでした。

結局ソースコードを写経することでなんとなくこういう時はこういうことを書けばいいのかなというところまでブレイクスルーJavaScriptは3周することで体得。ただ、オブジェクト指向やデザインパターンがある程度理解できるのはもう少し先になります。

当時はいわゆるソフトウェア開発手法の抽象的な定義と実際の実装という切り分けの感覚がよく解っておらず、ただ、何かここで止まっていても仕方ないので後は仕事の中で考えていこうみたいな謎のポジティブがありました。

また、並行して「開眼JavaScript」も読み進めていましたが、こちらは3週目ほどで割と理解が進み、JavaScriptを書くということに関してはデザイナ時代よりだいぶ論理的にソースコードに向き合う下地がこの時期にできたかと思っています。

設計って愉しい

さて、現場での仕事はというと、とあるtoC向けサービスのリプレイスを担当することに。幸運にもそのリプレイスが0からの立ち上げだったため、設計及び技術選定から入らせてもらいました(当時エンジニアとして生まれたての状態の自分にチャンスを与えてくれた現場に感謝ですね)。

お題としては、Webページをコンポーネントのような単位で組み合わせることで比較的自由度の高いCMSをフルスクラッチで構築するという内容で、Atomic Designがこう流行る前ですが、自身の設計として、さかのぼってみるとかなり似たような手法を取り入れました。

同時に設計を実現する技術選定もかなり当時は行いまして、jQuery以外にもまだMVVM主体のVueやReactなどのキャッチアップを行うことができ(仕様に合わせたプロトタイプを書きながらだったので)かなりこの時期は自分のフロントエンド周りの視野が広がっていく貴重な時間でした。

設計に関しては特にコンポーネントの粒度の設計をチームの(業界20年くらいの)エンジニアと日夜議論した経験はかなり印象深く、特に抽象概念周りの定義に関しては(SOLIDでいうとリスコフ、Atomic Designでいえば Moleculesらへん)当時単語は知らなかったもののかなり鍛えられました(なのでここらへんの手法に関する概念は知っているのではなく実際に自分で考えてから後からこういう概念があるんだでも十分だと思っています。もちろん座学⇒実学も良いのですが、ただ知っていれば使えるというものでも無いので。。。)。

フロントエンドって大変

担当していたプロジェクトは toC側のコンポーネント実装はもちろん、管理画面側の実装も一挙に担当していたので、物量が兎に角異常でした。

管理画面はBootstrapのようなUIアセットを自作して実装コスト下げたりある程度手を打っていたものの、仕様をつめる作業とほぼ同時進行+バックエンドの実装が後追いだったため、ここの調整及びつなぎ込みの部分がものすごくボトルネックでした。またこの案件で初めてAjaxでRESTApiを叩くということも同時にやっており、今思えば恥ずかしいですが、すべてメソッドをPOSTで書いていたり(後々リファクタはしました)と書いた後で「Webを支える技術」が効いてることがじわじわと解ってきたこともこの時期でしたね。

開発が架橋になると、今度はjQueryの限界を知ることにもなります。先程Reactも検証など言っていましたが、技術選定においては結局プロジェクトのメンバーが全員触ることのできるjQueryを採用して開発を行っていました。

特にDOMの生成を動的に行い且つ動的に生成されたDOM上で状態操作を行う×nというかなりしんどい仕様が連続するようなコンポーネントを実装しなければならず、Underscoreのエンジンテンプレートを使用することで、ViewとJavaScriptの実装は切り分けていたものの、今思うとかなり辛い実装でした(これ以降、自身がUIの状態設計や仕様に関してかなり考えるようになったきっかけにもなります)。

インフラエンジニアとの兼業

プロジェクトが終わりに差し掛かり、少し開発体制に変更がでてきます。現在自分が所属しているような技術横断組織のようなチーム(ニュアンス的にSREに近い?)に配属になります。そこにはインフラ/ネットワーク・バックエンドなど玉石混交のチームで基本的に開発全般に関わる技術的な課題をみんなで解決していくチームでした。

そこで、ある程度フロントエンドの開発が終わった私は(もちろんこの後もフロントエンドの開発や運用は続けていくのですが)、インフラ周りの人手が足りないということで、インフラ周りの仕事も担当することに。これが自分の一つ開発者としてのブレイクスルーになります。

インフラエンジニア?としての初めての仕事は今まで担当していたプロジェクトとは別にオンプレミスのサーバにLAMP環境とWordPressを構築するものでした。ここでまさかのLAMP環境との再開。リベンジです。この案件では、Docker を使ってローカルである程度検証した後に実際にサーバに入って環境構築するとうう今ではとんでも効率の悪い実装でしたが、地味に一つ一つのコマンドやインストールをコーディネートしていくという作業が実際にインフラ構築周りのキャッチアップにもなり、「Webサーバができていく過程ってこうなのか」と、デザイナ時代や「Webを支える技術」でわからなかったことが一気に繋がって行く感覚をよく覚えています。

その後も、CDNの設置作業や今では当たり前となったDevOps周りの導入(Fluentd, Flasticsearch, Kibana)などの設置や設定も行うことで、Web全体がどういう関係性で成り立っているのか、そして、フロントエンドは結局どこを担っているのかなんとなく自分の中で腑に落ちてきました。

エンジニアとしてのリスペクト

この時期エンジニアとして個人的にリスペクトする方と出会いがあり、非常に影響を受けました(今も受けているというか継承しているというか)。

エンジニアとして何も知らなかった私に対してエンジニアとして対等に接してくれてたことは印象に残っています。自分自身もわからない時はわからないと言うことで、特に「こいつわかってねーな」という感じではなく、情報を補ってくれる形で会話を進めてもらったりと、こういう姿勢に対しても尊敬する瞬間が多々ありました。

仕事としていくうちに「リーダブルコード」「デザインパターン」の輪読会を一緒に行ったり、認証周りのディスカッションをしたりなど所謂エンジニアとしての基礎のようなものをこの時期に一気に経験もしました。

特に一連のやり取りの中で一番心に残っている言葉として「難しいことを難しく実装しないで、もっとシンプルに整理するのがエンジニアの仕事ですよ」というのは自分の中で今でもエンジニアリングの行動原理に近いところにあって、コードレビューや設計の壁打ちなどをする際にも常に心がけている教訓になっています。

この業界に来て、ほぼ毎日のように怒涛の情報量を浴びてきた中で、どこまでが自分で理解できて使えるのかことをずっと考えながら仕事してきましたが、この現場での仕事や出会いによってより自分の中で体系的にまとまっていったのかと思います。

また、オブジェクト指向やデザインパターンもある程度理解しながら仕事をすることもできるようになり、「ブレイクスルーJavaScript」の言わんとしていたことを改めて解った時は嬉しかったですね。

Webは薬学と似ている

そんなある日、ふとWebは薬学と似ているということに気づきます。

Web面白いな

インフラやその他の仕事にも携わらせてもらっていくうちに、Webの様々なレイヤーは薬学で言う基礎科学(化学・生物学・物理学・数学など)の組み合わせて成り立っていることと同じだなとういうことに気づきます。

これはあくまで私の感覚なのでほんと参考にはらないのですが、WebもHTTPなどの通信設計、URIなどのリソース設計、HTMLになどに付随する情報設計、フロントエンドだとブラウザ周りのレンダリング...などの組み合わせでWebというもの、Webアプリケーションというものが成り立ってるのか自分の中で繋がり、案件やプロダクトのフェーズによって一体何をやれば良いのかということが割とイメージしやすくなりました。

当時、仕事をしていたチームのメンバーにも恵まれてもいて、自分よりキャリアが長く皆Webそのものを体系的に理解されている方が多かったのもあり、Webの話をよりできるようになっていく過程も一つ体系的に理解していこうとするモチベーションにもなっていたと思います。「はやくみんなのレベル感で仕事をしたい」というのはそれこそデザイナの頃より潜在的にあったのですが、ここで拍車がかかった感じですね。なので、日を追うごとにみなさんと話せる技術内容が増えていくのが愉しみであり、仕事上の会話でわからない単語があったら次の日には必ず潰して仕事に臨むなどとあらゆるキャッチアップを貪欲に行っていました(この姿勢は今でも崩していません)。

Web開発には何が必要か

今まではとにかく自分のわからなかったことをただ吸収して消化していた傾向が強かったのが、このブレイクスルーを通して、自分が解っていないことと解っていることの「境界線」を見極めることで自身が現状何が足りてなくて何をしていけば良いのかよく洞察するようになりました。

この「境界線」はわからないことの判別だけに用いるわけではなく、技術選定など時にも様々な状況に対してどういう選定やアクションを行えば良いのかの切り分けにもだいぶ役に立っています(これは別途自身のもっと抽象度の高い考えをまとめているメディアで詳しく書いています)。

「何故」その技術が開発され使うのかを考える

フロントエンドに関する考え方もだいぶ変わってきて、もちろんモダンな技術を使ってみたいというモチベーションは今でもありますが、それ以上に「この技術(モダン問わず)はどうやってフロントエンドに活かせるか」ということをものすごく考えるようになりました。

よって、この時期前述のエンジニアと一緒に個人開発でReactを実際に開発で使うようになるのですが、Reactをただ使える様になるではなく「何故Reactを使うのか」「Reactを使ってどうやってフロントエンドを作ったら良いのか」などを重きに意識が行くようになり、更にはClean Architectureなどより抽象度の高い概念への興味などに続くようになります。

Web開発者として

いよいよ現在の職場での話になっていきます。

モノづくりを愉しむには

入社当初はスクラムで開発をするチームに配属、そこでDevとSM(スクラムマスター)を兼任することがあったのですが、もちろんアジャイルで開発をする愉しさはもちろん、SMとして「人」にもアプローチするということも自分の中では新鮮で、「技術」と「人」で改めてプロダクト開発は左右されるんだよなってことを改めて思うことがありました。

ただレベルの高い人材が集まっただけでは質の高いモノは作れない、そこにはバランスが大事なんだなっていうことを、こう自分の振る舞いで決定づけてしまうその事実を、小さいプロダクトでしたが身を持って感じることができるいい機会でした。

この時は「人」という重要性に関しては特に気に留めていませんでしたが、以降の仕事で改めてプロダクトは「人」の上に成り立つものということが解ってきます。

ゆるい繋がりを求めて

先の仕事をしていると同時期に組織体制に大幅な変更があり、マトリクス組織型から事業部型に変更がありました。そのため、もともと横断的に展開していた職能が各事業部への配属となり、こう同じ職能ベースでの情報の共有やコミュニケーションが希薄になる(また主要なメンバーがどんどん抜けてしまう)ことがあり、そこに自分はいささか不満を感じていました。

今の組織はエンジニアが400-500人といる集団で、社内に向けての技術の共有だけでもかなりのインパクトがあったり、数百人それぞれの考え方を垣間見れる場でもあります。

自分が今の職場を非常に面白いと感じているのも結構それだったりして(今の職場に入社を決めたのもそううところ、有象無象がビジネスや技術に対してギチギチと仕事をしていく様がすごく愉しそうで)、なにかもう少しゆるい繋がりや、社内外問わずもっと自由に発信をする人などが増えるような関係性を構築できないか考えました(自分はほぼ毎日何かしら社内の技術チャンネルにコンテンツを投下しており、そこから開発に関する議論などが偶発的にも生まれれたり、チャネルの雑談で設計の話で盛り上がるなど事象が非常に好きなんです)。

その結果、現CTO室という組織に身を置くことでなにか自分にできることはないか模索し始めたのが約2年前になります。

当初は正直「こうしたい」などは全く戦略無き形から始めました。とにかく、まずは「人」と話すことを前提に、以前の横断組織で散り散りになった事業部のメンバー個別に声をかけ 1on1 を実施、みんなどういうことを思っているのかをとりあえず聴きました。この行動はその後事業部を横断した 1on1 を継続するきっかけになっています。

次に、完全に巻き込まれに近いのですが、CTO室という技術横断組織ということもあり、新卒研修や採用周りのお手伝いもし始めます。

そんな暗中模索の中、同じことをモバイルでもやっているという釘宮さん(@kgmyshin)と邂逅し、エバンジェリストチームとしてエンジニアの評価などの制度周りの設計なども一緒にやっていくことになります。昨年は制度の立ち上げなどに奔走していましたが、今は多くが運用期に入っており、次の課題はなにか今でも 1on1 などでずっと考えている仲になります。

自分はとにかくCTO室に来た時点から、自分を殺してでも(過激な表現かもしれませんが、こうキャリアとか自分の欲求に関して一旦蓋をする形で)なにか自分ができることがあれば「YES」としてやることにしていた(今でもそのスタンスは変わりません)ので、教育・採用に関しても特に「めんどくさい」とかは無くやっていくことで、自分が今できることがどういうことにつながっていくのかを検証すると共に、自分のぼんやりとした課題は寧ろ明確になっていきました。

その後、社内コミュニティなども徐々に立ち上げ、今では社内向けの飲み会、社外向けにThink ! FrontEndの運営などもやり始め(Think ! FrontEnd は、赤石くん(@isy)の発案で始めた企画で、他にも事業部のエンジニア発案のDMM.goなどコミュニティの立ち上げが続いています)、事業部の横断したフロントエンドのチャンネルでは徐々に情報の発信や事業部を横断して技術相談などの交流も増え始め、自然にチャネルのメンバーも増えていっているのがとても面白いです。

こう、自分のやっていることがなにか無鉄砲のように見えますが、最近ではどのセクションも中途半端に機能しては良くないという考察になっています(帰納的な解釈になってしまっていますが、各々のカテゴリ自体が非常に大きいので自分はここの関係性に気づくには時間を要しました)。

採用はもちろん人材を獲得するための戦略でもありますが、第三者に対して会社の良い・課題をアピール、認知してもらう大事な接点でもあります。教育や制度は実際に会社に入ってきた人がその後も仕事を愉しく続けてくれるためのベースになっていて、ここらへんがどちらも欠けていれば人材の循環もうまく行われなくなってしまう。自身が一環してここらへんに携わることでその重要性はより強く感じるようになりました。

そして、コミュニティ、こうゆるい形でもいいので、気軽に話せる土壌があると自然と話しもしやすくなり、お互いの関係性もフラットになることでより高め合うことができるのかなと。

つまるところ、自分が感じていた課題・不満というのは先に行ってきたことがある程度体系的に機能することで徐々に解消されていくことだと考察しています(ただ、事業部制になったことが原因ではない)。ここに関しては、具体的な現象として言語化できない課題であったりもするので、同じ悩みを抱えている方は多いのではないでしょうか(別に今の状態が完全に解消されたわけでは無く、ただ前進は少しずつしているのかとう感覚です)。

現職場は非常に大きく、なにかこう誰か一人が簡単にコントロールできるような組織ではありません。ただ、その中でも自分のやれることがある。行動を起こせば少しでも共鳴して雰囲気や一緒にやってくれる仲間が増えるようになると景色は徐々に変わっていきます。

自分の「ゆるい」とは小さな一つの水滴が水面に落ち波紋がどんどん広がって、他の波紋と徐々に共鳴していく状態を指しています。

当時、今やっていること、正直本当にどうなるかは全く予想していなかった。特に波紋がただ広がっていつか消えてしまう可能性もあったし、そこは不安かどうかとい言われるとダメだったら会社を降りようくらいには考えたりしていました。ただ、やり続けていることで、今は少しずつ共鳴が増えてきたのかな?という感じです。別にそれが自分が発端であるつもりもないですが、何か似たようなことをやってくれる人が増えてきてくれたのは本当に心から嬉しいです。

思うこと

最後のセクションになりますが、ここでは最近自分が思っていること、考えていることこれからをお話できればと思います(ずいぶん長くなってしまいました)。

哲学と組織・エンジニアリング・クリエイティブ

CTO室に来てから、「開発者」というか「人」としての振る舞いが多くなり、気がつけばエンジニアとして今後どういうふうにしたいなどが全く無いことに気づきました。

誤解をしないよう言っておきたいのは、自分はキャリアを捨てたなどということではなく、開発者として恒常的に技術・知識は洗練し続ける「状態」であることが望ましく、自分の開発者として求めているものがそういう「状態の維持」できる環境ということになります(今でも仕事の半分は技術支援や実際にプロダクトコードにコミットしていますし、キャッチアップ&プロトタイプの実装も怠っておりません)。

よって、「自分が人や物事に干渉することで、何かプラス(かどうかはわからないけども)な形で変化や影響を少しでも起こすことができる振る舞いを行える仕事をしていきたい」、【触媒】的な動きができていると良いかなと考えています。

また、最近の興味としては(何か随分とエンジニア、開発者としての話題から逸れてしまってきてはいますが、)現在の仕事をする中で哲学周りの思想や考察に非常に関心があり、また仕事にかなり深くリンクしているのではないかという考察をしています。

例えば、ソシュールの「言語学」。シニフィアン・シニフィエの考えはDDD、Clean Architectureなどの設計周りの作法に非常に類似しており、エンジニアはたしかにインターフェースを定義する仕事でもありますが、仕事におけるドメインなどの言語空間を整理するという点を知っていることでコンテキストの洞察はなかり鋭く行えるように感じます。

次に、言語学というか「言葉」の影響に関してはジャック・デリダの「エクリチュール」や「パロール」の考え、こう書かれた言葉、発せられた言葉がどう人から人とへ伝播し、どう認識されていくのかこう大きい組織だと何気ない一言(それこそ大きい役職などの人が発する言葉)が実は組織の末端では本来のそれとは違う解釈で伝わっていたりなど自身はいくらか目撃しており、こう横断的に携わる仕事柄自分の考えなどを発信する時はかなり気をつけるようになりました。

事業部を横断してエンジニアの 1on1 をする時にも、フッサールの現象学に出てくる「エポケー」を意識することで、こう変に感情的にならず、「何故」を前提に、懐疑主義までとはいかないですが、それこそフラットな形で相手の話に寄り添うことができやすくなるなるなど、多くの発見が私にはありました。

「メタ思考」というものが最近界隈では流行っていますが、哲学もゆえに「メタ思考」とやっていることは同じで、自分が見ている事象の外側に目を向けるこう超越的な視点があると、自分の立ち位置や自分の今やるべきこと今後やるべきことがより解像度がわかるようになるのかなと。

突然の哲学の話題になったのですが、じゃあ何故こういう抽象的なことに興味あるのかという話にフォーカスを向けると、私達がやっているデザインやエンジニアリングは詰まるところ「クリエイティブ」ということが根本にあるのかなと思います。

「クリエイティブ」っていろいろな解釈はありますが、一つは今まで誰も作ったことがないモノを創り出す作業と思っていて、デザイン・エンジニアリングやその他(今回で言う哲学の思想)の技術や知識ってそこの不確実性に対してどう事前に理論武装して構築的に自分たちの作っていきたい戦略を立てるための道具だと思うんですよね。所謂クリエイティブのための思考の切り口で、「哲学」だからではなく、自分はクリエイティブするための武器として今は興味があります。

なので、設計・技術相談でもよく言われるのが「〇〇をすると良いんですか?」「✗✗していればいいですか?」とか良く聴かれるんですが、そもそも私達の開発に「正解」って無いと思っていて、だからこそこういろんな人と人がそれぞれのバックグラウンドや知識や経験(それはソフトウェアやWeb意外も含めて、哲学も然り)を合わせて創り上げていくものだと思うんですよね。一緒に創る人が多ければそれだけの人生が重なり合って今まで見たこと無いアイディアやモノが生まれる。

自分も未だにプロダクトの設計やコードを書く時は不安で緊張しますし、私達の仕事って常に新しいモノをく作っていくからこそそういう緊張感があるのが「愉しい」のではないでしょうか。そこに私は答えを求めるのはナンセンスだと思っていて、ここは一緒に緊張を味わいたい人たちと今後も「モノづくり」したいですね。

半ば強引なクライマックスに寄せて来てしまいましたが、こう、今の現場でも各々が「思考」して、「行動」して、誰もやったことのないことをやれるようなことを一緒に創っていくワクワクを共有したいなと思っていて、そういう振る舞いを心がけています。

さて、かなり長くなってしまい且つ非常に散文した上に論点が定まっていないような構成になってしまいましたが、この業界に入って自分がやってきたことやよいしょよいしょで考えてきたことを急ぎ足(?)で書き綴ってみました。

とても参考になるような文章ではなさそうですが、採用などもやっていると、学生さんの中でもCS専攻じゃないことを気にされて開発者として自信が無いようにお話されてる方(実際にやっていることは私達と遜色ない方も増えています)が意外に多く、なにかこう少しでも自信をもって社会に出てほしいという(勝手ながら)後押しするキッカケになればと思ったことと、いろんな理由はあれど異業種からこの業界に来た方々にも少しでも分かってもらえることがあればというところも今回ドキュメントに書き起こした動機でもあります。

おわりに

自分がここまで愉しく今の仕事を続けていられるのは、これまで身を置いてきた環境や人との出会い、また前の業界から私を生暖かくも見守ってくれてた方々のおかげでもあります。まだまだ自分自身も荒削りですし、日々是精進の身ですが、今後も皆さんと愉しい「モノづくり」をしていければと思います。

また、今年はこんな状況でありながら(だからこそ?)この業界の様々な方とお知り合いになれた年でもあります。今後も一緒に「モノづくり」に関して情報交換・議論をしていければ幸甚です。

Discussion

catnosecatnose

そもそも私達の開発に「正解」って無いと思っていて、だからこそこういろんな人と人がそれぞれのバックグラウンドや知識や経験(それはソフトウェアやWeb意外も含めて、哲学も然り)を合わせて創り上げていくものだと思うんですよね。

良い言葉ですね。同感です。

本文から逸れますがこのサイトの表現に感動しました。
https://pensant.me/

今後の更新も楽しみにしています。

Kotaro ChibaKotaro Chiba

@cantose さん、コメント、またそこそこ長い文章を読んで頂いてありがとうございます!
私のサイトもありがとうございます〜!こうWebで文章を読むにはどういうデザインが良いか考えた結果のモノに評価いただけるとこちらもとても嬉しいです!
もう少しメディアの方はコンテンツを充実させていきたいと思っていますので、また遊びに来ていただければ。。。!