優れたプログラマは、優れたビジネスパーソンでもあることが多いです。

ここで言う「プログラマ」は、ただ決められた仕様の通りにプログラムを組むだけのことをする人のことではありません。ソフトウェアを必要とする人と話をしたり、自分で企画を考えて、その設計を行ってプログラミングし、そして運用までの全てを出来る人をのことを指しています。

ソフトウェア開発を生業とする私たちソニックガーデンでは、お客さまのビジネスのために必要なソフトウェアをつくるプログラマであり、お客さまに価値を届けるビジネスパーソンでもあるメンバーのことを「ビジネスプログラマ」と呼んでいます。

そのビジネスプログラマに求められるのは、ただ技術力があるだけでは足りません。もちろん卓越した技術力は必要です。その上で、仕事を進めていくことができるビジネススキルや、仕事に対する姿勢やマインドも大事になってきます。

この記事では、優れたビジネスプログラマに共通するスキルとコンピテンシーを「心・技・体」のそれぞれに3つずつ、計9つの項目で考えてみました。

  • 心:「向上心」「当事者意識」「大人力」
  • 技:「設計力」「実装力」「運用力」
  • 体:「セルフマネジメント」「コミュニケーション」「ビジネスセンス」

ひとつひとつ見ていきましょう。

ambition-plant-through-sidewalk--richardstep-unleash-your-strengthsambition-plant-through-sidewalk--richardstep-unleash-your-strengths / RichardStep.com

心:向上心

技術力(技)と仕事力(体)も大事ですが、それよりも最も私たちが大事だと考えているのが「心」の部分です。それは仕事の姿勢や考え方に通じます。ソニックガーデンで修行する弟子たちは、この辺りから学びます。

私たちが大切にしている心の一つ目は「向上心」です。私たちはよく「ふりかえり」という活動をよく実施しています。ふりかえりについては以前に記事に書きました。

自律的に現場を改善できるチームをつくるための「ふりかえり」の進め方 〜 KPTと進め方のノウハウ

ふりかえりをすることで、今日より明日、今週より来週と、自分たちを見直し改善していくことを目指していく訳です。その源泉となるのが、向上心です。向上心がなければ改善しようと思えませんし、仲間からの助言も、うざったい指摘に思えてしまうでしょう。

私たちソニックガーデンのビジョンのひとつに「プログラマを一生の仕事にする、高みを目指し続ける」というものがあります。ここでいうプログラマはもちろん、ビジネスプログラマのことです。それをただ一生続けるのではなく、どれだけ高いレベルにいけるかを目指そうというビジョンです。そこには「向上心」は欠かせません。

心:当事者意識:リーダーシップ

私たちの組織は、なるべくフラットでありたいと考えています。小さな会社でいることも、フラットな組織を保つための手段でもあります。誰か一人が強烈なリーダーシップを発揮するのではなく、そのチームにいる全員がリーダーシップを発揮して、一丸となってビジョンに向かう、そんなチームが理想です。

今は私がソニックガーデンの社長をしていますが、それも一つの役割に過ぎないと思っています。いわゆる組織構造を表したピラミッドの組織図が嫌いです。高さがあるように見えると、どうしても上にいる人が偉く見えますよね。私が組織を見るときは、サッカーのポジションのように上から俯瞰してみるイメージでいます。上とか下ではなく、平面のどこにいるか、ということです。そう見ると、社長の場所は、上にいるのではなく、前にいるんだということがわかります。つまり、先頭に立つことが役割です。

そうした小さくフラットな組織で求められるのが、全員が責任者の気持ちでいることです。何かをするのに誰かに確認するとか、承認が必要となるとスピードは格段に落ちます。自分が責任者であれば、確認することなく進めることが出来るはずです。それだけの権限と責任を全員が持つチームのメンバーでいるためには、一人一人がリーダーシップを持っていなければいけません。

社員の全員に経営者意識を持つように、とは思いません。だけど、社員の全員が当事者意識は持って欲しいと思っているのです。私たちの考えるリーダーシップとはそういうことです。

心:大人力:ビジョナリー

私たちの考える最後の「心」大人力とは、長期的な視点を持てるかどうか、という点です。

大人であるというのはどういうことか、それは、物事の先を見据えた行動が出来るということです。特に対人関係において、先々の関係性を考えることができれば、継続できるような振る舞いをすることができます。逆に子供っぽいのは、あまり先々までのことを考えられずに、目の前の感情で行動してしまうことです。感情的に振る舞ってしまって、せっかく積み上げたものを台無しにするとか、これからの関係性を難しくするのは、ビジネスをする上でマイナスです。

