かんがえる、かがんでいる人

考えたことをまとめます。

?

プログラムが好きで、その使い方を勉強しているあなたへ

f:id:ton96O:20180403203956j:plain

否定はしませんが、面白みも相当ありますよ。

それには、働く場の選択が大事です。

今回は、プログラムに興味があるけれど、今後のキャリアに不安を抱いている大学生のために書きました。

 

プログラムが好きで、自分で言語も選んで、IoT等のトレンドもしっかりアンテナを張って、実践している。素晴らしいです。

プログラマは一生勉強が必要です。時代の最先端を走ることができる一方、それを追い求めることが苦しくなる人もいます。

その一方で、プログラマの大事な仕事の一つに保守というものがあります。これは顧客のシステムの維持・メンテナンスを行う仕事で、中堅以下のソフトウェア会社にとっては定期的な収入になる「見込みが立つ」仕事になります。この仕事に従事することになると、最先端の技術を追い求める事からは外れるかもしれません。

古いプログラミング言語(私が効いた中で一番驚いたのがPL/I)のシステムを保守すると、最新トレンドを負うプレッシャーからは解放されますが、そこでしか生きていけなくなる可能性があります。

 

難しいですね。

どうすれば生き残ることができるプログラマになれるのでしょうか?

 

私のなりの答えは、仕様を作る側の人間になる、という事です。

どこのSIer、ソフトウェア会社でもそうなのですが、顧客と打ち合わせて仕様(システムの動き方、どういう機能をつけるのか(または削るのか))を決定します。その時に、こういう仕様はいかがですか?と発言(提案)できると、なかなか格好いいものです。

仕様を考えられるようになると、DBの設計が簡単にできるようになります。(簡単ではない場合もありますので、相対的に、と捉えてください)

仕様を作る側になると、実装(プログラミング)については、よそからリソースを割いてもらって自分が中心となって大きな仕事ができるようになります。

 

では、どうすれば仕様を作る側の人間になれるのでしょうか?

私なりの答えは、まずは業務分析をしっかりすること、です。

業務基幹システム(例えば、会計システム)は、本来であればシステムがなくても仕事が回るものなんです。

でも、その業務の中に、一日に何度も、週に何度も、月に何度もやるべきことが見つかります。しかも、ミスはできない。

そこをコンピューターにやらせるようにしたのが業務基幹システムです。

コンピューターは「単純な事を、何回も、ミスなく、早く正確に」行うことが得意です。そしてその「単純」の領域はどんどん発達しています。

コンピューターができることが広がっているんです。(だからAIに仕事を奪われる、という話が出てくるのです)

