読者です 読者をやめる 読者になる 読者になる

futoase

よろしくお願いします。

Webアプリケーションエンジニアとして1年間働いてわかったこと

人生 雑記 開発

流れ

freeeという会社に2014年6月に入社してから2015年いっぱいまでインフラエンジニアとして働いていた。 2015年の秋が終わる頃、「サービスのことがわからない人としてやってくのはこの先気持ちが厳しいかも」 という強迫観念に近い思いが込み上がってきた。

早速会社のQiita::Teamに 「インフラエンジニアからWebアプリエンジニアになりたいです」 という旨の記事を書いたところ、翌年(2016年)から会計freeeのWebエンジニアとして働くことになった。

バンザイ。

早速変わったものの、、

2016年になり、Webアプリエンジニアになった。 React.js, Rails。おー、みんな喋ってる言葉だ。それに俺も触れることができるのか。 ワクワク感でいっぱいだった。が、甘かった。

インフラエンジニアのときにRDBへの接続を切り替えるgemを書いていたので Railsについてはある程度詳しかったものの、それはFrameworkやシステム面での詳しさであって、 サービスロジックはさっぱりだった。

特に会計ロジックについては会計処理を知らなければ実装できない・メンテできない。 Model/Service間での会計ロジックの表現・計算・ドメイン解決をどのようにしているのか 実装しながら、コードリーディングをして追っていった。わからなければagコマンドにより 気になった処理のフェーズを成果物以下すべてから検索し、関連してると思われるソースコードをすべて読み漁るというやりかたをした。

複雑なロジックで理解はすぐにできないことが多かった。が、複雑なことだけあって面白かった。 時間をかけて理解を自分の中に落とし込んでいくというプロセスがとても楽しい。

心のもやもやが取れていく

しばらくして、既存機能の問題を解決する、改善することから 新機能を作るということができるようになった。

なるほど、新しい機能を作るにはこうすればいいのか、こうこうすればいいのかとわかっていく。 インフラエンジニアをやってるときに見えなかったサービス側の処理が見えてくるので楽しくなっていった。 これはいい。心のもやもやが取れていく。

サービス開発は瞬発力・突破力・まきこみ力

みたいな感じを受けた。品質大事だし、開発プロセスも大事だし、 何よりメンテンナンス性も大事。でも思ったのはこの3つ。

瞬発力

  • 早く実装する
  • スタートを切れるように意識する
  • 調査期間が必要な開発であっても長期はかけないようにする
  • 調査期間・初期設計での手応え/経験をチームで共有する
  • ランニングはスタートを切るのがだるい。そんな要領でとりあえず始めればものごとは動く。と思って動く。

突破力

  • どんどん突破していく
    • 乗り越えなければ、乗り越えられなければかわさねば...
  • xxは無理ですという場合は無理ですを取り除けるところをどんどん話す
  • yyはどうしても無理ですというのであればyyの無理な点を洗い出す
  • 無理と思う源は理解していない不安からくることが多い。その場合はとにかく突破するしか無い。
    • やるしかない、やらなければ製品・機能は世に出ない 😇

まきこみ力

  • ふわっとしているけど、目的はなんとなく定まった機能を作ることになったときのこと。
  • あっ、自分まだ会計freeeのドメインについてそこまで詳しくない
    • どう使われているか、フィードバックをお客様からもらっているかよくわからなかったりする
    • つまり、課題が見えない
  • カスタマーサポート、プロダクトマネージャ、セールスなどいろいろな人を1つのミーテイングにとりあえず集める
    • 話したことがない人も居るがやらんとだめだ
  • 話しているといろいろな課題が出てくる
  • 見えてくるそれぞれの立場からの意見
  • その中で1つ、できそうなことをつまむ
  • 1つできそうなことをすればほかのこともできますよねっていう感じで話を進めていく
  • 軽い感じでできたら、Slackで即連絡する
    • かなり躓いたこともあったが、躓いたときもSlackで都度連絡していた

初めて新しい機能を作ったときの実感

感動があった。サイコーって感じ。高揚感にちかい。 インフラエンジニアも高揚感を感じるような仕事も多いが、 お客様や自分自身の問題、揺れ動く現実に対処するものを出したという達成感が半端なかった。

インフラエンジニアから変わってみてよかった

よかった。もやもやしながら2016年を過ごすことにならなくて。 あと周りのWebアプリケーションエンジニアに今のインフラの仕組みについて話すことができたりするので それも良いかもなと思っている。

ちょっとインフラ側を触らなければならない作業がでたとき、 不安に思ってるアプリ側のエンジニアに「大丈夫だよ」とか言って 作業自身その人に任せられるように伝えるということをしたりした。 その後その人自身がインフラ側をさわるか、またはインフラエンジニアチームに 直接やりたいことと何をしたいかを伝えて作業をどんどん進めるようになっていった。

自分にとってそういうのが良いよなぁ、ちゃっちゃとするのが大好きだし。 と、今までエンジニアをしていて思っていたので今それができているので最高である。

インフラエンジニアであってよかったなと思ったこと

Qiitaに書いた以下の記事の仕事を今年最後1,2ヶ月やってみた。

qiita.com

QA基盤を作る仕事なのだけど、 VPC作成してRouting tableを適切な形で設計してSubnet切った後、 うまい具合にdocker-selenium hub, node それぞれのcontainerを立ち上げつつ、 ネットワーク上でくっつけてnodeはauto scalingで増減できるようにしておく。 Jenkinsからjob叩ける用にした。

E2Eテスト対象となる環境を最新のsource codeにするべくgit pullを行い、 rake db:migrate, webpackによるassets作成できるようdigdagでフロー化した。

こういうの、インフラエンジニアをやってなければ心が折れてた気がする。 その点について経験が役立ってる気がする。

2017年は

2017年もWebアプリケーションエンジニアとして働く。

が、mobileも触りたい、メンテしたい、作りたいという心の躍動が抑えられない。 システムプログラミングや、機械学習の勉強会が社内で始まったので参加したいし、 色々ある。目標を定めすぎずいろいろやっていきたい。

お知らせ

freeeではエンジニアを通年募集している。👇

jobs.freee.co.jp

Copyright (c) 2013-2017 Keiji Matsuzaki