自分の発言や行動によって、相手がどう捉えて考えるか、を考えられる人が大人です。自分のことしか考えられないのが子供です。大人として振る舞うことが出来れば、一緒に仕事をする仲間も、お客さまやパートナーさんも気持ちよく働くことができるのではないでしょうか。

本当に上手にビジネスをしようと考えるなら、誰かが損をするような取引ではなく、関係者の誰もが満足するような形を目指したいものです。短期的な視点でなく、長期的な視点をもつことで、少しでもそういったことを考えられるようになるはずです。

向上心・当事者意識・大人力の3つのマインドが、ビジネスプログラマが身につけたい「心」です。

技:設計力

技術力として重要な要素の一つ目は「設計力」です。ソニックガーデンでの仕事の進め方の特徴の一つに、お客さまやプロダクトオーナーとの打ち合わせの最中に設計をしてしまう、ということがあります。丁寧に描く必要はないですが、リアルタイムにその場でのソフトウェアの設計が出来るかどうか、そこがポイントになります。

会議とは報告の場ではなく、議論して仕事を進める場である、と考えています。ビジネスプログラマは、その場で要求を引き出し、作るものと作らないものを整理し、それを実現可能性を考えながらソフトウェアの画面やデータベースのレベルで設計を行うことをしています。実際に手を動かしてプログラミングを行うプログラマがそれをすることで、どれくらいコストがかかるのか、もしくは、実装しやすく費用対効果の出る設計は何かを提案することが出来ます。

よくある現場の問題として、誰かの設計した内容でそのまま実装しなければいけなくて、よけいなコストがかかっているにも関わらず実装しているというものがあります。これによって、かけなくてもよかった無駄なコストが発生するという問題と、そう思いながら実装することで開発者のモチベーションも下がってしまう問題の両方が発生します。設計をしている段階から開発者が参加して、こうした方が簡単に実装できますよ、と言ってあげることがお客さまやプロダクトオーナーにとっても、開発者にとってもハッピーですし、フェアなはずです。

そのために必要なのが、リアルタイムにプロダクトオーナーとディスカッションしながら設計できるスキルです。

以前に設計に関する記事を書きました。

ソフトウェア設計とは何か 〜 設計にはプログラミング経験が必要か否か

技:実装力

設計したソフトウェアを確実に作り上げることも、必要とされるスキルです。「実装力」と呼んでいます。設計した人間と別の人間が設計すると、その時点で伝言ゲームになることと、前述のように、プログラミングのことを想定した設計が出来なくなってしまうので、ソニックガーデンでは、同じ人が設計と実装の両方するようにしています。

私たちソニックガーデンでは、プログラミング言語にRubyを採用していて、その利用を社内で統一しています。自社サービスも受託も、どんな案件であっても、Rubyを採用しています。それは、私たちのビジネスモデル「納品のない受託開発」では、お客さまに提供する価値がプログラミング言語に依存しないという特徴があるからです。

Rubyの良い所のひとつは、初心者は初心者なりに、上級者は上級者なりに、プログラムを記述できるようになっている点です。経験を積めば積むほど洗練された書き方で表現できるようになります。そのことは、可読性や保守性に大きな影響を与えます。Rubyの場合、その振れ幅が他の言語に比べて大きいように思います。

だからこそ高い実装力を持つことは、可読性・保守性の高いソースコードを創りだせることにつながります。

以前に実装に関する記事を書きました。

写経で身につけるプログラミングの基本

技:運用力

"DevOps"という言葉をよく聞くようになってきましたが、自分で作ったソフトウェアを自分自身で運用することが、最も効率のいい"DevOps"の形です。そのため、設計と実装を行った開発者がそのまま運用まで行うことをしています。

ウェブアプリケーションの場合、動かしている間こそがソフトウェアとして価値を出している状態であり、運用こそが価値に直結する大事な仕事です。運用の際に問題になるのは、何か障害などが発生した際に、運用だけを担当する人がいたとしても、その原因の切り分けが出来なくなってしまうことです。何が動いているのか、わかっていないと対応は出来ません。

アプリケーションを開発した人間が自分自身で運用すれば、そういった問題は起こりません。また、運用のしやすさを考慮した設計をすることになり、全体でのコストを下げることが実現できます。

