SOLG System Blog

ソーシャルな時代におけるプログラマーという職業

2014年06月02日

こんにちは、マツナガです。今回は少し堅い話です。
 
 唐突ですが、僕の職業は何かと言われると、名刺上は、「テクニカルスペシャリスト」ということになっています。そして往々にして、それってどういう仕事?と聞かれます。

 特に、ITの業界ではない人に説明する時には、結構苦労します。そういう場合、iPhoneのアプリ作る仕事とか、○○○というWebサイトの開発とかをしています、というと、何となく分かってもらえます。

 アプリ作る仕事とか、の「とか」にアプリ作ってるだけじゃないんだよという含みを持たせているんですが、Webやアプリ開発を行う前は、もっと業務よりの(どちらかというと裏方の)システム開発をやっていたので、「コンピューターのプログラムとか作るような仕事」と説明していました。この場合「コンピューター」という言葉がミソです。プログラムを作るという部分は想像しにくいので、「コンピューター」という言葉を入れることで、「あぁ、そっち系の仕事なんだな」と何となく理解してもらえてました。

 コンピューターのシステム開発において、プログラムを書く仕事のみを専門にしているエンジニアもいます。いわゆるプログラマーです。しかし、システム開発はプログラマーだけでは行えません。プログラムは書かないけれど、お客さんの要望を聞き、どんなコンピューターやハードウェアが必要かを分析し、プログラマーがプログラムを記述するための設計図を作成する役割の人もいます(システムアナリストやSEと呼ばれたりします)。また、プログラマーたちが仕事を円滑にできるよう、外部との調整を行ったり、進行に遅れがないかを管理し遅れが生じそうな場合は、対策を講じるなど、そういった役割を行う人もいます(プロジェクトマネージャーと呼ばれたりします)。このように各人がそれぞれの役割をこなしながら、一定の品質を保ち、適正なコストで、指定された納期までに開発が終わるようシステム開発は進行されます。

 さて、前置きが長くなりましたが、今回は、ITの開発の現場はもっと多様化しているんだというお話です。
 さきほど、システム開発における役割の話をしました。しかし、今では、これら役割をひとりで担う場合も増えています。また、品質はさほど優先されず、それよりも、これまで適正と思われていたコストよりもかなり低いコストで、しかも、これまでよりもかなり短い期間で開発を行うというケースが増えてきています。
 こう書くと、ITの仕事って、やはり、低賃金で長時間労働を強いられるお仕事だよねという話になりがちです。企業がITに対する投資を絞り、とにかく早く安く開発をしてくれと、システム開発会社に要求し、現場のプログラマーたちはそのしわ寄せをくらって過酷な労働を強いられているのでしょうか? 安く、早く作らなければならなくなった理由は何なのでしょうか?

 ちょっと視点を変えてみましょう。近年のITの中で注目されている分野は何でしょう? もちろん、銀行や交通など私たちの生活を支えているシステムや、経理システムなど企業の業務を円滑に進めるためのシステムもありますが、ネットの記事で日々取り上げられ、ITの花形の分野として見られるものは、 やはり、SNSやゲーム、スマートフォンのアプリなどになるでしょう。いわゆるソーシャルなシステムやアプリです。求人も多く、新しい技術を積極的に採用しているのもこの分野です。

 そもそもコンピューターシステムというものは、人間がこれまで、そろばんや鉛筆を使って手作業で行っていたことをコンピューターにプログラムを実行させることで、人間の能力をはるかに超えるスピードで作業を行うためのものです。したがって、システムの価値は、例えば、1000人かかって1ヶ月かかる作業を、わずか数分で終わらせることができるといった効率化にあると言えます。1000人の人件費を圧縮できるのであれば、数千万円かけてコンピューターシステムを導入するのは、企業活動において理にかなっています。

 では、昨今注目されている、SNS、ゲーム、スマートフォンのアプリ。これらの価値は何でしょうか?人間の能力を超える作業をコンピューターに行わせ、作業効率を向上させるものでしょうか? 実は、このことが、安くて早い開発を求められる原因のひとつなのです。

 ソーシャルなシステムやアプリの大半の目的は、それらを使ってもらうことで、何かを宣伝したり、人を集めたり、ひいては可処分時間をどれだけ奪えるかを求めたられたりするものです。つまり、その存在意義が、コンピューターの本質である人間の能力を超えた作業を行うという目的ではなく、どれだけ宣伝効果があったかであったり、会員をどれだけ集められたかといったことが目的になります。

 したがって、単純に人件費の圧縮といった指標で効果が測れるものではありません。乱暴な言い方をすると、効果があるかどうかは博打のようなものかもしれません。もちろん、事前分析によって効果を予測する手法はありますし、そういった研究をしている企業もあります。しかし、いくらコストをかけるのが適正で、その効果がどの程度のものなのかが測りにくいということから、失敗するリスクも考えて、できるだけ、安く作って欲しいという作用が働きがちになると思います(失敗したらコストかけなかったんだもん、という言い訳もできますし)。また、こういった分野のものは他社との競合が激しいため、他社よりも早く結果を出したいですし、失敗したらすぐ別の方向に舵が切れるよう考える必要があります。すべからく、とにかく早く作って欲しいという要求が出やすいと思います。
 
 つまり、こういったITの分野において、従来通りの価格や期間を前提にシステム開発の計画を立てるのはそもそも的外れなのです。特にこれまで、企業向けのシステム開発を行ってきた会社が、人材とこれまでの技術ノウハウをもとに、ソーシャルな分野を手がけようとすると、コストや期間の面でかなりのギャップを感じます。もちろん、こういった会社はエキスパートなエンジニアを多く抱え、高いレベルの技術力を持ち、豊富なマネージメント経験を持ったプロジェクトマネージャーが存在します。場合によっては素晴らしいSNSのシステムが作れるかもしれません。しかし、これまでの開発手法やコスト感覚を大幅に変えないと、プロジェクトは成功しません。これまでの開発手法を実行するだけの時間もコストも与えられないのですから。
 
 で、この文章のタイトルであるソーシャルな時代のプログラマーはどうあるべきなのでしょうか?もちろん、安くて早い開発を要求され、ただ、長時間労働を強いられているだけではいけません。先にコンピューターシステムの本質は、人間の能力を超えるスピードで作業を行うためのものだと書きました。それを実現するためのものがプログラムです。実は、システム開発は何かと手作業が多いのです。プロジェクトが大人数になればなるほど、ドキュメントやプログラムの量が増えたり、作業の分担や、進行など人の調整も複雑になります。ドキュメントやプログラムに間違いがないかとか、人の割り当てなどもわりとアナログな手作業で行われている場合が多いのです。

 ならば、そういった手作業をコンピューターにやらせればよいのです。そのためのプログラムを書く技術力は現場のプログラマーであれば持ち合わせているはずです。実際に、そういった考えのもと開発を支援するさまざまなツール(しかも無料で使えるもの)が、増えてきています。そしてこれらのツールは、エンジニアが置かれてる環境を改善しようと作ったものですから、実によくできています。必要は発明の母です。そういったツールを使うことで、システム開発の効率は大幅に向上するはずです。もちろんそれが物足りなかったら、カスタマイズするなり、さらに効率をあげるためのツールを自ら作ることを考えるとよいでしょう。

 ソーシャルな分野では、とにかく技術の進歩が早い。しかし、その一方で、人間はいちど作り上げた仕組みや環境を変化させることにはどうしても億劫になりますが、それでもプログラマーは、早く、安くを望まれる環境の中で、自ら開発効率を上げるための努力をしつづけることが必要です。

同じカテゴリー(プログラミング)の記事画像
アプリ開発の第一歩
SwiftはObjective-Cを置き換えるか
iPhone 6に最適化されたアプリとは
同じカテゴリー(プログラミング)の記事
 webブラウザの気持ちになってコードを書きたい (2016-11-18 20:28)
 [Rails]Railsのバージョンを上げたことでspatial_adapterが使用できなくなりました (2016-01-14 23:03)
 アプリ開発の第一歩 (2015-12-18 21:12)
 JANOG35に行ってきました (2015-01-27 05:42)
 共有サーバのホスティングサービスについて総点検してみたよ (2014-11-24 00:17)
 SwiftはObjective-Cを置き換えるか (2014-11-10 08:30)

Posted by iA SEチーム at 09:04│Comments(0)プログラミングシステム制作
上の画像に書かれている文字を入力して下さい
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。

PageTop

削除
ソーシャルな時代におけるプログラマーという職業
    コメント(0)