株式会社Casa TECH BLOG

日々、FAX/電話/紙等リアルと戦う事業系IT部門の戦士たちのブログです。

文系出身のプログラミング未経験が入社して1年経ったので振り返ってみた

自己紹介

はじめまして。Casa IT戦略部の小倉と申します。
2021年3月よりエンジニア未経験として中途入社し、早くも1年が経ちました。 今は不動産の代理店向けサービスの開発に携わらせてもらい、機能の追加や修正を担当しています。

これまでの経歴をざっくりまとめますと、文系の大学を卒業し電気施工管理会社に入社。電気工事士として新築マンションやオフィスビルの改修工事、マンションのオートロック化などを経験し、そこから物件の完成後に興味を持ったため、不動産の仲介会社の営業へ転職。 その後プログラミングスクールを卒業しCasaに入社しました。

↓スクールで作成したアプリです。 github.com

なぜエンジニアを目指そうと思ったか

不動産の営業として勤めていた頃、物件の賃貸借契約における重要事項説明は、店舗へ来店していただき対面で宅建士から説明を受ける必要がありましたが、オンライン上で重説を行うIT重説を徐々に導入するようになりました。

それに合わせてオンライン内見なども導入されはじめ、これによって契約締結のために来店していただく必要がなくなり、一つの契約にかかる時間が削減されましたが、当時はまだ賃貸借契約は全て紙で行われていたため、契約書への記入ミスなどがあれば書き直しのために再度書類を郵送し直す必要がありました。そういった作業に対して費やす時間がとても多く、営業活動に費やす時間が削られてしまったりと、無駄に感じることがまだまだ不動産業界には多かったです。

この先不動産業界のIT化が進めば、時間だけではなく契約に必要な紙や郵送費用などが削減できるので、結果として業務効率を上げることもでき、営業活動にかける時間を増やすことができるのでは?と考え始め、IT業界の力に可能性を感じたことがきっかけでした。

研修期間(入社〜3ヶ月)

入社後の研修期間では、タスク管理のアプリを作成しました。
要件定義ではペーパープロトタイピングで画面遷移図の作成や、モデルの設計図などに対してレビューをいただいたうえで実装に入りました。

使用した言語・ミドルウェア

主な実装機能

・ユーザ登録 (ログイン、ログアウト) ・ユーザに管理者権限を与える ・タスク登録機能 ・一覧表示 (ページネーション) ・詳細表示 (編集、削除) ・タスク検索、絞り込み、並び替え機能 ・タスクに終了期限をつける、優先度、状態を登録 ・タスクにラベルをつけて分類

苦労した点

  • スケジュール管理
  • Git、GitHubの操作

頑張った点

  • SQLの操作(コンソールでdbからデータを取得)
  • gemを使用せず実装した機能
    • ログイン・ログアウト
    • タスクのタイトルやステータスでの検索

研修を通して得られた学び

  • プルリクの粒度をなるべく小さく、機能単位で提出すること
  • コードのコピペで終わらせず、なぜこうなるのか?を根本から考えるよう意識して表面上の浅い理解のままにしない
  • 質問される側のことを考えて、思考を整理して質問する
  • 分からないことがあれば読み辛くても最新の公式ドキュメントを読む
    当時は参考にした記事のRubyRailsのバージョンを意識せずに実装したことが原因で、バージョンアップによってデフォルト値が変更されたため記述が不要になったメソッドを書いていたことについてレビューで指摘がありました。(protect_from_forgery メソッドや、form_withメソッドのオプション local: true など)
    技術記事は読みやすいので公式ドキュメントを避けがちでしたが、そういった指摘をいただいてからは最後に確認してから実装に入るようになりました。
  • gemの導入時は、PRにGitHubのリンク等を貼る
    個人アプリの開発では、なぜこのgemを採用するのかを意識せずに参考にしていた本や動画などで紹介されるがまま実装していたため、その感覚で開発していましたが、実際の現場では導入したいgemのGitHubを確認して、star等の数で利用者数や、コミットログ、PRを見てメンテナンスされているのかを見たりして、gemを導入して良いかの判断材料にしたり、同じ用途で複数の有力なgemがある場合には、なぜそのgemを採用したかなどの理由を書き、チームで判断したうえで導入を決めることを学びました。

初めての実装(4ヶ月目〜)

初めてのタスクはSMSの文言を動的に変更させるといった修正でした。
生のコードを見るのはこれが初めてでしたので、先輩エンジニアの方々が書いたコードに手を加えて良いのかとビクビクしながらの実装でしたが、無事にリリースされた時はとても達成感がありました。

実装で経験したこと

入社してから苦労したこと

  • WEBの仕組みについて
    この辺りは本を読んだり、基本情報技術者の勉強を進めていくことで基礎を学びました。

  • SQL
    DBの大量のテーブル同士を必要な条件で結合して情報を取ってくるには、どこに何の情報があるのか、ある程度はテーブルを把握しておく必要がありますし、何よりSQL自体書いたこともないところからのスタートでしたので、大変苦労しました。 ここは入社前に勉強しておくべきだったと反省しています。

  • git
    gitについてはスクールや個人開発でも利用していたのですが、 チーム開発は経験がなかったため、ブランチルールの理解やコンフリクトの解消など、gitの操作など色々と覚えることが多かったです。

今後の目標

  • 学んだことについて記事にする
    月に1冊は新しい技術書を読み、3ヶ月に1度は記事を書くようにします。 技術記事を書くことで、言語化能力をつけ、知識を定着させていこうと思います。

  • 今年の夏に Ruby Gold に合格する

  • 個人アプリを開発する

  • 勉強会を続ける
    週末はスクールの同期と集まって勉強会を実施しています。 自分のモチベーションを上げる良い時間になっているのでこれからも続けていきたいです。

1年を振り返って

始めの頃は手が詰まり実装が思うように進まないことが多く、1人で抱え込んでしまうことが多かったです。

そういった悩みも週に1度の上司との1on1ミーティングや毎日の夕会での進捗共有など、チームに相談や質問がし易い環境がありますので、 詰まってる部分の解決のためのヒントや、今自分に足りない部分や業務を進めていく上でのアドバイスをいただき解消することができています。

また、ペアプログラミングを通して先輩エンジニアのコードの書き方やデバッグの方法、既存コードの見方や処理の流れを学ぶことができました。

質問したいけど何が分からないのか分からない状態だった始めの頃と比べると、ここまでの処理はできているがこの先の処理が上手くいかない。というように切り分けができるようになってきたことで、質問したい箇所が具体的になってきたかなと感じています。

まだまだ先輩方からのサポートをいただきながらではありますが、 チームの1人として開発に入らせていただき、既存サービスへの機能追加では、要件定義から基本設計、開発、テスト仕様書の作成、テスト実施まで一通りの流れを経験させてもらえたり、上流工程を早いタイミングで経験することができている環境に大変感謝しています。
早く1人前のエンジニアになれるように、これからも邁進していきたいと思います。