https://jp.quora.com/%E3%82%82%E3%81%86%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%82%92%E5%8B%89%E5%BC%B7%E3%81%97%E3%81%A6%E3%82%82%E4%BB%95%E4%BA%8B%E3%81%AB%E3%81%AF%E3%81%A4%E3%81%AA%E3%81%8C%E3%82%8A
そういう勘違いをして市場から撤退してくれる人が大勢いるでしょうから、それと逆を行く人には利益があります。
プログラミングを単なる1技術だと捉え、「これやったら何がもらえるの?」と即物的なリターンが得られると思っている人は、そう勘違いしていればよいのです。
プログラミングの本質はメタ思考・抽象化であり、"物事を解決に導く考え方を考える思考法" です。
これほど応用力のある汎用的なコンセプチュアル・スキルは他にありません。仕事に活きないわけがない。
まあ、物事を洞察することから降りるという姿勢は、プログラミングや仕事とは対極にありますから、そのような人はプログラミングからも仕事からもお祈りされると思います。
リクエストにお応えしようと思います。
この質問は2つの意味に取れます。
- もう人間のプログラマーは必要とされませんか?
- ある程度プログラミング言語を学習したら、知っている言語の種類を増やしても仕事に繋がりませんか?
両方に順番にお答えします。
「プログラミングなんてChatGPTにさせればよい」という意見はよく目にしますが、全く同意しません。生成AIは、学習結果を平均化して出力することしかできないので、まだ誰も作ったことのないプログラムを作ることができません。それは人間の仕事です。
学習するプログラミング言語の数ですが、競合している言語は1種類だけでも仕事になります。例えばVIsual Studioを使うとして、C++, C#, VB .net のどれかひとつができれば、Windows向けのアプリは組めます。
違う分野のプログラミング言語を学ぶと、仕事の世界が広がります。例えば、フロントエンド専門のエンジニアがPythonやRubyやSQLを勉強してバックエンドにも手を出せるとか。
さらに、設計思想の全く異なる言語、例えばLISP, Prolog, Smalltalk-80を入門だけでも学ぶと、プログラミングに対する視野が広がります。
私は60歳のエンジニアですが、まだまだ知らないことばかりです。
あー、もう的確な回答がありますね。それに乗っかって、と。
そういう参入障壁を設けることでこの業界、ひいては我々は守られておるのぢゃよ。インフルエンザとかいうイッチョカミのニワカが大衆に出鱈目を吹き込んでくれるお陰で、我々は懸命にプロパガンダを流さずとも人手不足という売り手市場、そして高い報酬を維持できておるのぢゃ。ありがたいのう、ホッホッホーwww
そんなことはないと思います。
IT の世界は日々新しいものが出てきて、淘汰されてもいきますが、一度動き出したものは数年〜数十年稼働します。
新しく入ってくる人もいれば去っていく人もいますし、既存のものは変化し続け新しく作られるものもあるので、人は常に足りません。
人が余っているように見える層も確かにあります。
主に新人、 3〜5年目くらいの層ですかね。
あとは怠惰に過ごしてきたオジサンたちの層。。。
しかしこの中でまともにスキルを身につけて使い物になるように育つのはごくわずかで、不足しているのはこのまともにスキルを身につけた層なんですよね。
言い方は良くないですが、生きてくだけなら「なんとなくこなせてれば」仕事はあります。
それがまた技術者の成長を阻害する要因でもあると思いますが。。。
いかにして早くスキルを身につけて人が余ってる層から抜け出すかがキモじゃないですかね。
AI に出し抜かれる層から AI を使う層に転移するか
職業プログラマです。プログラミングを仕事で使うなんてもったいない! プログラミングを覚えてできることはDIYです。文字通りDo It Yourself!
シンプルに楽しいですよ。現代の日曜大工はプログラマなのです。
そしてみんなが使っている「プログラミングを勉強する」って言い方はそろそろやめたほうがいいです。この考え方でうまく行っている人はそんなにいません。DIYをしようって思えるだけですごくいいものができると思います。
まず大きな誤解を解いておかないといけません。
この質問の裏側には「いまさらプログラミングを勉強してもスーパーハカーにはなれないでしょ?」「シュッとしたオフィスで年収2000万にはなれないでしょ?」という諦めを感じるのです。
言ってしまえば「いまさらトンカチの使い方を学んでも大工さんになる気はないぞ?」というように聞こえるんですね。久しぶりにトンカチを触る人だってまさかそんなつもりはないでしょう。
トンカチもった瞬間に「城でも建てるのか?」と言われたらびっくりします。
また「いまさらゼネコンに就職することもできないよ」という意味合いで使っている人も居ます。
素朴に考えてみましょう。トンカチの使い方を学べば何ができるか。DIYができますよね。自分で扉の修理をしたり、ちょっと気の利いた棚をつくったりできます。DIYで家を建てようと思う人はそうそういないでしょう。
プログラミングとはトンカチなのです。もっと正確に言えば高性能ドリルなのです。使い方は説明書を見ないといけませんが、そのうち家中に穴を開けたくなるのと同じように、なんでも自分でやりたくなります。
じゃあプログラミングを覚えて何ができるかというと、主にはこの3つです。
- データ分析
- 業務効率化
- アプリ開発
これはDIYでいうと
- 家中計測してまわって家の状況を知る
- 家にぴったりの棚を自分で作る
- 子供用におもちゃを作る
というだけの話なのです。なにもいきなり家の大修理をする必要はないでしょう。最初は棚の一つでも作ればいいですし、アイディアがあるならちょっとした仕掛けを仕込んでも良いかも。
こうしてプログラミングを使うとこんなことができるようになります。
- データ分析
- ブログの訪問者を集計して、どの記事が人気なのか調べる。そして新規訪問者の入り口になっている記事や、ファンを掴んだ記事を分析しよう。
- 体組成計の記録をExcelにまとめて独自のグラフをつくった。とてもきれいで、右下がりのグラフを見ているだけでやる気がでるし、記録するだけでホントに痩せる(実績20ヶ月でマイナス20kg、マイナス10%)。
- 部屋が乾燥したり寒かったりするのでRaspberry Piに温度計などを搭載して連続データを取得する。調理中の湿度上昇や、エアコンの効果、窓から日差しを入れたらどうなるか、換気するとどうなるかなどがわかるかも。
- 業務効率化
- ブログの訪問者分析によって記事の特徴とファンの特性がわかった。だけど毎回分析するのにいちいちデータ落としてまとめてってするのは面倒。だから自動化しよう。いつもデータ分析しているときの操作を紙に書き出して、それを勝手にやってくれるスクリプトを組んでしまおう。ボタンを押すだけで分析結果が出てくる! すばらしい。次は毎週月曜日に先週のレポートを出すように書き換えるかな。
- 体組成計の記録をまとめたExcelの効果は絶大。しかし操作性最悪のExcelに打ち込むのが面倒だ。だからスマートフォンから音声認識をしてGoogle Assistantを噛ませてGoogle Driveにあるテキストファイルを更新するコードを書いて、Excelを開いた時に自動でテキストファイルを読み込み、最新の体組成管理系へ更新されるシステムを構築しよう。体重計に乗ったら、自分の声で体重を読み上げるだけで勝手に更新されるようになった。次は体重計に乗るだけで勝手にデータ解析が済むシステムにならないかなあ……。
- アプリ開発
- 部屋の気温や湿度や気圧の変化がわかった。これと体調との関連もなんとなく見えてきた。妻は気温と気圧の急変に弱いということもわかった。じゃあ部屋の環境が急変したときにアラートを出すシステムって作れないかな? 最初はビープ音を鳴らしてみよう。急変した時にうまくビープ音がなることを確認したら、次はスマートフォンに転送してみよう。最後はGoogle Homeがおしえてくれるようになるといいなあ。
このように小さくて自分にぴったりなものを自分でつくれるというのがプログラミングの最も面白いところなのです。
ところでプログラミングを勉強してやりたいこと第一位はいまでもゲーム開発だと思います。これは上の3つのどこに入るのか? と思われた方のために補足します。
ゲーム開発も同じですよ。こんなコンセプトのゲームがあったら毎日楽しいだろうなって思うから作るんです。ゲームが作りたいというより、何かをゲーミフィケーションしたい思考がいいゲームをつくるようです。そのモチベーションから、データ分析・業務改善化・アプリ開発を繰り返すことでゲームができます。
だってよく考えてくださいよ。子供の頃、ビー玉ひとつで遊んでいたでしょう。ゲームの本質は面白いルールなのです。電子化は関係ありません。ケイドロは秀逸なルールのゲームであって、だから子どもがずっと遊んでいます。
面白いルールを思いついたらプログラミングなんてなくてもゲームはできます。たまたまプログラミングの特性がハマるようなら電子ゲームにしたらいいんです。新しいゲームを作りたいというより、ケイドロを電子化してみようと考えたら結果的に新しいゲームができるんです。
- シヴィライゼーションなんて戦争したい男の子の根源的欲求と独裁者になったときの判断を迷う楽しみを電子化しただけですが、それをうまく引き出させるための秀逸なルールを確立したんです。だから今でも遊ばれているわけですね。
- 人狼は友人同士が急に疑心暗鬼になる状況を作り出し知らない面を引き出す良いルールです。これをチャットでできればいいのにと思った人もいるし、設定を変えていっそ宇宙船殺人事件に仕立ててしまえと思った人もいるみたいですね。
- 家事だって分担で揉めるくらいならいっそクエスト発注! ってしてしまえば楽しいかも、そういう発想から生まれたゲームもありますね。
- 婚活が単なるマッチングでうまくいかない、どうせ顔だけ、どうせ年収だけだと思っているから、コミュニケーションから始まる恋を育てたい。だったら二人で庭を育てながら同時に愛も育んだらいい。そういうゲームもあるんですよ。
ゲームをつくるというより、ゲームにすることで課題を解決するといったほうが意識が近いように思えます。
だからプログラミングを勉強するという意識を改めましょう。C++の教科書を買ってきて、ポインタがどうとか論じるのは意味がありません。それはトンカチの使い方を学ぶのに金属工学の本を買ってくるくらい意味がないことです。
プログラミングを使うとはどういうことか。
- 日常生活や毎日の業務を改善する手法としてハマると有用である
- 疑問を探ること
- 自動化すること
- 不便なことを改善し、新しく改善する方法を提供すること
- 業務改善の手法としてプログラミングの特性がハマるのなら強力なツールになる
- 融通が利かないほど命令を絶対遵守する
- 厳密な命令を下すことができる
- 他人のつくった命令を借りて再利用することができる
- やめろというまで繰り返し繰り返し同じことを続けるのが得意
- IoTの流れが加速していて様々なモノと連携が可能
プログラミングの特性を生かしてやりたいことができそうなら、それから泥縄的に学んでいけばいいのです。かっつり教科書を読んだり、スクールに通ったりする必要はありません。大抵の情報はネットに落ちています。だから原理的に全部自分でやることができます。
個人的な信条ですが、教育の失敗とは学んだことを日常生活に応用できないことと思っています。教育とは知識だけを教授するものだと思っているから「税務は使わない」「物理は役に立たないでしょ」「古典なんて勉強する意味がない」「就職できなかったから大学で学んだ意味がなかった」などと思ってしまいます。もっと大事なことはスキルであり、思考法であり、視座であり、複眼的思考です。
プログラミングは稼げます。これは本当です。だからといって稼ぐためだけにプログラミングのスキルを使うのは非常にもったいない。すべての学問が日常生活に応用可能である以上に、プログラミングほど日常生活を豊かにするスキルはないのです。
なにか新しいものをつくりたい、改善したい、その気持ちがあるならプログラミングを検討してみましょう。
現代の日曜大工はプログラマです!
家族の困りごとを聴いて「よーしパパあたらしいアプリ創っちゃうぞー」ができるのがプログラミングのクールなところです。そう考えたら、何歳からでもやってみたくなりませんか?
43歳でプログラミング(Java、JavaScript、PHPくらい)を勉強した私ですが、さて、この4年間で何ができたでしょうか。
- Java講師の仕事をすることができました(時給は3,000円くらいです)。
- 自分用に、簡単な「タスクリスト」を作ることができました。本当にシンプルなものですが。
- 自分のブログ用のテーマを作成し、無料テーマやプラグインのカスタマイズをPHPで書いて効率化することができました。
- Web系の開発会社に職を得ることができました。仕事でお客様のためにいくつかのソリューションを作ることができました。e-コマースサイト、kintone(オンラインデータベース)のカスタマイズ、WordPressのカスタマイズなど。
- 娘にプログラミングを教えることができました。といってもまだまだ娘は初歩の初歩ですが。これからもまだまだ教えられるでしょう。(そのうち、娘に教わる時代が来るかもしれませんが!まだ少し先です)
この後、作りたいと思っているものは以下のような感じです。
- webサービスを2〜3、細かい物も含めるともっとたくさん。公開にこぎ着けたいですね。
- PHPメインのゲームを1つか2つ。JavaScriptの方がいいかな……それともやっぱりUnityですかね?
- 娘のためのwebアプリ。まずは学習用のクイズ的なものと、スケジュールというかタスクリストみたいなもの。
- 自分用のブログのテーマファイル
- 自分用のwebアプリを少々。まずは小遣い帳のようなもの。
時間が全然足りません。どうです、ワクワクしてきませんか?
ところで、「○歳になって今更〜を勉強して覚えて何ができるの?」という話法は、「○歳」「〜(勉強する内容)」を変えてあらゆる物事に適用できます。「20歳になって今さらピアノを勉強して覚えて何ができるの?」とか。
こういう話をいちいち真に受けると、新しいことなんて始めない方がいいね、という話にしかならないので、人生がつまらなくなりそうな気がします。
それは職場環境によって決まるでしょうが、業務の進行に差し支えがない範囲で「勉強」することを「良くない」とする職場か「望ましい」とする職場かは、今後もその場所で働き続けるべきかを判断する良い材料になるでしょう。
物事の本質を突き詰めて考えるのが好き、ということだとお見受けいたしました。
限られた時間で学習の進度を証明しなくてはならない試験勉強のコツと違い、Whyを考えることは仕事をする上でとても重要だと思います。
- なんで、Unix風のLINUXにはUNIXの名前を使っていないのか
- どうして、この文字コードは可変長なのか
- どうして、改行文字は二種類あるのか
- どうして、関数としてプログラムをひとまとめにするのか
- そもそも、抽象化するとはどういうことか
- この、元の論文にはどう書いてあるのか
- なぜ、CSVの文字コードのデフォルトの改行文字がCRLFで文字コードがShift-JISだったのか
- なぜ、配列の添字は0と1の二つがあるのか
- なぜ変数に$をつけた言語があるのか
- なぜ、SQLでは真偽値がなくNULL値があるのか
- ファイル数の限界はいくつか
この手の疑問を丁寧に解消しておく習慣は、仕事でもとても役に立ちます。
プログラミングという行為は、物事の本質を突き詰めることを強いられます。
厳しいですが、その時点で、9割方、ならない方がよいと感じます。プログラマーの適正のある者は、自分に才能があると思っても、思っていなくとも、誰に言われなくとも、勝手に、その道に進みます。
実のところ必要なのは、センスですが、そのセンスというのは、才能よりも、経験によって磨きだすもので、そういうものをスキルといいます。
つまり、スキルを得るためには、ほんの少しの才能と、経験なのです。よって、その経験を積むためには、まずは、やってみる、という行動力が必要で、その行動力の源は、好奇心、飽くなき欲です。
そう、プログラマーの最大の適正とは、並外れた才能ではなく、努力でもなく、学歴でもなく、学ぶ事(学習意欲)でもなく、シンプルに「好き」である事なのです。なので、才能があるとか、無いとか考える必要はないのです。
勿論、やってみて、自分には適正が無いと気づく人もいますが、それは、やってみないと解りません。それを、無駄な回り道と取るか、必要な経験だったと取るかは、自分次第です。
早すぎます。プログラミングなんていうものは後からでも勉強できます。
大学院に入った時、計算数学の専攻にもかかわらず指導教官から「勉強する時間がなくなるからプログラムを作るな」と言われました。
以下は中学生の質問に答えたものですが、高校生でも同じです。
国語、数学、英語を勉強してください。 プログラミング能力は自国語の能力と相関があると昔から言われています。 能力の高いプログラマーほど数学力より言語能力が高いという研究結果 : 数学ちゃんねる 数学は科学の言葉でもあり、人類がさまざまな問題を解決してきた結晶です。とくに応用問題を解けるようにしてください。文章で書かれたものを数学の言葉へ変換する能力が磨かれます。 英語はソフトウェアの世界の共通言語です。英語が読めて書けけるとソフトウェアの世界は100倍広がります。 主要3科目以外の興味にある科目を一生懸命勉強してください。ソフトウェアは結局コンピュータで人間の営みを助けたり、自然の理解と助けるための道具です。 スポーツをしてください。この仕事は体力が必要です。あまり良いことではありませんが2日間徹夜しても集中できるためには体力が必要です。また失敗の対処法も学べます。 家事を手伝ってください。料理、掃除、洗濯などの雑多な細かい作業をうまくこなしていく訓練になります。ソフトウェアの基盤となるOSの理解の助けになります。
0 コメント:
コメントを投稿