名前はまだない。

プログラミングのことや趣味のことに関して綴ります。

【インターン四社目】まさかの要件定義から?!Speeeで学んだこと・成長したところ【12Days】

いよいよ最終パート!
最後のインターン先は株式会社Speeeさんです!

アドテクやSEO等のWebマーケティングや不動産系のインターネット事業を主に行ってる会社さんです。

f:id:kobaken0029:20151216145218p:plain:w500

インターン記事を書いていた中で一番の大作になりそうな予感・・・

チームで挑んだ12日間

今回のインターンでは、3人でチームを組んでの活動となりました。

初日の初めての面会ではそれぞれ堅苦しい挨拶から始まり、徐々に互いを知り合っていく感じでした。

自分と同じAndroidエンジニア(経歴は彼のほうが圧倒的に上)がいたり、
若干19歳の有望青年がいたりとこれからのインターンが楽しみなチームとなりました!

Speee Cultureとは?毎日の朝会が凄い!

Speeeの凄いところの一つに"Speee Culture"があります。

f:id:kobaken0029:20151216152248p:plain:w700

ここにある項目を順番に、毎日の朝会で当てはまる人物を一人指名していくという取り組みをしていました!
コレには最初びっくりして、しかもそれを毎日やっていると知って仰天しました(笑)

常に他人の行動や取り組みを観察したり、その人の成し得た業績をたたえ合うとても良い文化だと思います。
コレに合わせて、各島で分かれて行われる「Good and New」にも取り組んでいました。

f:id:kobaken0029:20151205015004j:plain:w300

手厚いFB!毎日が振り返り面談!

このインターンで何が良かったかと言えば、毎日メンターや人事の方からFBをもらえたということ。

自分の今日の活動、チームへの貢献、プロダクト開発へのコミット等、KPT形式で受け答えしていきました。

そこで頂いたFBが今の自分にとてもマッチして驚いたり、その内容が心に刺さったりと、とても有意義な時間でした。

やったこと

新規事業のα版を開発しました。
技術要件としてRuby on Railsを使用するとの事だったので、Railsやりました。

ただ実装していくというだけでなく、
要件定義や画面設計、DB設計、インフラ周りのあれこれ等
考えることがたくさんあったので、非常に頭を悩ませながら取り組みました。

学んだこと

以下、学んだこと

設計の難しさ

サービス全体のフローや運用を考えての設計がものすごく難しかったです。
ここがもろくて出戻りが発生したり、効率よく作業できなかった感はものすごくあります。

特にDB設計をやってて思ったのは、一人でやらないほうが良いなということ。
勿論、滅茶苦茶デキる人でそちらの知識に精通している人なら一人で設計しても問題無いだろうと思われるが、如何せんそういうわけにはいかず・・・

"3人寄れば文殊の知恵"とでも言うべきか、考慮すべき点がディスカッションすることでボロボロと出てくる不思議。
実際に手を動かして、ホワイトボードに書き出すというのも効果的でした。

技術書籍や実際に設計する経験を積んで、あらゆる方面の事情を対応できるような設計が出来るようになりたいです。

ヒアリングの重要性

初めての経験することや、このサービスはどういうものなのか・サービスの本質は?といったことをメンターやディレクターの方から"訊く"ことの大切さを学びました。

これから作っていくもののすり合わせは、どの開発をとっても重要で、
まさに今私が仕事でやってるSIもお客様の声を聞きながらものづくりをしていくという点が一致していたので
とても勉強になりました。

知的好奇心の探求、深掘りすること

エンジニアとして長いことやっていくにあたって、これがないと途中で挫折してしまいそうに思います。

常に新しいこと、その場で一番適切な技術の探求や興味関心を持ち続けることは、正にエンジニアリングだと思ってます。

逆算の思考、結論1st

会話をする時、「とりあえず走り出してから考えよっ☆」みたいな考えを、本インターンで改めることができました。

特に仕事の話をするときは、まず何がしたいのか?結局何が言いたいのか?を如何に相手に伝えられるかということが必須項目になってくると感じました。

とりあえず話しはじめてから・・・という自分が、会話をする前に逆算して結論を出す思考に変えたとたん
突然、話せなくなったのは、今ではいい思い出です(笑)

鳥の目、虫の目、魚の目

仕事を成功に導くための視点を三つ教えていただきました。

まずは、"鳥の目"です。
これは要するに俯瞰して物事をみる目です。

次は、"虫の目"。
今取り組んでることに局所的に力を注ぐために注意深くみていく目です。

最後に、"魚の目"。
これは、流れをつかむために全体で感じ取るための目。
今やってるものはどこに向かっているのか?というものを感じ取ります。

このインターン中に自分に足りていなかった目は"虫の目"でした。
全体像をつかむことに必死になって、自分のやることに注力する意識と姿勢が低くなってしまってました。

これから仕事でもなんでもこの3つの目を意識してやっていきたいと思います。

スケジュール計画の重要性の再確認

