本当にプログラミング未経験の初心者が独学で勉強するとどこまで成長するか

f:id:heyaganodame:20210108133837j:plain

初学者が独学でプログラミングを勉強して成長できるのか

2019年の11月頃からPythonを勉強し始めました。それからおよそ1年と2ヶ月が経ちましたが、現在Pythonを使いこなせているかというと、全くそんなことはありません。が、まったく成長していないかというと、多分そういうわけでもない、と思います。

 

コードを見ればなんとなく書いてあることを、『完全には理解できないものの、「こんな感じかなー」程度には読める』ようにはなってきました。プログラミングの勉強をはじめたころと比べたら成長しているのかもしれませんが、書いてあるコードが何となく分かる程度なので、まだまだ勉強が必要だということは間違いありません。

プログラミングの勉強を『苦痛』だと感じたことはあまりないので、それは不幸中の幸いと言えるのかもしれません。

当記事の結論を先に書きますと、

完全なる初学者が独学でプログラミングを勉強すると、1年でコードが少し理解できるようになるがイチからコードを書くレベルにはなれない、と言えるかもしれません。

「プログラミング未経験が3ヶ月で習得」的なブログをいくつも見てきましたが、残念ながら私自身には当てはまりませんでした。

こうしたサイトの記事を読むと「自分も3ヶ月でバリバリコードが書けるようになるんじゃないか」そんな幻想を何度も抱きましたが、やはり幻想でした。

世の中にはそのような人も大勢いるのでしょうが、私のようにそうではない人も一定数いると思っています。

 

初学者>>>>>>基礎>>>>>>基本>>>>>>中級>>>>>>実務>>>>>>業務>>>>>>

独断と偏見ですが、上のようなグラフを作ってみました。

  • 初学者:完全なプログラミング初心者(スタート地点)
  • 基 礎:単一の文法ならある程度理解できる頃合い
  • 基 本:基本文法を組み合わせてちょっとしたコードが理解できるようになる
  • 中 級:0からプログラムを書くことはまだ出来ないものの内容を理解したうえで自発的にコードを書くことができるようになる
  • 実 務:自分でわからないことを調べてコードを書いていくことができる入口にたつ
  • 業 務:プログラミングを仕事としてコードを書いていくことができるようになる

以上のようにざっくりとしたグラフを作ってみたのですが、完全初学者が1年で独学すると

初学者>>>>>>基礎>>>>◎>基本>◯>>>>中級

上記のように、「基礎」以上「基本」以下「中級」未満程度には理解度が進むと考えてもらえると良いかもしれません。

もっとざっくりした分類をしてみると分かりやすいかもしれません。

  • 初学者:小学校低学年
  • 基 礎:小学校高学年
  • 基 本:中学校入学
  • 中 級:中学3年生(受験生)〜高校入学
  • 実 務:高校2年生
  • 業 務:大学受験生

こちらの分類でいうと小学校〜中学校は義務教育なので知識を増やしている最中と言えるかもしれません。高校生になると義務教育が終わり、専門知識を身に着けていく過程に入るわけですから、義務教育で学んだことの応用と言えると思います。業務レベルを大学受験生としたのは様々な知識が求められるからです。大学に入ってしまうとより専門的な分野を学ぶことになりますが、受験期に比べると詰め込む知識量が下がり実用的になるイメージから。

こちらの分類でみてみると、プログラミング初学者が1年経つと中学入学レベルくらいには知識量が増えているレベルになれる、ということかもしれません。

1年以上継続して何かをやり遂げたことがあまりない中で、現在も継続できているということは、私自身が「プログラミングの勉強を嫌いになってはいない」ということだと言えると思います。 

そもそもプログラミングに興味を持った理由

現在、運送会社で勤務しています。一昨年、転勤で職場が変わったのですが、旧態依然とした業務を目の当たりにして当初はびっくりしました。

  1. 業務の殆どが電話とFax
  2. 伝票は手書き
  3. 紙を使ってのデータ保存

インターネットが当たり前の生活で、紙と鉛筆で仕事をする職場がまだこの世に存在するのかと思いました。

そんな職場で仕事をしていく中で、「これってパソコンでできるよね?」ってことが結構ありました。

