見出し画像

プロのエンジニアとしての考え方の獲得

はじめまして。パーソルプロセス&テクノロジー(以下、パーソルP&T)の佐藤 由絃と申します。2023年に新卒で入社し、dodaサービスを裏で支えるシステムの追加開発やパーソルキャリア(以下、PCA)様からいただいた小規模なシステムの新規開発等に開発メンバーとして関わってきました。

本記事ではPCA様からいただいた小規模開発において私がプロのエンジニアとして得ることのできた経験と今後の成長についてお話していければと思っています。主にプロのエンジニアとして何が重要であるのかがテーマになっている記事です。

※2024年7月1日を以てパーソルプロセス&テクノロジーからパーソルクロステクノロジーへ事業移管されました。記事の内容は執筆当時のものです。


自己紹介

佐藤 由絃(サトウ ユイト)
グループソリューション統括部 グループソリューションクロス開発部所属。2023年に新卒でパーソルP&Tに入社後、dodaを裏で支える紹介業務をサポートするシステムの機能追加開発プロジェクトにアサイン。初めての業務で慣れないことも多かったが、何とか業務をこなす中で精神的に大きく成長する。その後に関わるプロジェクト(今回お話しするプロジェクト)でプロのエンジニアとしての考え方を獲得する。趣味は温泉巡りで、毎週末はほぼスーパー銭湯に行って1日ゆっくりしている。

プロジェクトの概要

本プロジェクトはPCA様から依頼を受けた小規模なシステムの開発案件で、具体的には「利用者のデータ取得、蓄積、整形し、そして分析しやすいための一連のシステムを開発してほしい」というものでした。     

実現したいシステムの流れ

今回のプロジェクトでは、上記図表の①~②までの流れを実現できるかどうかの技術検証を行うものとなります。
作成しなければならないものは大きく2つで、1つはPC情報を取得するためにPCA社員様のPC内で動作する所謂Agentアプリ、もう1つはデータを受け取り、BI上で加工しやすいようにデータを整形するシステムを持ったサーバです。これらの内容の作成の中で私が得た気づきについてお話していこうと思います。

<語彙補足>
BI→ビジネス・インテリジェンスツールの事、膨大なデータを、収集・蓄積・分析・加工し、データの分析を行うためのツール

プロジェクトにおける自分の立ち位置

プロジェクトは当初3名体制で開始しました(PM1人開発2人)。私は開発メンバーとして参加し、主要な開発者としての役割を任されました。もともと学生時代にプログラミングにはまり、働き出してからもプログラミングを中心に仕事をしたいと思っていたので、この役割は渡りに船でした。

<語彙補足>
PM→プロジェクトマネジャー、プロジェクト全体の管理をするリーダ的な役職

言語やフレームワークの選定

そういった立ち位置でプロジェクトが開始し、お客様と要件をすり合わせる中で私が考え方を変えるきっかけとなった「プロトタイプの作成」というタスクを行うことになりました。

プロトタイプの作成を任されて、プログラミングをたくさんできるというところで、モチベーション高くこのタスクに臨みました。実現したい内容自体は簡単だったこともあり、作成自体は良いペースで進み、ある程度完成した段階でPMに内容の確認をお願いしました。

そこで、PMに言われたのが「保守や運用の事を考えているか?」という言葉でした。私はそこで「考えています」とは言えませんでした。それもそのはずで、私は実現すること、動くものを作ることだけに集中してタスクに取り組んでしまい、保守チームが保守しやすいようにとか運用者が使いやすいようにというところを全く考えていなかったのです。

とくに、この章の名前となっている言語とフレームワークについての部分が顕著だったと思います。まず言語ですが、実現しやすいからという点からPythonで内容を記載していました。ローカルで動かすアプリ側ならまだしも、点検が必要になってくるサーバ内のアプリについては保守チームのナレッジが蓄積していないPythonは避けるべきでした。

次にフレームワークという部分については、言語の話が出た後に「ではこうするのはどうか」とJavaでの開発に切り替えることを提案しました。Javaであれば保守チームのナレッジもあってよいだろうと判断したからです。ただここでも私の考慮が足りていない部分がありました。

私はJavaでの開発の際には「フルスクラッチでの開発をする」と想定していました。学生時代はそのように開発していましたし、それで動くのであれば問題ないという考えがこの時点でまだ残っていました。

ですが、運用上の面で考えたときにフルスクラッチで作成されたアプリは潜在的なバグが入る可能性が高く、長期的な運用をしていくと予期せぬエラーが起きる可能性があると他チームの技術者にアドバイスをもらいました。

結果としてSpring Bootというフレームを使って再度開発を行うことになったのですが、この経験を得て「開発においてプログラミングだけを注視していればよい」から「開発はプログラミング以外にも様々な要素を考慮する必要がある」という考えに変わりました。

<語彙補足>
フルスクラッチ→フレームワークを用いないまっさらの状態でコーディングを行うこと

プロジェクトを終えて

自分の成長

私がこのプロジェクトで得た経験、それは「エンジニアはプログラミングがすべてではない」ということでした。個人でやる分には自分主体で使いたい言語を決めていいし、新しいフレームワークを試してみてもいいのですが「プロとして」チームで開発をしていく中では、それだけではだめでした。保守や運用などの全体感を考えた上での選定が必要になってくると、学ぶことができ「プロのエンジニア」としての考え方を得られました。

次のプロジェクトに向けて

次のプロジェクトはこのプロジェクトの続きで、今回行った技術検証フェーズを踏まえて、本番展開を行っていきます。新たにBIを利用することによる課題や、本番運用のための各審査を通過するための課題解消など問題は出てくると思いますが、技術検証フェーズで得られたプロのエンジニアとしての考え方を忘れずに業務にあたっていきたいと考えています。

終わりに

今回お話させていただいた内容は端的に言えば「相手(チーム・お客様)のことを考える」という部分かなと思います。新卒入社して間もなく、業務というものに対する解像度が低い中で得られた経験ということで、多くの人が当たり前に考えて行動できている部分だったかもしれません。

ただ、私がお伝えしたいのは、業務としてシステム開発に臨んだことがない人でも、短期間でシステム開発において何が重要かを学ぶことができる環境が整っているということです。入社を検討されている方の足掛かりとなる情報になっていればと思います。
ここまで読んでいただきありがとうございました。     


このブログを読んでいただきパーソルP&Tに興味を持っていただいた方は、是非お気軽にお問合せください。まだまだお伝え足りていない魅力がありますので、詳しくご説明させていただきます!


更新情報はXでお知らせしています