自己紹介
社会人歴3年、独立1周年、25歳を迎えました。
Webアプリケーションを中心にフルスタックエンジニアで活動しております。
SIer企業で2年間正社員を経たのち、フリーランスエンジニアとして独り立ちを果たし、現在も収入源を増やしつつ研鑽を続けている日々です。
私の人生観にはプログラミングが基盤となっており、プログラミングを愛してきた者であると自負しています。
はじめに
「これからプログラミングを始めたい」と思っている方や、「プログラミングの勉強がもうキツイ…」となっている方。
はたまた、「プログラミングはできるがモチベーションにならない」などの悩みを抱えている方。
おそらくそんな人がこの記事を観覧されているのかなと思います。
そこで、「プログラミングが人生」とまで考えた私自身の理念を共有することで、少なくとも目標に対してモチベーションを高められるようになれると信じています。
以下の記事は人によってはショックを受けたり、ときには苦労を踏みにじられるような捉え方をできる表現があるかもしれません。
耐えられない方は無理せず、自身の感情へ正直になってブラウザバックを推奨いたします。
それでもかまわない方は
_人人人人人人人人人人人人人人人人_
> ゆっくりしていってね!!! <
 ̄^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄
1. 作りたいものに素直になる
まずは自身の心理を見つめ直しましょう。
貴方様はなぜプログラミングをしようと思ったのでしょうか?
それぞれ目的は異なるかもしれませんが、プログラミングを学ぶ以上「プログラミングによって生み出せる成果が欲しい」と願っているはずです。
ここが 第一の難所 です。
まずはこの「成果」に具体性を持たせましょう。
【成果に具体性】その1: 目的と手段を分けよう
人間の脳は賢いですから、いろいろ考えます。
しかし、捉え方によっては迷子になりやすいのです。
それこそ、プログラミングを学ぶ理由なんてものは良い題材です。
何のためにプログラミングを学ぶのでしょうか。
知らず知らずのうちに、「学習すること」が目的となっていませんか?
はっきりここで言い切りますが、これは手段です!!
学習を目的として捉えてしまっていた方には、以下の言葉を贈ります。
「作りたいものができたときに学習は終了します」
一生学習したい方なら別ですが、少なくとも「学習したいからプログラミングを学ぶ」訳ではないと思います。
プログラミング通して、システムを動かせることを目標にしていたはずです。
もう一度初心に戻り、
- プログラミングは手段
- 目的はシステム開発
ということを再認識しましょう。
【成果に具体性】その2: 目的の理想
もし、「なにか目的があるわけでもなく、なんとなく学習している」という方向けにお伝えします。
自分が困っていることを解決するシステムを作ってみてください。
難しく考えず、(馬鹿みたいなほど)素直に答えてみてください。
例えば…
例)
困っていること: 何事も移動がめんどくさい
解決方法: タケコプター・どこでもドア・相手に来てもらう・全自動移動ベッド・家事全自動ロボット etc...
あったらほしいですよね。
僕も欲しいです()
じゃあ、直接的な解決をすることは難しいかもしれませんが、少しプログラミングに落とし込んでみましょう!
例えば「ロボット」なんて良いですね!
家事をしてくれるロボットと言えば響きは大層なものに聞こえるかもしれませんが、「食洗器」や「洗濯機」なんていう既に世にあふれているものでもロボットに近しいものです。(厳密に定義は違うけどね)
では、未だ世の中になさそうな家事補助機械はないでしょうか?
今パッと思いつくのは、
- 洗濯籠から洗濯物の仕分けと、洗濯機に投げ入れる機械
- 後付け可能な便器ゴシゴシ機
- ゴミステーションに自動投げ入れ機
(実際に私が欲しいものです)
これらは機械ですよね!
けど、そんな世の中には流通していない代物ですね…。
じゃあ作っちゃおう!
そしたら、作り方調べますか…ロボットの作り方…動かし方…あぁ!プログラミングが必要!
プログラミング(Pytonとかできれば作れるって書いてた)ができれば作れる!
そして、同じ悩みの人に売ればお金にもなる!
自分の悩みを解決しただけで対価を得られるなんて、なんて素敵なことでしょう!
…
このように、目的の理想というものは「自分の悩みを解決する何か」なのです。
決して自身が困ってもいないことを解決するためにプログラミングをするには、「いつ価値になるかもわからないものを磨き続けている」状態に過ぎません。
そのためにも、まずは素直に自分が欲しいものを見つけるのが最善です!
2. 行動に移してみる
上記でロボットの例を挙げたので、引き続きロボットを作りたいという体で進めてみます。
あれこれ実現するために必要なことはわかってきました。
目的と手段がはっきりしている状態です。
じゃあ学んで作ってみよう!
…
できない…センスないからやめた方がいい…もう無理…
これがまた多いです!
目的と手段を認識できても、この段階で挫折する方は非常にもったいない!!
これはぜひとも解決したいところです。
解決手段は、
作りたいものを作りながら学ぶ
です!
ここで挫折鶴方に多い傾向が、
「学ぶために本を買ってその通りにやってみた」
「学校の講義で課題をこなして学んだ」
という学びをしている方々です。
これが一概に悪いとは言えないのですが、私から言えば 「ゴールはまっすぐ、顔もまっすぐなのに、身体が横に歩いている」 ようなものです。
これでは、近づきたいのに近づけないという感覚ばかりが残り始めます。
ましては、本や講義で学習後、 「結局よくわからなかった」 や 「作りたいものと違った」 となるのです。
そりゃ、ピンポイントで貴方様が作りたいことを教えてくれる「共通教材」なんてものはない のだから…。
なので、作りたいものを作りながら学びましょう!
ロボットを作るなら、まずは豆電球の電気ON/OFFからでも良いのです。
そこから、アーム付けて上下運動をできるようにして見て掴む動作を再現させてみて…と、実際に自身の欲しい機能を目指しながら調べて真似して作ってみましょう!
「作りながら学ぶ」と「習う」ことは、どちらも「真似している」のにもかかわらずゴールまでの距離が雲泥の差となるのです。
どうか、今一度自身の素直な欲求を見つめ直して、本当に必要な学習を考えてみてください。
3. 学びの終わりの瞬間
前項でも申し上げましたが、「作りたいものができたときに学習は終了します」
プログラミングの学習に終わりはないなんてよく見ますが、私からしたらそんな感覚はありません。
たしかに、一人前なプログラミングができるようになっても、新しいことは得続ける必要があると思います。
しかし、貴方様は幼き頃に「滑り台で遊びたいから滑り方を学ぼう」と考えていましたか?
まずは直感でやってみて学習し、上達した頃に別の友達と遊びながら変な滑り方を見て真似して…と遊んでいたはずです。
プログラミングも一緒です。
一度形にできたものがあれば、それを基準にして他の仕組みも考えることができます。
他の誰かが作ったシステムも、嫌でもインターネットで目に入ってきます。
そしたら、また目的ができるわけです。
「これ作りたい」 って…。
こうなると、もう 「遊び」 と同じ域です。
私も普段システムエンジニアとして対価を得ながら生きていますが、結局のところは「求められた機能を実現するためには、こんな方法でできるんじゃない?」と試行錯誤して、実現できれば「やったー!」です。
さらに、「これができるならアレもできるんじゃない?お金になりそうじゃない?ユーザーの要望叶えられそうじゃない??」とどんどん溢れてくるわけです。
自分は面白半分で思いついているつもりが、実はプログラミングの手段を通して新たな価値を0から生み出せるエンジニアになっているわけです。
プログラミングの学びが、実際に価値になるのはこういう瞬間です。
このとき、それはもう「学び」ではなく「遊び・趣味をしながら対価もおまけに貰っている」という、立派なエンジニアの一人です。
世の中は自走できるエンジニアをよく求められることがありますが、実際はこんなエンジニアがとても気に入られる傾向です。
私の知り合いの中でも、「自分の作りたいものを作っていたら、いつの間にかいろんな企業から求められてた」と語るエンジニアさんは、とても企業に貢献できている実績が多いです。(もはや依存されるレベル)
学習に終わりがないのではなく、「気づいたら終わっていた」というのは、こういうことです。
そのため、「学習を終わらせること」 へ執着せずに、作りたいものを作って勝手に求められる状態 を目指しましょう!
まとめ
- 学習は手段!作りたいものを目的にしよう!
- 自分が困っていることを解決するシステムを考えてみよう!
- 遠回りせずに作りたいシステムを作りながら学ぼう!
- 学習の終わりは「作りたいものができたとき」に終わってる
素直に、正直に、そして遊びながらも価値のあるエンジニアを目指しましょう!
ぜひ私と遊ぶようにお仕事したいという方は、ご連絡お待ちしております!
Webアプリケーション開発や、学生向けセミナー登壇、お友達になりたい?など…お任せください!
法人・個人様ご依頼大歓迎!
無いなら作っちゃおうの精神で、理想を叶えちゃいましょう♪♪
お問い合わせ・ご相談は以下にご連絡ください。
hk.yu.shirogane@sitem.jp