実際に職場の片隅にはインターネットにつながったパソコンがあるのですが、ほとんど使っている場面に遭遇しませんでした。

【郷に入れば郷に従え】という言葉もあるので、ひととおり仕事を覚えるまでは私自身も紙と鉛筆を武器に仕事をしていましたが、ある程度自分の仕事が把握できるようになったころに、やはり「パソコンでやったほうが効率的じゃね?」となったわけです。

そんなことがあり、まずは伝票作成を自動化出来れば午後からの仕事を大幅に短縮できると考えたのがプログラミングに興味をもったきっかけでした。

プログラミングで効率化できそうだと思った業務と改善方法

f:id:heyaganodame:20210114140727j:plain

  1. スケジュール管理(紙台帳)
  2. 配車関係書類(紙台帳)
  3. 運行記録(紙台帳)
  4. 車両管理帳(一部パソコン使用)
  5. 運行記録簿(一部パソコン使用)
  6. 請求書作成(一部パソコン使用)
  7. 受領書記録簿(ファイル管理)
  8. 伝票作成(一部パソコン使用)

以上の行程が主に生じる業務でしたが、これらほとんど全てが人力で、最終的なデータ保管時のみパソコンを使用することになっていました。

1.スケジュール管理帳(A)

トラック1台ごとに月単位で確定している荷物を振り分けていくのですが、スケジュール決定後であっても配車前日に突然内容が変わることもあり、すでに運行スケジュールの用紙を作成していた場合は、その都度用紙を書き直す必要がありました。

2.配車関係書類(B)

主に確定したトラックのスケジュール表です。

荷物の受け取り、日時、場所、数量、トン数、卸先の場所、日時、時間など配送が確定しているトラックの当日のスケジュールです。自社トラックに配車の場合にはそこまで手間ではないのですが、協力会社のトラックドライバーに用紙を渡す場合に、用紙の内容が間違っているとトラブルの原因となるため、誤情報がないか何度も確認する必要がありました。

用紙1枚で済めばよいのですが複数枚になることもあり、記入漏れ、渡し漏れが起きやすい状態でした。

3.運行記録(C)

割り当てたトラックの運行を記録します。運転手の運行日報とデジタコの記録、その配送についての売上などをスケジュール管理表に記帳したり別の運行記録簿に転写する必要がありました。

4.車両管理台帳(D)

こちらについては書類が非常に多いので、ここではナンバー管理を指すことにします。協力会社やスポットで請け負ってもらうトラックの車検証のデータを保管します。当然ですが、車検日が過ぎているトラックに仕事をお願いすると法律違反となります。最大積載量やトン数確認、車検期日などで使っています。

5.請求書作成(E)

スケジュール管理帳に転写した売上などをもとに請求書を作成していくのですが、スケジュール管理帳が膨大で、月末になると『あれがないこれがない』とさわぐ人続出でした。

6.伝票作成(F)

1日単位でその日の運行で生じた売上、経費を伝票に記入する必要がありました。コンピュータに入力後印刷し、印刷した用紙を見ながら紙に転写する謎の業務がありました。

7.受領書(G)

基本的に受領書は、「荷物が届きましたよ」という確認に使われるものなので、トラブルなどがなければあまり必要性を感じないのですが、自社で保管すると書類が膨大になることから、某大手さんに依頼された配車で生じた受領書を自社倉庫で保管し、依頼されたときに該当する受領書を送付するという管理方法になっていました。これは法的に問題がないのかは不明ですが。そんなわけで、某大手さんから『◯◯年□月△日、◎◎行きの受領書をすぐに送ってくれ』なんて依頼が来ると積み上がったダンボールの中から該当の受領書を捜索する、まるで宝探しのような突発的なイベントが多々発生していました。

 

以上が改善できそうな業務ですが、これらを自動化することでかなり業務がスリム化されるんじゃないかと思ったわけです。

で、改善策はというと(業務改善案)

こうした手入力で行っていた各業務をパソコンで管理した場合、私の頭の中ではこんな感じになっていました。

  1. スケジュール管理帳(A)の項目に必要事項を入力すると、その時点で確定している配車関係書類(B)と請求書作成(E)と伝票作成(F)の必要事項に反映させる
  2. 車両管理台帳(D)は主に(A)の確認に使うものなので、その業務をスムーズにできるようにするためにデータを紙保管ではなくデータ保管に変更する
  3. 受領書(G)は突発的に開催されるイベント以外では使うことがないので、ダンボールに突っ込むだけの保管ではなく、会社別に保管先を分類して倉庫のドコに保管しているのかをパソコンで把握できるようにする

