< All Blog

プログラミングで何をアウトプットしたら良いかわからないと言う人へ

November 12, 2022

プログラミングを学ぶ方法は、人それぞれだ。

本を写経する人もいれば、Open-Source Software (OSS) のコードをひたすら読む人もいる。ペアプログラミングで学ぶ人もいれば、動画学習が最適な人もいる。

また、学ぶ対象によって変えることも多い。複雑な概念は動画学習でイメージを掴みやすくしながら、書籍でしっかり考えて学ぶ、というように適材適所で学んでいる人も多いだろう。

そうして数々のインプットを経た後で、さて、何をアウトプットしようか、と言う段階になる。このアウトプットの段階で、「何を作ったら良いかわからない」 と言う人が時々いる。「何をアウトプットしたら良いかわからないんですよね」と、メンタリングしている人から相談を受けることもある。

よくある原因の一つが、「その技術で何ができるかイメージできていない」状態 だろう。JavaScript を学べばブラウザゲームや Web サイトを作ることまでは流石にイメージできるだろう。ただ、JavaScript の文法を学ぶだけでは、実際に作れない。

アニメーションを実現するためにはどの API を使えば良いか、画像をレンダリングするためにはどの API を使えば良いか、音を鳴らすためにはどの API を使えば良いか、わかっていないに過ぎない。単純に知識が足りていない場合だ。

では知識を得れば良いのかというと、実はそうではない場合も多い。そもそも、「何かを作りたい」と言うモチベーションではなく、「その技術を学ぶ」と言う動機からスタート して学習している場合に、この罠に陥りがちになる。とりあえず本に出てきた章を読んでフレームワークの使い方を学んだとしても、それが実際のアプリケーションでどう使われているかに紐づかない。

こうした、技術を実社会にデプロイできる力を養うためには、現実で動いているプログラムを読むしかない と言う持論を持っている。

会社のコードでも良い。無い場合は OSS。誰が書いたかは関係ない。スタープログラマでも素人プログラマでも良い。何行でも良い。どのプログラミング言語でも良い。古くても良い。少なくとも書籍や動画コンテンツではない、現実のソースコードを読む。現実にある、誰かのなんらかの課題を解決している、もしくは解決しようとしている、「生きている」ソースコード

現実社会で動いている「生きたソフトウェア」というのは、誰かが行った「アウトプット」の結果である。世界の誰かが、なんらかの課題解決意識とモチベーションを動員して世の中に生み出した「アウトプット」である。自分も同様のアウトプットを出したいなら、他人がどういう動機で、どういう課題を解決したかったのか、そこを理解しないといけない。技術を学ぶというのは、あくまで「アウトプット」の半分の側面でしか無い のである。

逆にいうと「何かを作りたい」「何かを解決したい」という動機がある場合には、技術を学ぶだけで良いので、アウトプットするものを考えるところで手が止まることはない。優秀なメンターや教材、成長の道筋さえ準備すれば、アウトプットを世の中に出すまでは最短距離を進める。

詰まるところ、プログラミングという技術がコモディティ化しつつあるこの現代において、アウトプットを出し続けることで差別化していくためには、「学習曲線が高い」「地頭が良くて学習速度が速い」だけでは不十分なのである。技術を通して何かを解決したい、という「感情」の側面が強くないと、アウトプットを継続的に出し続けることはできない。

誰かが作ったプログラムをただ写経するだけでは、それはあなたの「アウトプット」ではない。そのプログラムが解決しようとしている課題はあなたの課題ではないし、あなたのモチベーションではない。だから、どれだけ TO-DO 管理アプリを作っても、あなたは自分のアウトプットに納得がいかないのである。

逆に、自分のモチベーションに駆動された開発であるなら、結果として出来上がったアウトプットが世の中の誰かのものと酷似していたとしても、(事前のリサーチ不足という側面は置いておいても)あなたの立派なアウトプット であると思う。そこで得た経験と知識は、「車輪の再発明」かもしれなくても、きっとあなたの強みになっているはずだ。

だから、いつもの私の持論になるのだが、ソフトウェアエンジニアはなるべく外に出て、技術者以外の人とも交流をし、社会課題に興味を持ち続けてほしい、と思っている。もちろん、その興味の対象が技術領域に閉じているのは全く構わない。そのような人々が、プログラミング言語やフレームワークを開発し磨き込んでくれているおかげで、世の中の開発者のためになっている。そうでない人はぜひ、自分の興味や課題意識を、技術を通じて、解決してほしい。

プログラミングが単純に好き。プログラミングを通じて社会に貢献したい。そんな人が少しでも増えるといいなと思っている。決して、そこにある年収や、社会的立ち位置や、外面や、周りからの目ではなく、プログラミングに熱狂し、心から愛せるような、そんな人々と働きたいと思っている。

Recommended Posts

  1. Bowling or Rowing?

    September 04, 2023
    いきなりですが、皆さんが今所属しているチームの雰囲気って、どんな感じですか? アットホームな雰囲気漂う和やかなチームでしょうか。カリスマがいる強い個人に引っ張られるチームでしょうか。目的が曖昧で空中分散しかけているチームでしょうか。 最近、別のチームとの協働プロジェクトに関わっています。私が所属するチームと協働する必…
  2. 子どもの自己肯定感は、親の期待のことではない

    July 22, 2023
    以前、「子どもに決して "I'm proud of yourself" と言わない理由」という記事を書いた。普段育児ネタを投下しない割には、まあまあ反響があった気がする。 つい先週、子どもと公園で遊んでいて、彼女の自己肯定感が高まる瞬間に出会うことができた。Monkey Bar、日本で言うところの雲梯(うんてい)をこ…