初投稿です。
4月も1週間過ぎたので、駆け出しエンジニアに向けてエールを送る意味で記事を執筆することにしました。
まず初めに軽い自己紹介から。
About me
// 私は都内のIT企業で働く4年目のエンジニアです。
// 得意科目はフロントエンドの実装で、これまでにReact.jsやVue.jsなど
// のプロジェクトで要件定義~テストまで幅広く開発してまいりました。
// フロント以外にも、JavaやPHP、Pythonなども経験があります。
// 4年目といってもまだまだ勉強することだらけの毎日ですが、培ってきた知見や、
// つらかった経験、楽しかった経験などつらつらと発進できたらと思います。
// ということで。。。
String greeting = "よろしくお願いします。";
System.out.println(greeting);
プログラミング学習について
未熟な私ですが、最近では後輩なども何人かできて、よく質問されるのが、「どうやって覚えてますか?」といった質問です。
その問いに対して私は、「覚えてないよ、分からないことは都度調べてる」と答えています。
自分でそう言っていて少し違和感があったので詳しく解説したいと思います。
暗記過多の学習からの脱却
この業界で働いていると学ばなければならないことが腐るほどあります。バックエンドの言語、フロントエンドの言語、それぞれのフレームワークの使い方、SQL、インフラの知識、そもそもWebアプリケーションってどうやって動いてるのか。
こんなの全部覚えようとしたら腐りますよね。。
そこで一旦、算数に置き換えて考えてみましょう。
「1 + 1 = 2」
これは皆さん暗記で答えていますか?
おそらく暗記と答える人は多いかもですね笑
では
「385 + 463 = 848」
これを暗記している人はいますか?
おそらくいないでしょう。
計算が得意な人であれば、暗算
苦手な人で自力で解く人であれば、筆算
計算なんかしたくないぜって人であれば計算機で答えを出すかもしれません。
システム開発において上記3つのアプローチはどれもシステムが要件通り、設計通りに動くのであれば、正解といえます。
言語によって変数の定義の仕方やfor文の書き方、コンソール出力の方法は異なります。
ただし、これらをすべて覚える必要はありません。
// 変数定義
String hoge = "ほげー";
int age = 25;
// for文、コンソール出力
for(int i=0; i<10 ; i++){
Sysytem.out.println(i);
}
// 変数定義
const hoge = "ほげー";
let age = 25;
// for文、コンソール出力
for(let i=0; i<10 ; i++){
console.log(i);
}
大事なことは何ができるかを覚えることです。
プログラミングは大きくみると「順次」「選択」「繰り返し」の連続です。
分かりやすく言うのであれば、「上から下に」「if分岐」「forループ」で動いているだけです。
システムで求められている「要件」を満たすためにどうすれば動くかということを知っていればいいわけです。
先の計算の例のように、やり方さえ覚えてしまえば、「385 + 463 = 848」を覚えなくていいのです。カンニングしていいのです。重要なのはやりたいことを把握して調べる能力だと思います。
よく使うものであれば自然と覚えていきますしね。
プログラミング学習での近道は、たくさん読む、しっかり理解する、たくさん書いて動かしてみる(コピペ上等)
ひとつひとつ理解していけば必ず身についていきます。
新人エンジニアのみなさん。健闘をお祈りしています。