以上のように業務方法を変更するとかなり時間の節約ができるわけです。

では、このデータごとの連携をどうするか、となったときに『プログラミングを勉強してみようかな』となった次第です。

そもそもそのプログラムを外注してくれる会社ではないので、業務効率化のためにどれだけかかるかわからないけれど、プログラミングをやってみようという選択肢が出てきたわけです。

プログラミングにPythonを選んだ理由

業務効率化のためには各々の業務をつなげることなので、大元にあるデータを一元管理できればすっきりさせることができるはず、ということでExcelVBAを勉強することにしました。

ですのではじめてプログラミング言語に触れたのはExcel VBAということになりますが、書籍を購入して勉強をはじめたはいいものの、難しすぎてさっぱり分からなかったんです。そんなときに出会ったのがPythonでした。

【他のプログラミング言語よりもコードが簡易的で、意味も分かりやすい。しかもExcelのデータ管理もPythonで作成可能】

この言葉を見て、藁にもすがる思いでPythonの書籍に手を出しました。そのときに購入したのが、スッキリわかるPython入門という書籍でした。ExcelVBAのテキストとは違い、自分でもできそうだと感じて独学がスタートしたわけです。

オンライン学習サイト:PyQについて

書籍での独学と合わせてオンラインでも勉強したいと思い私は数多のオンラインサイトからPyQを選びました。1年間継続しているとはいえまだまだ基本の「キ」程度の私がPyQについて語ることなどほとんどないのですが、現時点で感じているのは「継続は力」に素直に共感できる人なら続けられそう、ということです。

f:id:heyaganodame:20210114144330j:plain

先日ようやく文法の基礎が終わり、次の単元に進んだのですが、内容が一気に難しくなりさっぱり理解できなくなりました。

普通の人の数倍かけてようやく基礎の基礎を固めてようやく新単元にはいったかと思った矢先に難易度が一気に上がったように感じました。このときはじめて「自分には無理かも…」と思いました。このまま続けてよいのか迷ったので、Python事務局に質問してみたところ、このような回答がありました。

問い合わせ内容
プログラミング未経験のため、次のようにコースをすすめました。 1.Pythonプログラミングをはじめよう 2.Python文法基礎を学ぼう 以上のコースについては繰り返し写経をおこない、現時点では7〜8割ほどは内容が理解できるようになりました。 この2つのコースが終わり、 3.Python文法を実務レベルに深めよう に進んだのですが、一気に難易度が上がったように感じ、さっぱり内容が分かりません。 このまま進んでもいいのでしょうか。 それとも1.2.の両コースの内容を100%理解できるまでは先に進まないほうがいいのでしょうか。
「Python文法を実務レベルに深めよう」になると、難しくなりますね。
不安になると思いますが、このまま進んでも大丈夫です。下記のブログのように、多くの方が同じように悩んでおります。しかし、学習を進めていくとわかるときがやってきます。

あぁ、自分と同じようなところで多くの人が躓いているんだということが分かり、少しすっきりしつつ、プログラミングの学習曲線(上記画像)をみて、しっくり来るものがありました。

これまで自分が勉強してきた単元2つにおいてもわからない時期と理解が進む時期が相互にやってきたということです。今はさっぱりわからなくても繰り返すことでいずれ理解できる時期が来るんだと思うと少し気が楽になりました。

Pythonでは基本的にメンターがつかないプランが主流(メンターなしは月3000円、メンター付きは月9000円)なので、こうした低迷期に自分を保つことが出来ない人はPyQに向いていないかもしれません。

仕事に活かせる日はくるのか

そもそもPythonを勉強した理由というのが「業務効率化」にあり、Pythonを使いこなすことではありません。言葉を選ばずにいえば、Pythonは使いこなせなくてもExcelを動かせるように慣れば当初の目的はとりあえず達成できるとも言えるわけです。現在はPythonの基礎についてはひととおり理解が進んでいるので、Excelと連携するために必要なところをピックアップして学んでいく時期に来ているのかもしれません。