ソニックガーデンの場合、すべてのインフラはAWSやHerokuといったクラウド環境で運用を行います。それによって、大幅な手間の削減ができるため、プログラマだけでも運用することができるようになりました。また、仮想化されていることで、よりプログラマが自動化などの処理を作り込むことで、効率化を図ることができるようになっています。クラウドの登場によって、運用はクリエイティブな仕事に変わったのです。

設計・実装・運用の3つのスキルが、ビジネスプログラマが身につけたい「技」です。

体:段取り:セルフマネジメント

ビジネスプログラマであるためには卓越した技術力が必要ですが、それだけでなく、仕事の進め方についても実力が必要です。その仕事の進め方で差がつく能力は、セルフマネジメントができるかどうか、です。セルフマネジメントについては、以前に記事を書きました。

セルフマネジメントのレベルと欠かせないスキル 〜 自己組織化されたチームを作るためには

誰か管理者がいて仕事を決めてくれて、それをただこなすような人はビジネスパーソンとしては、まだまだです。自分で価値を産む仕事を考えて創りだし、自分自身でその仕事の段取りを組んで、必要に応じて周囲の助けを借りながら、仕事を遂行していくことが出来て、ビジネスプログラマとして一人前です。

私たちソニックガーデンでは、全員がセルフマネジメントできるメンバーで構成されるチームを目指しています。

体:対話力:コミュニケーション

お客さまやユーザなど求める誰かに価値を届けたいと思うならば、たった一人で仕事をするだけでは実現できません。価値とは届ける相手がいて初めて成立します。そのために必要なのがコミュニケーションの能力です。コミュニケーションについては、以前に記事を書きました。

エンジニアに求められるコミュニケーション能力とは〜社交性なんてなくたって仕事はできる

コミュニケーションとは別におしゃべりであることではありません。ビジネスプログラマであれば、どんな価値を求めているのか知る為には対話は必要ですし、自分のつくったアプリケーションの価値を伝えるためにも対話は必要です。また、自分ひとりで出来ない仕事をするためには、仲間と対話して助けてもらう必要もあります。

他者とのコミュニケーションを拒絶するなら、言われたことだけをする仕事しか出来なくなってしまうでしょう。

体:商売力:ビジネスセンス

ビジネスパーソンであるために大事な3つ目のポイントは、ビジネスセンスがあることです。ビジネスセンスと言ってしまうと難しく感じるかもしれませんが、結局は仕事とは商売をしているのだ、という感覚のことです。

シンプルに考えると商売というのは、価値を求めるお客さまに対して、自分のできる価値を提供して対価を頂く、その取引のことです。会社員を長く続けていると、つい給料は会社から出るものだと思ってしまいがちですが、その給料の大元は、お客さまに提供した価値の対価として頂いたお金から出ている訳です。

フリーランスになって自分で仕事をとってきて仕事してきたような経験がある人は、この感覚を持っている人が多いです。フリーランスの中にも、業者に登録して仕事を貰ったり、フルタイムで派遣されたりしてる人の場合は、あまりこの感覚がないようです。(ビジネス感覚がないからこそ、そんなことになってるのでしょうけれど。)

自分に支払われる報酬は、「貰う」ものではなく、「稼ぐ」ものだという感覚を持つことです。そのためには「どれだけ働くのか」という考えから、「どれだけ価値を出すのか」という考えに変わらなければいけません。時間も含めて投資をする感覚を持つことです。たとえ給料だとしても、自分で稼ぐからこそ出るのです。

自ら段取りできるセルフマネジメントの能力、価値を届けるためのコミュニケーションの能力、その対価を得ることが商売であるというビジネスの感覚、この3つがビジネスプログラマが身につけたい「体」です。

まとめ

ビジネスプログラマになるために磨きたい心技体を、9つの項目で整理してみました。

  • 心:「向上心」「当事者意識」「大人力」
  • 技:「設計力」「実装力」「運用力」
  • 体:「セルフマネジメント」「コミュニケーション」「ビジネスセンス」

ビジネスの業種・職種によって「技」の部分だけ違ったとしても、他はビジネスパーソンとして重要な要素に思えます。たしかに、私がこれまで出会った出来る人たちは共通して、これらの要素が高かった気がします。

誰もが最初からすべて百点満点ということはないでしょう。しかし、これらのスキルやコンピテンシーを意識して伸ばしていくことを考えているかどうかで、時間が経ったときに大きな差になっているように思います。