Patのブログ

プログラミング、英語、科学的学習法、日々の勉強記録

アラフォー未経験から転職して1ヶ月経ったプログラマーの仕事内容さらしてみる

前回書いた記事が突然バズって、その反響の大きさに驚いた。

「感動した」「胸が熱くなった」などの好意的なコメントも多くいただき、とても嬉しかった。

昔の自分が知りたいと思っていたことを書いただけだったのだが、この辺の情報を知りたいと思っている人は多いのかもしれない。

ということで今回は、昔の自分が知りたかったことシリーズの第2弾として、web系プログラマーの仕事内容について書いてみたいと思う。

あくまでも1ヶ月しか経験のない立場からしか書けないが、逆に1ヶ月目ならではの視点というのもあるだろうから、そこらへんをできるだけリアルに書き残しておきたい。

以下に該当するような人には役立つかもしれない。

  • web系プログラマーの仕事内容を知りたい
  • 未経験から転職して最初に振られる仕事のレベル感を知りたい
  • チームで開発ってどうやるのか知りたい

ざっくりどんな仕事してんの?

自社webサービスの開発・保守。資料作成や会議なども含まれる。

勤務形態は?

正社員。6月はしばらく出社していたが、コロナ感染者数増加のため7月からはずっとリモートワークが続いている。

リモートになる判断も迅速で「感染者が増えてきた。じゃあリモートにしよう」という感じでとくに何の支障もなく切り替わった。*1

この辺の柔軟性はプログラマーという職種ならではというところがある。

ちなみに全面的にリモートになっているのは開発者だけで、他の部署では出社しているところもある。

典型的な1日は?*2

9:00 業務開始、朝会(今日やることの確認、懸念事項の共有など)

「朝会でわからないところ質問したら、このあと教えてくれることになった。ラッキー!」

9:30 ペアプロでスタッフ追加機能のロジックを教わる

「丁寧に教えてくれたおかげでコードの意味がよくわかった。上から目線がないのって本当に素敵だなぁ。」

12:00 休憩、お昼

「テック系YouTuberの動画でも見ながら昼飯食べるかな」

13:00 勉強会(技術書読書会、ハンズオン講習など)

「開発チームみんなでJavaScriptの本を読む。つよつよプログラマーの方たちによる一言注釈がためになるわー」

14:00 コード書く

「pluckってどんなメソッドだっけ?ああ、そうか、だからこれがこうなって。ふむふむ。ということはこうすれば動くかな?あれ?おかしいなぁ。binding.pryで変数の中身を確かめると...あ!slackにサービスのエラー通知がきてる!自分はまだ関われないけれど、対応が大変そうだ...。」

17:00 夕会(今日やったことの確認など)

「エラーの対応で皆さん疲弊気味だな。聞きたいことあったけど、ちょっと控えておこう...」

18:00 業務終了

「業務終了!子供が帰ってくる前に夕食作らないと...」

プログラマーの仕事って具体的にどんなことすんの?

主に要件定義・設計、開発、保守などの仕事があり、いま自分が担当しているのは主に開発と保守の仕事だ。

プログラマーになる前に疑問だったのが「サービスをリリースしたあとは何をしているの?」ということだった。

メインの機能ができてしまえば、あとはやることなどそう多くはないのではないかと思っていた。

これがとんだ間違いだった。

具体的には以下のような仕事をすることになる。*3

UI(見た目)の変更

具体例

  • ロゴの位置を少し変える
  • リンク先を変更する
  • ボタンの色を変える
  • 文面を変える

クライアントや営業からの要望などでUIを変えることはけっこうある。

サービスを利用するなかで「もっとこうしたら見やすい・使いやすいのに」という声が出てくるのは普通のことだからだ。

ちなみに自分が初めて割り振られた仕事も「リンク先のURLを変更する」というものだった。*4

ただ今の会社ではデザイナーがいるので、開発者が一からCSSを書くようなことは少ない。

新機能の追加

具体例

  • 管理者がユーザーを追加できるようにする
  • 記事にタグを付けられるようにする
  • 最近よく読まれている記事が上位に現れるようにする

これもクライアントや営業から「こんな機能があればもっと便利になるのに」という声を受けて追加することになる。*5

リリースから何年も経ち運用も安定しているサービスの場合、新機能追加は相対的に少なくなるが、それでも定期的に新機能の要望というのはあるもので、「すべてやり尽くしてしまってやることがない」などという状態にはなかなかならない。

保守

具体例

IT技術の流行り廃れは早いので、来年からこの技術は使えなくなる、なんてことがよく起こる。

「家が老朽化したのでレノベーションする」みたいなイメージだが、webの世界ではそれが数年のスパンで起きる。

バグの修正

具体例

  • 投稿ボタンをダブルクリックすると二重投稿されてしまう。
  • 注文中に日付が変わるとエラーになってしまう。
  • 通知設定しているのに通知がこない

バグはサービスの価値と信用に直結するので、最優先で対応される。

正直、自作サービスを作っている段階ではバグについてそれほど深刻にとらえていなかったのだが、業務について初めてその怖さがわかった。

「エラーが出ています。お客さまの〜件の注文に失敗しています」などの通知がくると、まだ直接関係するわけではないにもかかわらず、背筋が凍る思いがする。

