こんにちはカレイドです。
7月の中旬からReactのWebエンジニアとしての仕事が始まり、今が12月の中旬なので実際にアプリ開発を行ってもう5ヶ月も経つんですね。
何回か記事にはしているのでその都度の成長を見たい方は是非最初からどうぞ!
【プログラミング】独学から実務へ移って1週間で感じた壁と学び【前編】
最近色々研究関連の方で忙しかったのとTOEICで手一杯だったのですがひと段落したので、プログラミングの方を振り替えるいい機会だと思ったのでまとめておきます。
簡単な自己紹介です。
タスクが細切れな物から大きな物へ
先にお伝えする内容のまとめをするとこの見出しそのものです。与えられるタスクが大きくなり、責任感が強い仕事を任せてもらえるようになりました。
例をあげると入った当初はプロジェクト自体にも慣れていないので、一つのコンポーネントを作る。小さいロジックを作る。といったような感じでプロジェクト全体(木)に対して葉っぱに相当する部分をやっていました。
この作業はプロジェクト全体を把握するためにとても大きな役割を果たしてくれました。当初はドメイン駆動開発などそういったことはあまりやっていなかったので慣れるまでに非常に時間がかかりました。
でも、こういった確立された実装手法は学びのコストが大きい反面、慣れてしまうと後の実装面で大きく楽ができます。
例えば、Aに関する実装はそれ単体でまとまっているのでどのようにロジックが配置されてどのようにコンポーネントに受け渡されるかといったことが確立されています。なので最初に学ぶ段階ではあのファイルからこのファイル行ってと、移動するファイルが多いので大変でした。
ところが次に、別のBという実装を行うときにはほぼ同じ感じで実装されているので行き来するファイルが多くてもやっていることを理解するのは容易い上に実装も細切れでまとめやすいといった利点を味わうことが出来ます。
特に初学者、実務へ入り立ての方はこの最初の壁がとても高く感じると思います。実際に私もそうでした。もちろん自分のポートフォリオで似たようなことはやっていましたが、実際のTypeScriptの環境でしっかり管理されたプロジェクトになると規模が段違いなんですよね。
例えば私の場合はWebにおける実装とモバイルそれぞれ関連するところがあるので今はモバイルだけですが将来的にWebがどういう役割を果たすのかと言ったところもたまに意識したりします。
当然難易度の高くて最初は苦労しましたが、5ヶ月たった今は結構慣れました。今はメンバー6人ほどいますが3番目に位置するのでもはや結構長くやっているレベルまであります。
主要な機能の実装を担当させてもらった。
先ほどの話と通ずるところがありますが、3ヶ月すぎた頃からだいぶ実装も進み、一つの大きな実装を任せてもらえることになりました。
大きな実装といっても、きちんと分解すると一つ一つは今までにやったことの積み重ねになっています。A~Fぐらいまでのそれぞれの実装した部分を要所要所で取り出しながら一つのものに形成するといった感じです。言ってしまえば今は通知を作る作業をやっています。
みなさんがiphoneやandroidから飛んでくるあの通知です。通知自体のロジックと、その通知で配信する内容に必要な情報、時間などが必要なのですがわかってしまえば意外と一直線でした。ただ分量が多かったので結構時間がかかっています。
自分に身近な機能だし、実装方法を学ぶと自分が使っているアプリはこういうことやってんだろうなーといった新しい目線が増えてとても楽しい実装でした。
私が書く記事では結構何度も言っていると思いますが、とにかくプログラミングは基本的にはできることの足し算です。できるだけ既存のコードを引っ張って他の人がコードを読んでも分かりやすいように作るのがモットーです。それでいて画面には全く違うことが処理されるのですからプログラミングは面白いですね。
例えば、ルーティングの処理なんてファイルがどれだけ分割されていても書かれていることはほとんど同じようなことですよね。分量多くても同じことの繰り返しなので読み手の負担はほぼ0です。
逆に個別の実装というのは他の部分でほとんど使われないので読み込むのが難しいと言った感じです。私のも他とは切り離されたロジックなのでやや大変なところですがなんとか食らいついています。
プロジェクトに共通で使っているライブラリをいじらせてもらった
先ほどまでの話は一つのXというプロジェクトの中でしか使っていない機能なのでミスがあったとしてもそんなに大きなことにはなりません。
ところがちょうど最近通知関係で色々実装するときに自社で扱っているライブラリの問題でうまく動かないということがわかったのでせっかくなのでやってみようということで、他のYというプロジェクトでも使っているライブラリを触らせてもらいました。
今までと一番の大きな違いはコードの責任の重さですね。
もちろん自分のコードにはいつも責任を持って書いていますが、自分の書いたコードが自分の関わっていないプロジェクトまで影響を及ぼすという経験自体初めてだったのでちょっとびっくりしてしまいました。
でも基本的にはやることは同じで心強い先輩もいるので実装を書いてコードを書いて、先輩にレビューしてもらってといういつもの流れでした。
今のところ特に問題もないので一つ大きな壁を乗り越えた感じです。
おまけ ベンチャーならではのコーディング以外の視点
さて、コーディングの話はこのぐらいにしてベンチャーならでは、自分の中ではこんなに早く学べて良かったことについて話そうと思います。
それはずばりプロジェクトの全体的な把握とか、かかっている出費などなど、正直多くの大学生が普通に授業を受けて卒業して入社する会社の場合はこういうこと意識して仕事するのはだいぶ先かほとんどないんじゃないかなっていうところです。
Twitterとかの優秀な人がこういうの見るとそんなことも考えずに仕事するなんてありえない!っていう声が帰ってきそうですがほとんどの大学生がこんな感じだと思います。経営学部とかそういうところだとやはり学ぶんですかね。だとしても実際のプロジェクトに参加して経験できるというのはやはり大きなメリットになります。
一人の従業員に対して月いくらかかっているのか。そしてそれが全従業員だといくらになって毎月いくら支出があるのか。それに対して入ってくる収入はいくらになっていてどのくらい赤字黒字なのか。そういう部分って働かせられている人の視点だとまず見ないと思うんですよね。会社のために与えられた仕事をして、その分提示されている給料をもらってという思考だと一体いくら会社からお金が出ているのか、そのプロジェクトにいくらかかっていくら利益として出ているのか見ないと思います。
そういう面でいうとこのブログはすごいいい例だと思います。このブログを立ち上げて環境を整えるために使った費用。毎月維持する費用。それに対していくら稼げているのかを考えることができます。
でも、会社単位で考えたときに出ていく支出の話を聞いたときはまじか!と思いました。規模が段違いですね。まだまだ発展途上のベンチャーだったので、一大企業となると一体いくらになるのか想像もつきません。
残り4ヶ月ほどにはなりますが、これからもいろんな視点をもってコーティングの仕事できたらいいなと思います
それでは久しぶりの記事更新でしたが今新しい取り組みを少しずつ始めているのでその辺もお見せしていけたらと思います。