教科書とかキャリア設計的な観点による堅苦しい話は一切抜きで、僕が思う「これからプログラミングを始める人には絶対説明しておきたいこと」を5つに絞ってまとめてみるという記事。
リアル友人に聞かれたりすることも増えてきて、マジで時代の変化を感じます。
そういうとき、同じ時代の中で実際に学んでいった "少し先の先輩" の考えは誰しも聞きたくなるもの。なんか今回はそういうのを大事にしてみたい。
相変わらず前置きは偉そうだけど、たぶん入門者のみなさんと比べても3センチくらいしか "先" にいないのでそこはご了承ください()
ではさっそくいく!
1.勉強とか理論とかどうでもいいから、まず作って動かそうぜ
もうさ、とにかくここなんだよ。
自分で書いたプログラムがちゃんと動いて結果が実際に目に見えることの感動をまず知って。
全ての原動力はここにあると思ってください。
たぶん今エンジニアとして生活を続けられている人の中に「稼げるから仕方なくプログラミングやっている」なんて人いないと思います(いやきっと色んな例外はいると思う、言葉の勢いです)。
半分は冗談にしても、コードを書く喜び、つまり意図した動作を確認できるときの喜びが仕事を楽しくさせているのは間違いないと僕は思うのです。
新しいことを始めるときに理論や型から入っていくのはとてもいいことだと思うし僕もそれ自体は賛成だけど、プログラミングに限ってはこれをやらない方が失敗確率は減るかな、と思います。
再帰的でちょっとズルいですけど、おそらくこの記事を読んでいるという状況の時点であなたは「プログラミングをしたくてたまらない!コードを書かないとウズウズするんだ…!」っていうタイプではないですよね。
そういうやつは勝手に自分で猛進していくし、まあどの道のプロでもそのタイプが結局最前線に立つ資格を持てるんだよね。
で、そうではないからといって別に不安になる必要はありません。だからわざわざこの記事で一番最初に書いたんです。
- なんかプログラミングできないとヤバいんじゃないか…
- ちょっとだけ興味あるけど1人で猛進できるほどモチベーションがあるわけではない…
という方がほとんどなはず。
そういうあなたこそ!!
まずはプログラムを自分で動かせる感動をちゃんと味わってほしい!!
というわけです。
これはね、どんなに時間が経っても色褪せない楽しさなんですよ。
僕も「新しい言語やフレームワークをさわって初めて動かせた瞬間、表示されたのを目で確認できた瞬間」とかは毎度楽しくてニヤニヤしちゃうし、これはみんな同じことを口を揃えて言います。自分で好きに操れる武器が増える感覚みたいな感じかな。
「言っていることは理解できるけど、どうせその楽しさだって大したことないんでしょ」
と思っているあなた、エアプですか。
もしやったことないのにこう思っているならこれほどの損はないよ。見聞きすることと実際に自分で体験することの歴然たる差を体感してください。
とにかくこれだけは言っておきたい。
どんなに簡単なプログラムでもいいから、アイデアを構想するところ~完成させて公開するところまでをたった1回やるだけで恐ろしいほどのスキルが身につけられるよ、ということを。
これを分かっていない・知らない現役エンジニアというのはとても多いと思います。見栄を張るわけじゃないですけど、これは損だなあと。
手っ取り早く実力をつけるにはとにかくこの「自分で考えて実際に作って公開する」を繰り返すことだと、マジで心から思います。これは異論は認めない。
というわけで初心者のみなさん、勉強とかあとでいいからまず手を動かそうぜ。
2.言語から選ぶな。何がしたいかで選べ。
「プログラミング始める!」って公言すると「何の言語?」ってすぐ訊かれるでしょう。
だから決めなきゃいけないものと思われがちだし、順番として一番最初にありそうな気がしますよね。
でも、言語から決め打ちして入っていくのは僕はおすすめしない。
これは「僕はおすすめしない」ということであって、世間的に間違っているというわけでは全くありません。例えば仕事として食っていくならこれから人材が要求される言語を選ぼうとする動機は正しいわけですし。じゃあなんでそんなことを言うかというと…
今のみなさんにはイメージが湧かないかもしれませんが、そのプログラムが
- どんな場所で
- どういう目的で
- どんなハードウェアで
使用されるかによって使われるプログラミング言語はある程度限定されます。
PS4でゲームを作るのにもCやPythonやJavaやPHPやCOBOLが使えて、
空気清浄機を作るのにもCやPythonやJavaやPHPやCOBOLが使えるわけではないということ。
つまり、逆説的だけどあなたが何をしたいかによって使用できるプログラミング言語もある程度限定されるということです。
言語ごとの人気さや仕事のしやすさみたいな差はある程度あるにしろ、別にポケモンみたいに1つしか選べないわけではないし自分のモチベーションを高く保てることを優先するほうがいいと思いませんか?
とはいえ「今話題のプログラミング言語人気ランキング」とか「これから求められるプログラミング言語」とかで調べるとどうせ1位になるのはPythonかJavaScriptとかだと思うんですけど、この2つならそこまで大失敗になることはないと思います。
そもそも「"需要の高さ" = 1つの分野での需要の大きさではなく必要とされる分野が多い」ことで評価を受けているのがこの2つの言語の主な共通点なので、結果的に選ぶ人が多くなっているのもまあ頷けます。
実はね、言語から決め打ちしちゃってうまくいかなくなるような例を実際に書いてみたんだけど「PythonもJSもあんま問題ないやん!」ってなって頓挫したんですよ(無計画)
ただ、考え方としては「言語から入るな」というのはやっぱり重要です。
言語仕様(文法)だけの学習から入って実際に仕事に繋がっていくことって現場では珍しいと思うので、まず「目の前にあるソレがどういうものか理解した上で、じゃあ一体どの言語で作られているものなのか」という思考軸にするといいと個人的には思います。
例えば、
初めて入ったプロジェクトのチームで作っている "カッチョいいとあるマシン" を見せられたとする。 |
そしたらもう「俺C++に一生を捧げますわー!!!」ってなるでしょ、ということなのだ!
最後の例はまさかのPythonでもJavaScriptでもなかったというオチ。
3.WindowsかMacかなんて死ぬほどどうでもいい
わざわざこんなのに1項目使うのもアホらしく感じたんですけど、これはやっぱり質問してくる人が後を絶たないので今回の趣旨的には書いておくべきだと考えました。
言語から選んでしまうだけでは飽き足らず、「やっぱりパソコンはMacを買ったほうがいいの?」などと気になってしまう方が多数おられる様子。
これほどどうでもいいことがこの世に存在するだろうか。
いや、たしかにMacの方が開発環境的に有利になるシーンはある。それが転じて「エンジニアはMac」みたいなアホみたいな風潮に繋がっているのは間違いなくあるけど、これからプログラミングを始めようという人にとってはおよそ関係のない話だと思います。
そもそもこの話題の本質的な部分はコンピューターアーキテクチャとかに関する部分なはずなんだけど、とうのエンジニアたちでさえもうこの点に関しては「どっちでもいい」と公言し始めているのが現代です。
少し前までは「Windowsではやりにくい操作」というものがあったんですが、今は WSL というものが発展し実利的な差もほぼなくなっています。こうなると単なる「個人が感じる使いやすさ」とかそういう側面しか残っていない。
そんな状態で初心者がPCを選ぼうとする必要など1ミリもないというわけです。
プログラムを書くことも、それを試しに動かしてみることも、もちろんどっちでも問題なく可能なんです。
むしろこれまでIT分野に関わってきていないのなら、普通のPCの扱いとしてWindowsマシンの方が慣れているはずですよね。だったらWindowsを使えばいいと思うのです。「プログラミングも初めてでよく分からないのに、Macの使い方もよく分かってないからもうめちゃくちゃだ!」みたいにはなりたくないでしょ?
そんなことを考えるより前に、「どんなものを作ってやろう…!」とかもっとワクワクすることを考えましょうよ。
そして家にあるオンボロのポンコツPCでもなんでもいいからすぐにプログラムと触れ合ってみるのだ。パソコンくんからしたらたぶんYouTube見るより楽な作業だぞ。
4.綺麗でテクニカルなコードを書くスキルより、実現したい機能をコードに落とし込めるスキルを養おう
ちょっとふわふわしたことばっかり書いてきましたが、4つめはちょっと真面目。
プログラムのソースコードは、短くてすっきりまとまったコードが美しいとされています。
美しいだけではなく、ファイルサイズも小さくなり読みやすさも向上、メンテナンス性が上がりバグも減る。たしかにイイコトずくめです。
でもね、僕はそんなこと後回しでいいと思うのです。
今日は「後回しでいい!」ばっかり言っている気がしますが、じゃあ何を優先するかというと「汚くてもいいから、まずは作りたい機能をソースコードとしてアウトプットできるようになろうよ」ってことです。
ピンポイントなある1つの処理をビューティフルなコードで書ける。これも大事、大事なんだけどさ、「とりあえずあいつに仕事頼んだらなんとなく全部動くものはすぐ作ってくれるよ」ってなる方が絶対いいと思うんだ、僕は。
これもだいぶ個人的な意見が強く出ている部分ではあると思うけど、1つめに紹介した「とにかく作って動かそうぜ」と似た路線であることを思うとけっこう賛同を得られるのではと思います。
「今◯◯と◯◯っていう材料は揃ってるんだけどさ、これを使って◯◯することってできない?」
みたいなことを言われたときにすぐさま頭の中で大枠の設計図を組み立てられて、中身は突貫工事だろうと動くものをすぐに用意できる人。これが今求められている人材であると、僕は強く思うのです。
「システム設計」とか「フルスタックエンジニア」なんてキーワードあたりが近そうですが、僕はこういうことができる人を見て育ってきたということもあり、自分自身今でもこれを目指して日々を過ごしているところです。
実際まわりからの信頼と頼られ方は桁違いにスゴかったし、なによりかっこよかったんだよなあ…。
「成果として発信しやすいから上の評価も得られやすい」みたいな社会的なメリットもたくさんあるんだけど、なによりスキル上達の幅とスピードも段違いに大きいと思うので、僕は本当にこれをおすすめしたい。
まずガーッとやってみようよ!という。
今の時点では何を言っているか感覚的に理解するのは難しいとは思いますが、エンジニアとして仕事を始めたらすぐにこの岐路には気付くと思います。
色んな考え方があるのでもちろん強要するつもりなんて一切ありませんが、僕の言っていたことを一瞬でも思い出してくれたらなあと、切に願います。
5.ソフトウェアは生き物、いいね?
5つめ。
最後に衝撃的な事実をお伝えしましょう。
なんとソフトウェアは生きているんだ。
どうだ!驚いたか!!
…うん、ビビるよね。僕もいまだに驚くもん。
作ったプログラムはそこで終わりではありません。1つ作ったプログラムがもとになり、それが多くのソフトウェアに使われ、発展し、成長していきます。これは業界で言うところの「運用」「保守」とかにあたりますよね。
最初は自分の手の上で作られたはずのたった1つのプログラムが、いつしか全貌も見えないほどに巨大化して増殖している。でも僕らはこれを管理し続けないといけません。作った側にはずっと責任がある。
この事実を見ると、僕はいっつも「ソフトって生きてるよなぁ」って思うんです。子どもを持つような感覚に近いのかな。
心構えとしてこれを理解しているのとしていないのとでは、将来的に何か大きな違いを生むのではと思って今回書いてみました。
なんでこんなちょっと胡散臭い内容を5つめに据え置いたかというと、本来は自分たちが制御するはずのソフトウェア、もといIT技術そのものにアホみたいに振り回されている例が本当に多いからです。
これは僕自身の経験も含まれているので、ある意味自戒でもあります。
「毒をもって毒を制す」とかいうけど、プロジェクト内で発生したある問題に対処するために全く予期していなかった別の問題も発生しちゃって僕らが制される(笑)みたいな笑えない展開ばっかりなわけなんですよ、マジで。
これって、生きてるって思いません?
僕らはソフトウェアを静的なモノとして扱うのではなく、命ある情緒豊かなものだと思わないといけないのかもしれません。
でもさ、情緒はあってもいいけどさ、不安定なのはやめてよね…。
おわりに
プログラミング入門者に向けた記事なのに最後はまさかの情緒の話をして終わるという謎展開でしたが、どうでした?
本当に僕が思っているリアルな意見を凝縮させてみました。
本、学校、スクール、セミナー、動画講座。これらでこういうことを教えてくれることはほぼないはず。でも、あなたの身近な経験者に聞いてみたらきっと同じようなことを言うと思う。
つまりみんな本当は大事だと思っていることなんですよ!
証拠はないけど、今はそう思うのがいいんじゃないかな!(無責任)
というわけでみなさん、頑張ってください。
実際の勉強も今すぐ始めたいなら、とっかかりには Udemy が一番おすすめです。僕も今でも使ってます。
おわり!
趣味レベルですが「こんな動きさせたい!」って思ってから実際に動かすまでの時間はほんとに好きです
最近はiPhoneのショートカットアプリで遊んだりもしてます
iPhoneのショートカットアプリは本当に良い例ですね!!
まさにあの手のカスタマイズがプログラミングの楽しさの原型だと思います。思えば僕もTaskerというAndroid自動化アプリを散々弄り倒しましたが、あれが好きなのも当然だったのだなぁと…。
って聞いたことないな…HTML5で廃止された要素かな?と思い、「marquee html」でググったところ検索結果のページの件数が面白い表示になっているのを発見しました。
やってみてください。
本筋と関係ない話ですみません。
お久しぶりです。こんな記事までお読みいただいていると思うとなんだか恥ずかしいですね…。笑
ググってみました。なんだこの待遇!笑
こういうの多いですね。そこそこ知ってると思ってましたが、隠れたお遊びはまだまだ多そうです。
でもGoogleさんmarqueeタグは使わずにCSS Animationで実装してるみたいですね。
廃止されてるから仕方ないけど、これでは待遇が良いのか悪いのか…笑
ほんとだ…笑
こんなくだらないことをムフフしながら仕事している人がどこかにいるのかと思うとなんだか微妙な気持ちになりますね…。