未経験エンジニア 約半年を振り返る

こんにちは! デザイン・システム室の祖父江です。
全くの業務未経験からエンジニアになって、7ヶ月が経過しました。
今日はこれまでを振り返りながら、実務に入って感じたことなどをまとめていこうと思います。

ファイル多すぎて意味不明

私は独学でJavaを学習したあと、RubyとRailsを教えてくれるスクールに通いました。
デザインシステム室のメイン言語はRuby、フレームワークはRailsということもあり、
「MVCはなんとなくわかるぞ!」と初めての開発案件に臨みました。

最初の開発は、カレンダーのような機能を社内システムに追加することでした。まさか、最初から機能一つ任せてもらえるとは思わず、嬉しい反面、大変なこともたくさんありました。

なんといっても、ソースコードの量にびっくりしました。今まで学習で作成したアプリケーションとは規模が段違いです。Namespace::UsersControllerのような区切られたコントローラーだったり、何十種類もあるようなモデルの中から、「そもそも自分の必要とするリソースってもうあるんだっけ?」という調査をするところから始めないといけなかったのですが、そもそもどこを見たらいいのかよくわかりませんでした。今もよくわからない

デザイン・システム室では質問もしやすい環境が整っていることもあり、どんどん質問して助けてもらいました。デザイン・システム室に来てよかったなと思うところの一つです。

コードも意味不明

どこを見ればいいのかを教えてもらったところで、当然、そこには他のメンバーの書いたコードがあります。 User.find(params[:id])とネストしまくりの分岐だけを駆使してポートフォリオ制作をしていた私にはちょっとスタイリッシュすぎて、理解に時間がかかりました。

これ、本当にRuby?

if 修飾子や、三項演算子、&.(ぼっち演算子)、 Enumerableなクラスへの操作(mapとか)などなど、この頃面食らったものはたくさんあります。

この頃、Rubyに関する知見を深めるのに『Effective Ruby』という本をおすすめされたのですが、「あなたのRubyをより輝かせる48の特別な方法」というサブタイトルを見て、
「そもそも私のRuby、輝いてなくないですか?」と思わず聞き返したものです。

結構ウケました。

適切なアドバイスをしてくれるのに、ユーモラスなメンバーが多いのも、
デザイン・システム室のいいところだと思います。
(その後『Effective Ruby』は、英語版と読み比べるほど好きな本になりました。)

技術と同じくらい大切なことに気づく

そんなこんなで3ヶ月ほどが経過したある日、ふと、技術については本やWebに答えらしいものがあるけれど、いいシステムについては作り方って書いてないなぁと思うようになりました。

DBがどうなっているのか、ロジックの速度はどうか、コードの可読性、疎結合な設計になっているかどうかは、保守性やスケーラビリティを高めるのに非常に大切です。
ですが、それと同じくらい、実際に使う人たちのことを考える時間だったり、そのシステムがあることによって、業務がどう効率化するのか意見を交わすことも同じくらい大切だと思います。

この頃、私は健康食のオンラインショップ、ミールタイムの改修をしていましたが、実際にシステムを使用する栄養士のメンバーに、頻繁にデモを見せに行ったものです。美味しそうな食事の画像が並んでいるので、開発中お腹が空きますよね。

プロトタイピングモデルというと大げさですが、「作って、見せて、改修」という流れを細かいサイクルで回すことで、色々な部署からフィードバックが得られます。
これこそ自社開発企業の醍醐味なのではないでしょうか。距離が近く、話しやすい環境であればこそです。デザイン・システム室の、というよりは、ファンデリー のいいところだと思います。


エラーが好きになる

最近の私はというと、エラーハンドリングにはまっています。
(本来、ハマるという表現はおかしいような気がしますが。)

エラーハンドリングとは名ばかりで、 StandardErrorで握り潰していないかどうか、
(適切なところで適切なエラーを出して止まるプログラムは好ましいと思っています)
そもそも、ユーザーに再操作を促すだけで解決できる類のエラーなのではないか、などなど、
エラーに対する向き合い方も色々あって考えるのはとても楽しいことです。

例えば、名前と年齢を扱うハッシュに存在しないキーを指定すると nilを返しますが、

 people = {name: "sobue", age: "28"}
 people[:osaifu] # nil を返す

構造体クラスを使えば エラーを出してくれます。

People = Struct.new(:name, :age)
people = People.new("sobue", 28) 
people.osaifu
# NoMethodError: undefined method `osaifu' for #<struct People name="sobue", age=28>

実体に近い挙動としては、私のお財布はnilを返すのが正しいと思われますが、その点は考慮していません。nilの原因は、母の日に実家にお米を送ったからです。on rice するのに適したものはシャケだと思います。

そういえば、弊社の工場でも美味しいお米や食材を仕入れています。YouTubeもぜひチェックしてみてください! やっぱりお腹が減りますよね、食べ比べしたいなぁ…。

終わりに

エンジニアになること自体、私にとってはかなりの挑戦だったのですが、デザイン・システム室に来てよかったなと思っています。私と同じように、業務未経験から入社してくれるメンバーもたくさんいて、だんだんと賑やかになっています。

デザイン・システム室では現在、一緒にチームやシステムを作っていくメンバーを大募集しています。Twitter(最近できました)も是非是非チェックしてください。雰囲気を感じ取っていただけるかと思います。ご応募は下記フォームから、お待ちしております!

募集要項およびエントリーフォーム >