すいませーん!今中学生なんですけど将来プログラマーになるには
どうしたらいいですか?
どんな勉強をすれば良いでしょうか?
中学生なのに将来を見据えてて有望ですね!
じゃあ私が実際にプログラマーとして働いてみて
必要だと思うことを話してみるね!
こんにちは、太郎です。
独学でWEB制作を学んで1年で制作会社に転職し、今は現役エンジニアとして活動しています
プログラマーという仕事は近年広く認知されるようになりました。
中高生の男の子の【将来なりたい職業ランキング】でも2位ランクインするなど人気の職業です。
が、その仕事の全容はあまり知られておらず、いまいちピンとこない方も多いかと思います
そして、ネットやSNSでも胡散臭い記事や教材、広告が出回ってるのをよく見かけるのもこの職業の特徴だと思います!
この記事ではその全容や学び方など著者自身の経験に基づいて書いていますので、正しい知識を身に着けて、目標へ前進しましょう
- この記事で分かること
- プログラマ-の仕事
- プログラマ-に必要な能力
- プログラマ-になるための勉強方法
プログラマーのとは何する人?
自然言語の翻訳者
プログラマーと行っても様々ありますが、ひとえにまとめると人間が普段使っている言語をコンピューターに伝える翻訳者みたいなものだと言えます。
なぜなら、プログラマーが記述するコードは特別な魔法や呪文のように見えると思いますが、
その1つ1つが人間が使用している言葉に言語化出来るからです。
むしろその言語化が出来ないとコードは書けないのでまず、コードを書く時は自然言語で言葉にして
まとめてから、それをコンピューターに伝えるという作業をします。
その時に使用するのがプログラミング言語と呼ばれるやつです。
例文を見てみましょう!
翻訳の例文
では実際に下記のコードを翻訳していきましょう!
1️⃣const element = document.getElementById('myElement');
2️⃣const addClassBtn = document.getElementById('addClassBtn');
3️⃣addClassBtn.addEventListener('click', function() {
4️⃣ element.classList.add('example-class');
});
1️⃣const element(elementに定義します)
document.getElementById(‘myElement’);(htmlの中のidのmyElement)
翻訳→【htmlの中のid=myElementをelementということにします】
2️⃣const addClassBtn(addClassBtnに定義します)
document.getElementById(‘addClassBtn’);(htmlの中のidのaddClassBtn)
翻訳→【htmlの中のidのaddClassBtnをaddClassBtnということにします】
3️⃣addClassBtn.addEventListener(‘click’, function() {}
翻訳→2️⃣のaddClassBtnがclickされたら
4️⃣element.classList.add(‘example-class’);
翻訳→1️⃣のelementにexample-classを付け足してください
全訳→1️⃣htmlの中のid=myElementをelementということにして、
2️⃣htmlの中のidのaddClassBtnをaddClassBtnということにします。
3️⃣そしてaddClassBtnがclickされたら
4️⃣elementにexample-classを付け足してください
とこのような翻訳となります!
行ったり来たりで最初は読みづらいかもしれませんが、感覚的には英語のリーディングに似ています。慣れてくると返り読みをせずに読めるようになります!
プログラマーに必要な資格は?
2023年現在、プログラマーという職業に必須の資格はありません。
そこがプログラマーという職業の魅力の1つでもあります!※大企業は例外ですが…
私もですが、学歴のない方でも門戸が開かれているという点では、
生まれも育ちも関係ない成果物至上主義業界なので、誰にでも職につけるチャンスが有るということです。
とは言ってもプログラミング教育は、2020年から新学習指導要領で小学校の学習に加わりました。
今後企業が資格を就職面接の際、基準にして合否を決める可能性もなくはないと思います。
資格に関してはこちらの記事がまとめられているので興味のある方は除いてみてください!
プログラマに必要な能力は具体化と抽象化
具体化能力
プログラマに必要な要素の1つは具体化能力だと思います。言い換えると問題の分割能力です!
なぜなら、クライアントさんの要望の多くは漠然としたものが多いからです。
そして文部科学省が、プログラミング教育を導入した背景もここにあります。
具体化能力の例
例えば、料理をしたことがない、私に”カレーを作ってください”という要望が来たとします。
ここでどの様に問題を分割するかと言うと。
Step1:googleでカレーの作り方を検索する。→Step2:必要な具材をリストアップする→
Step3:必要な調味料をリストアップする→Step4:食材を買いに行く…..
という風に”カレーを作る”という問題に対して、いくつものタスクに分割して目的を達成していきます。
これは数学的能力でもありますし、国語の読解能力が必要でもあります。
この様に、プログラミングでは目的に対していくつものタスクにまず分解して、
タスクの集合体=成果物。という風に組み立てていきます。
俗に言う論理的思考力ってやつです。
抽象化能力
そしてもう一つが、抽象化能力です。これは言い換えると分類能力です。
同じことを繰り返し行う作業は、別に分類していつでも取り出せるようにしておく。
料理を例に取ると、カレーと肉じゃがという異なる料理は、基本的な調理手順や使用される食材が多く共通しています。
違いは、カレー粉を使用するか否かの違いだと言えます。
つまり共通する(例:材料を切る、煮る)を再利用し、特有の特性(使用する調味料など)を個別に定義します
なので、調味料以外は全てまとめておいて、
カレーや肉じゃがを作るときに調味料だけ変更する。
といった具合に、パッケージ化するという能力がプログラマーは必要になります。
プログラミングにおいても同様に、共通のコードパターンや関数を抽出し、異なるプログラムや機能に適用することができます。
例えば、データの取得や処理の方法が似ている場合、それらを一つの関数やクラスにまとめることで、異なる状況やプロジェクトで再利用することが可能です。
異なる部分(この場合は「調味料」に相当)だけを、変更することでで対応します。
これは数学的能力に近い気がします。因数分解なんかはそうですね!
どんな勉強をしたらいいか?
私も独学時代はどの様な勉強をしたらいいか悩みましたが、
学生に言えることは、主に言語系である国語、英語、数学(筆者は数学も数を使用した言語であると捉えてます)の勉強のプロセスはプログラマーを目指す上でも非常に役に立つと思います。
プログラミングというのは言語です。
その習得プロセスは何も特別なものではなく、必修科目に含まれている学問の取得プロセスと何ら相違ありません。
言語なので使っていないと忘れるし、逆に言えば毎日読んだり書いたりするうちに身につくものでもあります。
はじめはYoutubeを見ながら一緒に写経をし、それから本だったりUdemyの教材だったりを利用して勉強していくとスムーズに学習が進むと思います。
勉強教材に関しては以前の記事
で書いていますので参考にしてみてください!
暗記はするな!
ここで勉強する上で一番重要なことをお伝えします!
よく初心者にありがちな間違えで、プログラミング言語を暗記しようとする傾向があります。
しかし、そんなことは不可能なので、Web記事やドキュメントを呼んで、それを使用できる引用能力を高める事が必要です。
例えば
javascriptで10000という数字を10,000とカンマ区切りにしたいなぁ
と思ったとします。
その時に私なら、
googleで”javascript カンマ区切り”や”javascript 区切り 数字”。
という風に検索します
検索でヒットした記事を読んで実際に使って見ることが出来たなら、
その技術に関してはマスターしたと捉えてOKです。
調べた関数を覚えておく必要はありません。
まとめ:
この記事ではプログラマーになりたい中学生にむけて下記のことを説明しました!
- この記事で分かること
- プログラマ-の仕事
- プログラマ-に必要な能力
- プログラマ-になるための勉強方法
言語により覚えることは様々ですが、言語感で違うのは記述方法だけだったりもするので、
まずは一つの言語を学ぶことから始めるといいと思います。
そして重要なのは覚えないこと、覚えずに何度も使用すればいいんです!
とにかく成長が分かりづらいのが言語学習の特徴だと思いますが、着実に身についていきますので頑張っていきましょう!
以上、太郎でした〜!
コメント