(参考;AI vs. 教科書が読めない子どもたち、を読むべきだという話

業務を想像し、顧客に確かめ、システムにすべき置き換えるべき点(コンピューターが得意な部分)を見つけ出す。頻度が高いところや夜中にコンピューターで一気に処理をしてしまいたいところを見つけ出してシステムに機能として置き換える。

そういう訓練をすることで、仕様を作る側の人間に近づけます。

(参考;業務知識がわかる本、を読むべきだという話

なので、プログラムの勉強はもちろん、どういう業務があって、どこをシステム化したいか、という点を考え続けることが重要です。

業務を機能に翻訳する仕事、と言っても言い過ぎではないと思います。

 

一方で、新しいサービスになると少し話が変わってきます。

SNSTwitterにしましょうか、それが出てきたとき、それまでの運用なんてありませんでした。では、Twitterを作った彼らは、どうやって仕様をきめ、システムを作ったのか?

「あったらいいな」を発想したと思うんです。

もともとTwitterは文字数が今より制限されていました。

それこそ本当につぶやきです。

黎明期では、誰かが質問をすると数秒後に誰かが答えをくれる、なんてやり取りがTV番組でやっていました。(相当なユーザーですよね)

いま、フォロワー数が少ない人がそんなことをしても、すぐに質問が返ってこないと思いますし、グーグルで検索した方が早いはずです。

Twitterを作った彼らは、自分たちの理想の世界をまず考え、そこからSoWhat?で具体化していき、サービスを作ったのだと思います。

そしてそれには運用が+αでついてきた。

このサービスはこういう風に使ってくださいという、プログラマの想定する使い方ありきのサービスなんです。

そして、実際に使われ、多分想定外の使われ方もあり、現在の姿になっているのだと思います。そして将来的には、また想定外の使われ方をされ、違う姿になるはずです。

 

ここで少し、残念だと感じた話をします。

あるIT企業の人事部の方との話です。

タレントマネジメントで困っているのではないか?という話から盛り上がりまして。そちら様はIT企業ですから「ウチはモノはあるんだよ、さすがに。IT企業だから」と繰り返しておられました。

それなりの規模の会社なので、確かにそうなのでしょう。

しかし私からすると、「ウチはモノあるんだよ」という発言は「でも、活用できてないんだよ」という本音の吐露としかとらえられませんでした。

「運用手順はどう整理されていますか?」という問いには、

「んなもんあるわけないじゃない、今までやってないんだから」

確かにそうです。そうなんですが、システムには、こういう風に使ってもらいたい、こういう風に使うはずだというプログラマの意志が込められているはずなんです。

それがないなら、ただのDBという名のスポンジと、それを覆う生クリームの塊です。

栄養にならないケーキです。

そのケーキに対して高額なお金を払いますか?

 

まとめます。

プログラムに興味があるのであれば、プログラムを勉強することはもちろん必要。

仕様を決定できるようになると、良いと思います。

それには、運用手順がどうあるべきか、というプログラマ強い思いや想像力が必要。

独りよがりになってはいけないので(仮説だけではいけないので)先輩や顧客に確認するなどの検証が必要

 

あとは、秀丸マクロとか、EXCELマクロとか。

ツール的なものを知っておく必要はあると思います。

大学生のうちにDB設計しながら遊ぶと面白いですよ。

 これは値段が高いので、もっと、安い問題がたくさんあると思います。

調べてみてください。

DBは何がいいですかねぇ?

SQL標準規格(DBにも種類がある、それぞれに方言のようなちょっとした違いがある。その標準)に合致しているのがいいんですけれど。

MySQLかポスグレでしょうか?

就職活動をしているのであれば、何を利用することが多いかを、OBや先輩に聞いておくのもいいですね。

 

あとは

prog-8.com

 こういうサービスを利用するのもとてもいいと思います。

上記はHTMLからJavaPHPpython、Swiftまで幅広く学べます。

自分のレベルがアップするのが面白いですよ。

 

 仕様を決められる人になるために、運用を勉強しましょう。

自分で作ってしまいましょう。

顧客が気付いてすらいない問題を見つけて、その解決策を作ってしまいましょう。

そして「これは、こう使ってくださいね」と運用を提案しましょう。

 

 そのためには何に価値があるのか、世の中の動きを見極めるのはとても大切です。

 ニュースを見ている、経済ニュースを見ている。

とてもいいですね!

 そして、それと同じくらい重要なのが、実は、大学生であるあなたのご友人の声であったり、ご家族の声だったりします。

 ご友人とのおしゃべりで「○○がもっとこうだったらいいのに」というセリフはありませんか?

おじいちゃんの「○○はじーちゃんには無理だよ、なんでかって?○○だから

ヒントはすぐそこにあるんです。

そこを拾い逃さないようにしましょう。

ニュースは実は、とても古いんです。

ニュースじゃないんです。オールズなんです。

あんな大企業が責任をもって文章にするのに、裏をとって保守的に動かないはずがない。相当なタイムラグがあると考えるべきです。

その間にあなたは、運用想定者として、いくらでも成長できます。

 

私が考えるプログラマに必要なもの、それは、問題を見つける感性

?