さいわい、開発者や開発に近い人たちは皆、バグに対して優しい気がする。

バグが誰にでも起きうることであることをよく理解しているからだろう。

もしこれが「お前なにをやっているんだ!」と叱責されるような環境であったとしたら、相当つらいだろうなと思う。

雑務

具体例

サービスの価値に直結するわけではないが、長い目で見ればやった方がいい仕事のこと。

リファクタリングプログラマーにとってはとても大切に思えるが、ユーザーからすると価値に直結するわけではないので雑務として扱われる。

自分はまだ開発で貢献できる領域が少ないので、ドキュメントを書く機会が比較的多い。

ただ、優秀なプログラマーほど誰に頼まれるでもなく他者のために率先してドキュメントを書いていたりするので、初心者だけがやる仕事ということでもない。

新規サービスの設計・開発

これはまだ自分は経験していないのでわからないが、新規サービス開発もどんどんされているようだ。

凄腕のプログラマーたちが徹底的に議論しあって新しいサービスを作り上げていく様を見ていると、傍目にもその熱気が伝わってきてワクワクする。

チーム開発の仕方

基本的にはアジャイル開発というやり方で進めていく。

これは仕様書通りに開発することを目的とするのではなく、関係者で話し合いながらその都度計画を修正していく柔軟な開発スタイルのこと。

今の会社では3人から5人くらいのチームを組んでいる。

2週間に1回スプリント会議というものがあり、次の2週間でやるべきタスクを話し合いで決めている。

もしタスクが終わらなくても責められるようなことはなく、むしろそれはチームの責任なので次回の会議で計画が修正されるだけだ。

アジャイル開発など日本の現場ではほとんど行われていないという噂も聞いていたが、ほとんど本で読んだ通りの開発が行われていた。

個人的にこのアジャイル開発はエンジニアになってから特に気に入っているもので、開発者に過剰なプレッシャーをかけないし、心理的安全性が確保されている点が素晴らしい。

チーム運営についてこれほど構造化された手法は少ないと思うので、他業種でも多いに参考になると思う。

レベルは高すぎない?ついていけてる?

今はまだ本格的な業務に入ったばかりなので、ペアプロなどで教わりながら進めてもらっている。

大量のコードを読んで理解しないといけないのは大変だが、今の自分のレベルにあったタスクを与えてもらえているので、なんとかついていけている。

自分と同じように未経験から転職した人が同僚にいたり、チャットでわからないところを質問すると誰かが必ずコメントをくれるという環境にいるのも大きい。

仕事はコードを書くだけ?

コードを書く以外にも仕事はたくさんある。

たとえば、自分が書いたコードを他者にわかりやすく説明する文章は、コードとセットで必ず書かなければならない。

他にも他部署からの質問にチャット上で答えたり、自分はまだやったことがないが会議用の資料作成もしないといけない。

会議の時間は役職によって大きく違うが、いまの自分の場合、だいたい全体の1〜2割といったところだろう。

仕事内容に満足している?

想像以上にプログラミングに関わる時間が多く満足している。

仕事のレベルも今の自分のレベルにあったタスクを選んでもらえているので、まるで良質なパズルゲームを解いているみたいに問題解決の過程を楽しめている。

アジャイルによるチーム開発はとくに気に入っていて、開発者の主体性と心理的安全性が確保されているところがいい。

リモートワークも、自宅環境によっては生産性を維持するのが大変という側面もあるが、通勤時間から解放されるというのは想像以上に人生の幸福度を高めてくれる。*6

プログラマーの働き方は先進的

ここまで書いたことは、たった一ヶ月の経験しかない新米プログラマーの観察日記に過ぎない。

一口にweb系プログラマーの仕事といっても、会社の種類や規模、経験年数や役職などによって相当違ったものになるだろう。

それにもかかわらず今回プログラマーの仕事内容について書いたのは、自分が就職するにあたってその辺の情報が少ないと感じていたからだ。

プログラマーの働き方というのはとても合理的で、これからの時代を先取りしているところがあるのに、一般的にはそれほど知られていない。

私のプログラマーのイメージも、上司に叱責されながら納期に追われ日夜残業のブラック労働といったものだった。

そういう現場もあるのかもしれないが、そうでないところもある。*7

プログラマーの働き方についてプログラマー自身が発信することで、「プログラマーって楽しそう!」と思う人が少しでも増えるといいなと思っている。

*1:もちろん私の知らないところでは色々あったのかもしれないが。

*2:実際にあったことそのままは書けないので、現実に似せたフィクションにしてある

*3:ここで出している具体例はあくまでも業務に似せた例であり、実際の業務そのままではない。

*4:誰にでもできる仕事だが、マージされた瞬間はジーンと来るものがあった。

*5:もちろんそうした声のすべてを反映させるわけではなく、開発側からも意見を述べて両者が合意した時点で開発に着手することになる

*6:ただしリモートはずっと続く予定ではなく、コロナ禍のなかでの限定的な措置のようだ。

*7:もし私が働いている会社について知りたいという人がいましたら、お名前を明記したうえでTwitter経由で私までDMいただければ返信いたします。