自分のいままでの開発手法では、いきなりプロトタイプ作ってみたり・・・といった感じでやることがなく、
ある程度スケジュール立ててから作業に移るようにしていました。

今回はこの習慣が生きてきて、チームに良い流れを持っていくことができたなと思います。

ただ、このスケジュールが甘くて、うまくいかないといったこともありました。

全体の工数を見積もり、この週はこれだけ消化できてればオンスケだなといった安心感をもてるのが
作業をしていて効果大だと思ってます。

改めてスケジューリングの大切さを知りました。

Hospitality

ejje.weblio.jp

これはチーム開発や部署間でやり取りする場合に必要なスキルの一つ。
例えば、誰かにタスクを依頼することがあったとしましょう。

Task(Bad Pattern)
この仕様書のレビューお願いします。
(仕様書のパス)

これではHospitalityが足りていません。
まず、自分はレビューワーの人にどこを重点的に見てもらいたいのか?
どういった意図で書いたのか?
といった事柄を情報として伝える必要があります。

依頼する文言の中に入れず、仕様書に直にコメント書いているようなら、その旨を依頼時に伝えましょう。

Task(Better Pattern)
○○の機能に関する仕様書を作成しました。
特に注意してみていただきたい点をコメントで記述しておりますので確認よろしくお願い致します。
(仕様書のパス)

また、ヒアリングをするためにお時間を頂くようなときは事前に相手に時間を伝えて、かつこちらの考えをまとめた資料なんかを提示しておくと良いでしょう。

ヒアリング依頼(Better Pattern)
△△の件についてもう少し深掘りしたいので、お時間頂けるでしょうか?
14:00~15:00
この時間で30分程頂戴したいと思っております。
資料を添付しておきます。
(資料URL or Path)
自らに制約を科す

メンタル面が弱いという弱点が会った自分。

そこを解消する策として、「制約」を科すという教えを頂きました。

いい意味で縛りのようなものを自分に掛けることで、いい方向に持って行こうというものです。

例えば・・・

  • ある壁にぶち当たった時には、まず第一に相談すること
  • 10分悩んだら、会話すること
  • 毎日昼休憩のあとはメンバー全員の進捗確認をすること
  • 帰宅する前に自分のタスクを振り返ること
インプット、アウトプットの重要性

技術者として日々勉強することは当然のように思います。
インプットはできていて当たり前として、アウトプットをいかにどうするかと言った問題があります。

自分が導き出したアウトプットの形は以下です。

Railsはとにかくgemを探す

Railsで開発するときは自分で実装する前に、「これgemないかな?」と調べること!

gemであれば、ほぼ100%テストされていて安全保障で使えるし(テスト書かなくていい)、
何より実装しなくていいのが強み。

Javaプログラマーな私がライブラリ感覚でgemを捉えていたが、
どうやらそれ以上の強みを持っているように感じた。

gem探しに困ったらここを見ると良い。

The Ruby Toolbox - Know Your Options!

RubyGems.org | your community gem host

TDD

簡単な実装になるようなら、TDD(テスト駆動開発)すると、すこぶる捗る。

慣れが必要だが、これを覚えたら開発速度や効率が爆アガリしそうな予感。
しょうもないバグも潰せるし、最高だと思います。(小並感)

Rspec

rubyのテスティングフレームワーク
単体テストJUnitしか触ったことなかったので、初見はとてもとっつきにくいと思ってました。

でも、慣れるととても心地よくテストが書けて、
ネイティブの人ならば文章を書くように出来るのが魅力的。

これから簡単なrubyスクリプトとか書いた時に、
軽くテスト書くときとか使うかもしれないので習得しておいたほうが良さそう。

IDEの素晴らしさ(RubyMine欲しぃ)

インターン中ずっと思ってたのがコレ。

いつもEclipseやIntellJ(AndroidStudio等)使って開発しているので、テキストエディタでWeb開発するのがとても大変に感じた。

保管できなかったり、メソッドや変数の参照先を追えなかったり、なかなか辛かった・・・

本格的にRailsやるようになるとしたら、まずIDEを手に入れてからにしたいと思ってます。

自己振り返り

出来ていたこと
  • 全体の見通しを見ること
  • 周りを見て、進捗確認をこまめにすること
  • 会話
出来ていなかったこと(=これから成長しなければいけないこと)
  • 変化を楽しむこと
  • 自分から機能実装をしていく姿勢
  • スピード&クオリティ

最後に

正直、今までのインターンで一番キツかったイメージがあります。。
メンターさんや人事の方からの毎日の事細かなFBを受け、毎日成長していってる感覚を味わいつつ、
まだまだ自分はダメだと感じる日々を送ってました。

だけどその分、成長できたことやまだまだ自分に足りてないところの発見が出来たことなど収穫がとてもありました!

インターンで関わった人事の方やメンターさん、そして一緒に開発したメンバーの2人にはとても感謝です!
ありがとうございました!!