Pythonを完全に理解して使いこなしてはじめてExcelと連携ができるようになるのではゴールが見えませんが、どうやらそうでもないという感触もあり、今後あらためて勉強方法を買えていく必要がありそうです。

現時点では、学んだパイソンを使って仕事にはまだ活かせていない状況ですが、一気に業務改善を図るのではなく、少しずつ手を出せるところから手を出していきたいとおもいます。

独学に使用している教材(ためになった書籍)

f:id:heyaganodame:20210114140923j:plain

プログラミングの勉強をするにあたって、一番悩むのが教材選びだと思います。私自身も教材選びで難儀して、色々手を出してしまいました。

現時点でまだまだ勉強中の身ですので参考書をオススメするのもおこがましいですが、初学者の私自身が実際に使ってみて「コレはいいな」と感じた書籍についてご紹介したいと思います。Python学習のとっかかりになればいいなと思います。

現在は、メインの勉強でオンライン学習サイトと書籍を併用しています。プログラミングスクールなどは金銭的に無理だったので選択肢から外しました。

オンライン学習サイト:

pyq.jp

数あるオンライン学習サイトの中でPyQを選んだのは、いろいろ手を出してみた結果、いちばんしっくりきた(当時)からです。

「Python 独学 オンライン 学習」で検索すると数多のサイトが出てきます。その中で自分のペースにあった学習ができそうだと感じたのがPyQでした。正直このサイトが正解だったのかは未だに分かりません。

これまでに何度か資格のために勉強をしたなかで「繰り返すことの大切さ」は身にしみて分かっています。PyQは写経中心だったこともあり、自分に合っていそうだと感じました。

月額約3000円(1日100円)というのもお手頃に感じました。

書籍:

Pythonの独学をはじめてから手にした書籍は結構あるのですが、内容が理解できなかったものも結構ありますが、オンライン学習と併用して使用しています。また、書籍を実際に本で購入すると荷物が増えるため、電子書籍で購入できるものを選んで購入しています。

1.スッキリわかるPython入門 

講師と生徒の対話形式で学習が進んでいきます。初学者にはちょうど良い学習内容になっていました。この教材は大きく分けて2部構成。第一部が基礎、第二部が応用といった感じです。初学者が陥りがちなちょっとした些細な疑問に注釈がついていたりするので、わりとすんなり内容を理解できる構成でした。

第二部のオブジェクトの説明が理解できなくて途中挫折したのですが、PyQで同じ単元が出てきた際にある程度理解できて、改めてスッキリわかるの本を読んでみたら内容が理解できたので、オンライン学習と書籍でいったりきたりするのはある種正攻法かもしれません。

ちなみにこの本を完全に理解してもコードをバリバリ書けるようになるわけではないと思います。あくまでPythonの基礎固めです。

2.Python1年生

最初にこっちを購入しておけばよかったと感じた書籍でした。おとなが読む本というよりは小学生が読んでもある程度理解ができるように作られている構成です。

しかし、バージョンが古いのか私のパソコンのスペックが低いのか分かりませんが、書籍通りにコードを書いても動作しなかったりする箇所がいくつかありましたが、書いてあるコード自体は難しくはないので理解の定着には役立った本だと思います。

3.Python2年生ースクレイピングのしくみ

Python1年生が殊の外内容がサクサク理解できて楽しかったので、その勢いで購入した書籍になります。こちらの内容は「スクレイピング(ネット上の情報を集めてくれる機能)」について書かれています。最後まで読むとプログラミングってこんなことまでできるのか、と改めて勉強しようという意欲を掻き立てられる内容で、この本を読んだ直後、まるで自分がバリバリのエンジニアにでもなったかのような錯覚を覚えました。

 

※余談ですが、電子書籍を読むツールとして、Kindleなどがありますが、MacBookに搭載されているブックアプリの「iBooks」は書籍によっては非常に見づらいので、Kindleのほうが良いかもしれません。今のところKindleで購入した書籍で読みにくかったものはありません。唯一「iBooks」で購入してみた書籍が1冊あるのですが、ページの読みづらさからKindleで買い直ししてしまいました。