読者です 読者をやめる 読者になる 読者になる

seri::diary

プログラミングのこととかポエムとか

自社サービス開発のエンジニアになって1ヶ月が経った

あっという間に

今の会社に転職してから1ヶ月が経った。
前回のエントリーで1週間経ってからの感想を述べたが、
年末という良い区切りを迎えたので改めてこの1ヶ月を振り返ってみたい。

俺って実はかなりダメな奴なんじゃね?って10回思った

至るところで自分のレベルの低さを痛感した。

この一ヶ月は既存機能のバグフィックスやちょっとした機能追加をやりながら自分の担当範囲についての理解を深めていった。

しかし、

  • 既存のソースから仕様を読み取り切れない
  • 多重継承しているクラスを追っかけながら仕様を頭の中で整理できない
  • 新しくメソッドを書くときにすでに似たようなメソッドがあるのに気づかずに新しくメソッドを書いてしまう

※因みにフレームワークはStruts2+Springをベースに独自に拡張したもの

なんてことを繰り返しまくった。
慣れの問題もあるだろうが、ソースから仕様をきちんと追って、どう修正するのが最適なのかというところまで自分の力でリーチできないのはかなり痛かった。。前職でもスパゲッティコードを必死で読みといて仕事をしていた経験もあったので、何となく「ソースを読んで理解する」ことにはある程度自信があったが、そんな経験が全く通用しなかった。

SI的な開発と自社開発の違い

まだ新しい言語やアーキテクチャに慣れていない、というのもあるが、余計な仕事を増やせば、それがレビューしてくれる他のエンジニアの作業コストにそのまま繋がる。
それに、慣れていないことは言い訳にならない。
与えられたチケットに対して、他のメンバーに対して責任を持つ。
それが、今までほぼ一人でSI的な開発をしてきた点との大きな違いだと感じる。


前職まで(前前職はSIer、前職はWebメインの受託開発)は、お客様からいただく予算と決めたスケジュールの中で、自分のペースと責任で仕事をすれば良かった。だからお客様さえ文句を言わなければある程度好き放題できた(これもどうかとホントは思うが)

もはや「お客様」はいない。

自分が向き合うサービスと、一緒に開発をするエンジニア、直接ユーザーと向き合う営業チームなどの他部署のメンバーが、つまりは「お客様」に代わって「責任をコミットしなければならない存在」。

サービスを使ってくれるユーザーももちろん責任をコミットしなければならない相手ではあるが、それと同じぐらい重要なメンバーが他にいる、ということ。

「自分で考える」が基本の世界

結果的に責任は重くなったと思う。
設計から品質の担保まですべて自分で責任を持たなければならない。

でもその分、凄く裁量が増えた。

例えば、降ってくるチケットも「この画面は○○という問題を抱えている。これを解決できるように機能を修正して欲しい」みたいな、”ざっくりした形だったりする。
どう直すか?それは「自分で使いやすいようになるように考えろ」と言われる。

もちろんチームリーダーに「大体こんな感じの修正でいいですかね?」ぐらいのことは確認してから作業に着手するが、例えばそこから「こういう機能もあった方がさらにいいよな」と思ったら、自分の責任で実装することができる。(もちろんレビューはする)

また、「ここのコードはこう書くべきじゃないから直す」というのも、ロジックさえ間違ってなければ認められる。Java周りはまだ自信がないこともあったので、Javascriptでの要素のとり方が大雑把で危なかっしい実装を直したり、HTMLのクラス名、ID名が適当なところを直したりした。


自分で考える、ということは

  • 「ユーザーの視点」でどうしたら使いやすいかを考える
  • 「サービスを提供する会社の視点」でどうしたら利益が上がるかを考える
  • 「エンジニアの視点」でどうしたらメンテし易く分かりやすい実装ができるかを考える

という風に、いくつもの視点を持って最適な解を求めることだと認識している。

「ユーザーの視点」も「サービスを提供する会社の視点」も正直まだまだだが、いずれは自然とこの3つの視点でサービスを改善する方法を考えられるようになりたい。

そのためにも、与えられたチケットに対して思考するフェーズが凄く重要。
何となくこの一ヶ月は「早く実装しないと」という焦りからか、上記のような変な失敗を何度もやってしまったような気がする。
来年からはもっと思考するフェーズに時間を割いて、最適な解は何かを常に考えながら仕事が出来るようになりたい。

Javaの勉強素材

Javaの勉強は色々と継続していかなければならない。
今使ってるフレームワークの知識もそうだが、DIやAOPの概念やら色々と基礎的なところがまだまだ足りないと感じている。

会社の先輩に「Javaの初心者本よりちょっと上くらいの人が読む本ないですか?」と聞いたら
以下の本とサイトを紹介してくれた。

Effective Java 第2版 (The Java Series)

Effective Java 第2版 (The Java Series)

その名の通り「Javaはこう書くと良いぜ」みたいな本のようだが、今のところアノテーションジェネリクスについてのみ読んだ。
年末年始使ってじっくりと読んでいきたい。

Javaメモ 目次

Javaの基礎文法からサードパーティのライブラリの紹介まで幅広く記載されている。
標準クラスのメソッド一覧はかなり世話になってたり。
String.startsWith()とか便利なのにまだすぐ出てこないので。

最後に

現在うちの会社はエンジニア募集中です。
もし興味のある方はぜひこちらのページをご覧ください。
自社サービス開発に興味のある方、自分で考えて自発的に開発がしたい方におすすめです。