とある組み込みエンジニアひとりごと

朝活を通じて得たものを紹介していきます

プログラミングの独学が難しい理由とその解決法

今回の記事は、

  1. プログラミングを独学するのが難しい理由
  2. プログラミングを独学し、継続する方法

を紹介したいと思います。

私について

私は社会人から組み込みソフトウェアのエンジニアとして働いています。
主な言語はCです。大学のころからCは何度も挫折していますが、昨年MITのコンピュータサイエンスの講義をやり終えています

www.monokuma12.com

プログラミングを独学するのが難しい理由

プログラミングの独学が可能か不可能かでいえば、可能だと思います。
何事も独学で重要なのは、習慣化だと考えているので、

それを阻害するものはできる限り排除する必要があります。

阻害するものそれは何か?

  1. 言語選択に失敗した問題
  2. 開発環境/デバッグ環境がチープ問題
  3. 継続できない問題

の3点が重要だと考えています。

言語の選択に失敗する問題

プログラミングで大切なことは、アルゴリズムであり、

その手段が開発言語というのが基本的な考え方です。

なのでよくあるのが、〇〇言語ができれば職がありますか?という質問。

アルゴリズムが考えることができれば、実現手段は何だっていいわけです。

ただ、初心者ってなるとアルゴリズム→コード化をまだできないレベルなので、それがやりやすい言語を選択しましょうっていう話です。

アルゴリズム→コード化の練習用の言語なので、

ここに特化してわりきって選択しましょう。

私がおすすめするのはpythonです。pythonいいぞ

※Cがよくない理由は、よくわからないおまじないが多いので、アルゴリズム→お作法→コード化という風に、お作法が入ってわけわかめになる人が多いので、よい言語とはいえません。

開発環境/デバッグ環境がチープ問題

デバッグは重要な作業です。デバッグとは、アルゴリズム通りにプログラムしたものが

想定した通りに動かないときにやる行為です。

従って、自分の書いたコードがトレースできる、どう動いているか1行1行検証できるというのが重要になります。

ちなみに、pythonだと適切なデバッグ環境を作れば、フィードバックは数秒で得ることはできます。

例えば、組み込み系がしんどいとされる部分がここで、例を出すと

 ・コードの修正

 ・コンパイル:1時間

 ・Firmの書き込み:3分

 ・printfしかない情報

って感じに進んでいくので、pythonで数秒で間違いに気づけるのが、組み込み系だと数時間かかるというわけです。この成長度の違い致命的ですね。

私がおすすめする環境はpycharmです。これ入れてしまいましょ

gammasoft.jp

継続できない問題

プログラミングはアウトプットです。英語でいうと英作文。ブロガーでいうとブログ。というように、アウトプットです。

毎日継続する仕組みを作り、毎日やるからこそ、気づいたらレベルアップ、戦闘力があがっているわけです。

書いたコードを保存する場所として、Gitというツールを使います。

gitに毎日のアウトプットを保存していきます。

こんな感じに色が付きます。毎日埋めて、色を緑することを草をはやすと言っています

f:id:monokuma12:20190104044153p:plain

まとめ

挫折する理由を今回まとめました。

重要なことは

 ・アルゴリズム→コード化すること

 ・毎日継続すること

であり、自分のアウトプット(コード)に対して、とにかく早いレスポンスにこだわると、開発言語の選定、デバック環境や、gitなどのコードを保存する環境があとあとキーポイントになってくるわけです。

従って、

 ・pythonをpycharmでかけ
 ・書いたコードはgitに入れろ
 ・毎日やれ
が重要です。転職の際には、企業は能力をみたいので、gitの成果物でも送ってもらえれば案外知りたいことは知れたりしますので、毎日やれ!は就職にも効いてきます。

 

参考書籍

最後に参考にしたほうが良い書籍の紹介です。

今は独学プログラマーという書籍もあり、エンジニアとして生活するための必要な考え、ツールなどを説明しているので、この書籍は必読です。

独学プログラマー Python言語の基本から仕事のやり方まで

独学プログラマー Python言語の基本から仕事のやり方まで

 

 ソフトスキルはエンジニアとしての人生について書かれています。

プログラマーとして生きるとなると、それは個人の資産になります。

この資産を有効に活用するための生き方が書かれた本です

SOFT SKILLS ソフトウェア開発者の人生マニュアル

SOFT SKILLS ソフトウェア開発者の人生マニュアル

 

 


div #breadcrumb div{ display: inline;font-size:13px;}