こんにちは、京大生ブロガーのゲーテ(@goethe_kyodai)です。
ぼくのプログラミング遍歴を振り返ってみます。
C言語の本を買うが数ページ読んでやめる→ Progate全コース制覇 → CodePrep全ブック制覇 PyQ全コース制覇 → Aidemy数コース制覇 → paizaのA問題とS問題をいくつか解く
こんな感じで主にプログラミングサイトで独学してきました。
そのなかで星の数ほど失敗し、無限に時間を溶かしてきました。
そんなぼくだから書ける未経験からのプログラミング独学でやらかしていた8つの失敗 をまとめました!初心者プログラマーは必見です!
目次
- 人に聞かずに自分で解決しようとする
- 写経をして勉強した気になる
- 動けばいいやの精神でいる
- 1から全部書こうとする
- 本で勉強しようとする
- 実装をしない・手を動かさない
- 変数の名前を適当につける
- 入力補完のあるエディターを使わない
- 挫折した人はスクールに通うしかない!
- 失敗まとめ
人に聞かずに自分で解決しようとする
プログラミングってのは永遠に出てくるバグとの戦いです。
自分は「全部一人で解決してやる!」と謎のプライドを持っていたので、全部一人でバグを潰してました。
ググりながらなんとか自分でできるっちゃできるんですが、その代わり何百時間もの時間がかかります。
C言語でcsvファイルを読むプログラムを書くのに5時間溶かしたこともあります。
解決できないバグは人に聞いた方が100万倍速いです!
5時間悩んでも取れなかったバグが人に聞いたら5秒で解決した!なんてことザラにあります。
知り合いに詳しい人がいるなら聞いた方がほんとうに早いです。時間を無駄にしないでください。
そういう人がいない人は無料のプログラミング質問サイトで質問しましょう!
オススメなのがteratailです。何より返答が早いのがいい!投稿したら6時間以内には返ってきます。
英語版サイトですが、Stack overflowもオススメです!どんな言語のどんなバグでもカバーしてるのがいいです。ここに質問投げればだいたい解決します。
写経をして勉強した気になる
コピペ → 実行 → 動いた!→ 終わり
こんなこと毎回やってませんか?
それじゃなんの成長もしてません(笑)。
コードをいじって一行一行全部理解しないと勉強になりません。 エンジニアとして成長してないんです。
写経だけで終わらせないようにしてください。
コピペ → 実行 → 動いた!→ なんで動いたんだろう? → コードいじくる → 理解!
これで初めてそのコードを理解できたことになります。
動けばいいやの精神でいる
プログラミングを始めたての頃は
「明らかなバグあるけど、出力は合ってるしいいや!」
の精神でプログラミングしがちです。僕もそうでした(笑)。
そういうコードは、その時の入力ではたまたまうまくいったけど別の入力じゃ動かないことが大半です。汎用性がないんです。
想定される全ての入力で動かないプログラムは駄作です。実務ならかなり危険な動作を起こすかもしれない地雷であります。
そんなコードばっか書いても成長しません。
どの場合でも動くように、「ここをこう直せばいいこう動くはずだ」と考え続け、バグを直す過程でプログラミングに必要な論理的思考力がつくんです。
「このコードどうなってるかわかんないけど、動くから直さなくてもいいや!」
って思ってる人は要注意です。
1から全部書こうとする
プログラムっていうのは1からぜーんぶ自分で書く必要はありません。 大学入試の二次試験とは違います(笑)。
なぜなら、ネットに人が書いたお手本のコードがあるし、ライブラリもあるからです。
そういうのは、大抵プロが書いた、行も少ないし速いしメモリ消費量も少ない超優秀なプログラムです。初心者が書いたものとは比べ物にならないものなんです。
自分で1から書くより、そういうプログラムをコピペしてきた方がパフォーマンスもいいし、良いコードなのですごい勉強になります。
何も全部をコピペしろと言うわけではありません。たいていは必要な部分だけコピペして自分のコードに組み込んでます。
自分で1から書いても、時間がかなりかかるし、実装速度やメモリ消費量で大きく劣る劣化版しか書けません。
自分が一生懸命時間をかけて書いたのに、それよりはるかにパフォーマンスのいいコードがネット上には落ちてた、なんてよくあります。
ですが、人の書いたお手本コードやライブラリは汎用性が高くはないです。自分がやりたいことをそのまま実現してくれるわけではないことが多いです。
そこで、お手本コードやライブラリを自分の目的に合うようにカスタマイズするのが効率のいいプログラミングの仕方なんです。
まずネットで探す
→ あったらそれを利用
→ なかったら仕方なく自分で作る
この流れでプログラミングをするのが1番早いです!
本で勉強しようとする
「よ〜しプログラミング勉強したるど〜」と意気込んで本を買う → 数ページ読んで放置
こんな経験ありませんか?
僕もあります(笑)。3冊くらい積ん読してます(笑)
本を買ってもたいていやりません。紙に書いてるコードを打って写経すんのがかなりめんどくさくて心が折れます。
本はプログラミング学習には向いてないです。特に初心者は本での独学は不可能に近いでしょう。
じゃプログラミング学習に最適なのは何か?それはオンラインサイトです!
手を動かして学べるし、写経もコピペ一発で済んですごいプログラミングの勉強が捗ります!
プログラミング独学にオススメなサイトはコチラにまとめました。
実装をしない・手を動かさない
本でプログラミングを勉強してる初心者にありがちです。
本で読んで学んだ気になって、めんどくさい実装(実際にプログラムを組むこと)は一切しない。
それじゃ一向に技術力はあがりません。
なぜなら、実装しないと完全に理解することはできないからです。
実際にプログラムを書いてくと、「あれ?この部分ってなんでうまくいってるんだ?」とか「ここってどう動いてんだ?」とどんどん疑問が出てきます。
そこで初めて自分が分かってないことに気づくんです。そしてその疑問を解決してくなかで「理解」できるんです。
これは技術的なことでもそうですし、理論的なことでもそうです。
数学屋の人はこのパターン当てはまることが多いんじゃないでしょうか?理論だけ学んで実装を避けがちなんじゃないでしょうか?
変数の名前を適当につける
int a = 3; int b = 3; double x = 67; double y = 7288;
こんな風に変数をアルファベット順に適当につけたりしてませんか?
それで後で困るのは自分です。
なぜなら自分のコードっていうのは自分で再利用することが多いからです。
「前書いたコードのあの部分を再利用して新しいコードをつくる」っていうのはよくあることです。
それで何ヶ月前に書いたコードを読解しなきゃいけないんですが、変数の名前がaとかxとかだと何を指してんのかわからなくて混乱して読解に時間がかかる。
無駄に時間を浪費して効率が落ちる。なんてよくあります。
仕事でプログラミングしてる人は自分のコードを他人が読むのは当たり前だと思いますが、自分のコードは他人以上に自分が読みます
このような「実際コードを書く上で大切なのに他で教えてくれないテクニック」をまとめたのがこのリーダブルコードです。
これを読んて実践するだけでプログラミングの効率が上がります!僕も参考にしてます。
そのテクニックをもうちょっと詳しく紹介してるのがプログラミング作法です。テストみたいなより実務的なことが詳しく載ってます。
入力補完のあるエディターを使わない
適当なエディターを使ってませんか?
エディターでプログラミングの効率は左右されます。
メモ帳で書くなんて、洗濯機を使わずに手で洗うようなもんです。(僕は始めたときはメモ帳でコード書いてました(笑))
エディターで一番大切な機能が「入力補完」というこんな風にタブを押すと変数の候補を表示してくれる機能です。
この入力補完機能があることで効率1.5倍くらいになり時間短縮されます!いやほんとです!入力補完を舐めてはいけません。
プログラムによってはすごい長ーい変数を使わなきゃいけない時があるので、すごい重宝します。
挫折した人はスクールに通うしかない!
プログラミング学習には最適なのはオンラインサイト!と言いましたが、ガチのマジの初心者にはすこしきびしいものがあります。オンラインサイトで挫折した人は、人間がマンツーマンで教えてくれるプログラミングスクールに通うしかありません。
でもプログラミングスクールって高いんですよね・・・安いところで7万くらい、高いところで60万とかします。
せっかくの高い買い物ですから、内容をよく吟味したいですよねー。
そこで、大手のプログラミングスクールは無料体験というのをやっているんです。実際に体験して雰囲気やカリキュラム、どのレベルまで到達できるかなどを知ることができるんですねー。無料でですよ!
僕が実際に体験したプログラミングスクールの体験談を「完全オンラインで無料体験できるオンラインスクールまとめ」と言う記事にまとめました!まずは色んなスクールを体験して比較検討するのがいいかと!
失敗まとめ
- 人に聞かずに自分で解決しようとする
- 写経をして勉強した気になる
- 動けばいいやの精神でいる
- 1から全部書こうとする
- 本で勉強しようとする
- 実装をしない・手を動かさない
- 変数の名前を適当につける
- 入力補完のあるエディターを使わない
みなさんも気をつけましょう!