外資系マネージャーの独り言

日本で外資系企業のソフトウェアエンジニアマネージャーをやってる人のブログです

ソフトウェアエンジニアとしての経験値

大学を出て以来、ずっと何かしらの形でソフトウェア開発の仕事に携わってきたわけですが、前職(日本の製造系)でのソフトウェア開発環境と、今の職場(外資系ソフトウェア企業)のソフトウェア開発環境の違いがとても大きくて、よい意味で刺激を受けています。

ソフトウェアの開発と一口に言っても、プラットフォームの違いからチーム構成、開発プロセスの違いなどなど環境は多々あるわけですが、今の職場の環境はソフトウェア開発に必要な仕組みが驚くほどよく整っていて、なかなか驚きました。一定以上の規模のソフトウェア開発のキモは、開発の進捗と成果物のテストをどうやって平行して進めていくかということに尽きると思うのですが、コードレビューやビルド、それにデプロイメントを行うシステムが素晴らしく発達していて、悪く言えば会社独自の仕組みやカルチャーに沿って仕事をするためのオーバーヘッドが大きい代わりに、ソフトウェアの開発管理が実に徹底されているのが特徴と言うことができそうです。ソフトウェアの開発そのものではなくて、開発フローに対してもしっかり時間をかけることで、結果的に全体としての開発効率は向上する…ということなのでしょう。

前職のソフトウェア開発が主に組み込み系デバイス向けソフトウェアの大規模開発だったのに対して、今の職場は汎用プラットフォーム上のサーバーソフトウェアの開発なのですが、どんなに小さな修正でも必ずチームメイトや詳しいエンジニアによるコードレビューが課せられていて、コードレビューはかなり真剣に行われます。コードレビューはすべて記録に残されていて、いい加減なレビューをする人は他のエンジニアからの信頼を失ってしまう仕組みになっているからということもありますが、それ以上にコードレビューの大切さを全員が認識しているということのようです。

開発環境はLinuxがメインで、言語は環境毎・ツール毎に異なりますが、最近は多くのメンバーがpythonを好んで使っています。Linuxは高校生の頃から触っていて、前職でも達人レベルの人が周りにたくさんいたので、そこまで苦労することなく開発環境に慣れることができたのはラッキーでした。

前職ではCやC++でゴリゴリと処理を行うコードを書くことがメインでしたが、今はフレキシビリティー(書き捨てご免系)の高いコードをサクサク書いたり、自動化ツールを設計・開発したり、既存のツールを修正したり、設定をいじったり…と、より幅広い範囲でソフトウェア開発に携わることができていて、なかなかよい経験になっています。

日本に居ながらにして100%英語環境で仕事ができて、かつソフトウェア開発の環境としても学ぶことが多い…というわけで、自分にとっての今のポジションへの転職は得るものが多くありました。何らかの分野のスペシャリストとしてその道を極めていくなら話は別ですが、ソフトウェア開発者としての懐の幅を広げるチャンスという意味で、様々な会社・開発チームで異なるプロセスを経験するのは長い目で見てメリットが大きいように思います。

今はチームを率いる立場にシフトしている状況ですが、これも新しいスキルを獲得する大きなチャンスと捉えて、頑張ってみようと思っています。

人間、じたばたと動くとチャンスに恵まれることがあるようです。ずっとじたばたするのは大変ですが、長い人生じたばたすることがたまにはあってもよいのかなと感じている今日この頃です。