未経験でプログラミング出来るようになったけど、エンジニアになれそうにない。

あとで読む

この記事の読み方

もしかすると別のプラットフォームに載せた方が良いかもしれないが、サービスのUIが好きでいつかこんなサービス作ってみたいと思ったので、ここで書かせて下さい。

自分が文系・未経験からどうやってプログラミングを習得したのかの知見について共有したくて書いている。個人的にはProgate何周も回すやり方とは違うのでこういった方法もあるのではと伝えたい。

それで申し訳ないのが結構、序盤が自分の自己紹介・自分語りがすごいので習得方法を知りたい方は各項目を飛ばして、学習ロードマップのプログラミング出来るまでにやった事を読むのをおすすめする。そこに短くまとめてある。

現在の状態

新卒で入社した会社をたった3ヶ月で辞めてしまった。今日は無職になって91日目である。簡単に言うと上司と合わなかった、業務量が多くて将来的にこなせないと思ったからだ。たった3ヶ月だがとてもしんどかった。

毎日何をしているかと言うと、プログラミングかYoutubeにあげる動画編集をしている。YoutubeではSupremeという人気ブランドを自動購入するBotを作成している。転売業者が入ってきて(彼らもBotを使用してる)欲しくても買えないアイテムが購入できるか挑戦している。今のところ惨敗している。

それとクラウドワークスで取引した会社から直接案件をもらいPythonで書かれたシステムのコード解析・エラー改修を行なっている。

一回の修正で、2~3行コード修正して5000円貰える。修正箇所を探すのに何時間も掛かったので、最初は時給にしたらアルバイトの最低賃金よりも低くかった。それが月に2件くらいある。

プログラミングを始めたきっかけ

ここでは中学・高校・大学と時間を進めてどんな感じでプログラミングを始めたか話していく。

中学でapple製品を手にする。

パソコンを使うようになったのは中学2年生の頃、友人がiPhone3GにYoutubeから音楽入れて聞いているのを見ていいなと思って、初めてのapple製品iPod touchの第三世代32GBを購入してからだ。 あのサイズで当時のPS3 320GBと同じ価格だったのでとても高い買い物をしたのを覚えている。

これがパソコンを使うきっかけだったと思う。

最初は友人に頼んでipod touchにYoutubeの動画をダウンロードして転送していた。その動画をipod touchで視聴していた。当時家にWifiはなく自宅周辺で鍵のないWifiを見つけて、知らない人の自宅前でアプリをダウンロードしていた。

高校では自作パソコンを組み、html, cssに触れる。

その後、自作でパソコンを作り、デスクトップをお洒落にカスタマイズするのにハマり、それがWebのサイトをお洒落にすることに流れていった。Googleの無料で作れるブログ作った。Bloggerで見た目を調節するにはhtml, cssを編集することを知り、その後はサーバを借りてwordpressでブログを書くようになり、テーマを一から自作するまでになった。

しかし、プログラミングに触れる事はなかった。やりたいと思って、雑誌みたいなのを手に取ったが全く分らずやめてしまった。頭はよくない方で中学の中間テストなどは後ろから数えた方が早かった。数学が全く出来なかった。今でも全然出来ない。昔より思考する事ができるようにはなったと思うが、どうしても途中でそれ以上考えが展開出来なくなってしまう。おそらく短期記憶が弱くて展開に必要な情報を留めておけず、そこで躓いてるようなイメージ。なのであまり深く考察する事が出来ない。それはプログラミングにおいても少し複雑な処理をするだけでも、紙に書きながらでないと上手く考えられない。それですぐにコードを書く事が出来ずいつも時間がかかる。

大学ではついに身の程を知らずに、Googleのインターンに応募する。

ここでは夢に見たGoogleに身の程をわきまえずに挑戦して散っていきます。後で調べて知ることになるが、Googleのコーディングテストは異次元だった。今ではまともに出来ない事がわかるが、当時はそれすら分からなかった。

学部編

高校を卒業して、文系大学に進学する。理由は大学のパンフレットでプログラミングが学べるみたいな事が書いてあって、SE養成コースがあった。シリコンバレーにApple・Google本社に視察(自費)にいける、文系・理系の垣根を超えて学ぶなども謳ってあり幼稚だった自分はこれでGAFAに一歩近づける(実際には物理的な距離が近くなった、だけだった。)と思って、進学を決めた。

就活の際に自分の学部が文系なのか理系なのか分らなくて困る事になったが、今思うと100%文系の学科だった。数学を使用する機会はほとんどなかった。そして授業はフルで入れたはずなのに全然なく、1年生の時でさえ週に2日は午前中に帰宅していた。(自分でそうしたので悪いのは自分です。)

授業では全45回に渡りC++, Java, VBに触れる機会があったが、そこでは講師著書の本(3000円くらい)を購入させられ、基礎的な事しかやらずコマンドプロンプトに▲をひたすら並べて、でかいゼルダの模様みたいなのを作成したりする程度だった。

これで一回の授業が3000円なので3000 * 45 = 135000円 + 教科書代いいビジネスだと思う。巷で噂の高額プログラミングスクールといい勝負である。普段使用するソフトウェアからはほど遠い出来栄えで正直ここからどうやってアプリを作成するのか当時は想像する事も出来なかった。

結局プログラミングが出来るようになりたくて、Udacityという無料のプログラミング講座を見つけた。Intro to Computer Science(人による日本語翻訳あり)という講座でPythonの構文を一から丁寧に紹介してくれた。10分くらいで大学15回分くらいの内容が終わった。講義の目標はPythonでweb検索エンジンを作成しようというのがあって実際にクローラも作成した。大学で受講したどの講義よりも、濃厚であった。頭で考えた事をコードに翻訳する事ができるようになり、考える力を手に入れた気分だった。やっとまともにプログラミングをしていると感じた。途中で難しくて挫折したりしてやらない期間が出来て、完全に終わるまで2年くらい経ってたと思う。

途中身の程も知らずGoogleのサマーインターンに拙い英語かつ自作のテンプレート履歴書(マテリアルデザイン風)を送りつけて見事に返信が来なかった。卒業制作では講義でやった事を元にフロントエンドも作成して実際に使える検索エンジンとして提出した。ページランクは文献の数式が理解出来ず、実装出来なかった。数学を勉強していつか実装しようと思う。

就活編

ここでエンジニアを目指しインターネットでSIer・SESと言う言葉を見つける。

日本に住むエンジニアの90%は上記に属するらしい。そして文系・未経験はこの一択しかないと言う事も記事には書いてあった。事業内容はプロジェクト毎に別の会社に行き案件をこなすと言うものだった。派遣と何が違うのか分からなかった。調べるとSIer・SESに関する恐ろしいエピソード、技術力は育たない、ほとんどコードを書かない等書かれていた。デスマーチ等の恐ろしい業界用語も見つけた。なのでなるべくそれらの会社ではなく自社開発をしている企業に絞って就活をした。結局周りに少なくてSIer・SESも受けていた。

udacityのおかげで就活では〇-teamのプログラミングテストに合格する事が出来た。ただ志望動機を述べる事が出来なくて面接で落とされる結果になる。

ベンチャー企業で働くほど意識も高くなかったのが原因だと思う。Googleなんて夢のまた夢だろう。その後も面接で「プログラミングをやるの好きですか?」等の質問に「当時も今もコード書くことはわりと苦痛で、出来上がったプログラムが動作するをみているのが好き、出来上がった時の達成感は他の物事では得る事が出来ないくらい気持ちが良い。」など答えて15社くらい不採用だった。

教養のテストでは毎回弾かれてたし問題が他にもあるのだろう。短い期間に大量に履歴書を作成するのが苦痛だった志望動機・自己PR相手に自分を伝える事がこんなにも大変だと思わなかった。就活の時期にまだ検索エンジンを制作仕切ってなくて、自信を持って話せるエピソードを探すのも大変だった。

当時は子供向けのプログラミング教室でアルバイトしていたのでその事について話していた。 言語もScratchと呼ばれるMITが開発したブロックをつなぎ合わせてプログラムを制作するもので、プログラミングに素養がない人も3日くらいの講習を受けてアルバイトとして働けるものだった。週に1回多くても2回という低頻度かつ、教える際も自分の理解の範囲内でエラーが起きたりしていたので居心地がよくアルバイトの中で一番長く務めた。就職の際も「うちで働きなよ」と言って貰えたが、将来不安だったので断った。先に内定を貰っていた友達からは「贅沢言うなよ」と言われ、傷付いたのを覚えている。上手く説明できず言われっ放しだった。その後、同じ学科の先輩が正社員となったが、その人がいなくても教室が回せるとかの理由で自己都合退職に追い込まれて辞めるを見た。結局卒業するまで内定は貰えず、2年間は別ごとをやりながら、空き時間にプログラミングをする事になる。

社会人編

それで今年になって将来安泰と思える仕事に就職したが、結局3ヶ月で早期退職することになった。親には本当に申し訳ないと思う。私立大だけでも400万課金して出来上がったのが、これだから目も当てられないと思う。Googleどころから一般の仕事も出来なかった。大学の頃から他の人と比べてなんとなく、大量の文章を書いたり、仕事をこなせない感じはあったけどまさかここまでとは思わなかった。アウトプットが凄く苦手だと感じる。今は何時間もかけてこの文章を書いてるから、疲れたら休憩してるけど、仕事だとそうもいかない。

やってる事

そこから91日経って、今はYoutubeをダウンロードするデスクトップアプリをPythonで作成してる。

フロントはeelというElectronライクなライブラリーを使用してフロントをhtml, css, jsで作成、バックエンドをPythonで作成する予定である。

UI/UXにはこだわりたくてUdemyで

3つ購入してやりきった。最後の一つだけで十分だと思ったので手前、2つは余裕があればで良いと思う。

おすすめ順は:3 > 1 > 2

2の講師がYoutubeチャンネルで無料で見られるGithub・git入門はSourceTreeを使用しながら視覚的にgit addgit commitが何をしているのか見れるので、とても分かりやすくおすすめである。

ここで学んだ事を使ってソフトにアニメーションなどを実装して使っていて、気持ちが良いアプリを作成したい。 機能としては

  1. 複数動画を同時ダウンロード、
  2. プログレスバー等

を実装したいのだがこれらに躓いている。複数ダウンロードでは同期処理では遅いため、非同期処理を使用し、その間にプログレスバーの値を取得しながら処理を続けないといけない。 非同期処理を使ったのはSupreme Botの商品検索で初めて使い未だに詳しくは分らない。まだ構文が馴染んだ感じがしないため、使いこなせない。 スタックオーバーフロー、Pytubeの開発者のGithub issueで値が取り出せないとコメントを残したが、まだ回答は付いていない。独学で学んでいるのでつまづいたら、この2択しかない。たまにすぐ聞けるメンターまたは師匠・恩師と呼ばれる人が周りにいたらなと思う。

追記 【独学・未経験】Pythonデスクトップアプリを作成したから見て欲しい。 (ポートフォリオ ) 完成した。

学習ロードマップ

これをやってる最中に定期的な収入を得るようになっていたい。勉強したい事を学びながら人生を送れたらすごいいいなと思う。出来なかった事が出来るようになる感覚が好きなのかもしれない。

プログラミング習得でやった事

HTML, CSSに触れる → Udacityで講座を受ける → 自作のDBを使わないwebアプリを作る、スクレイプした情報を表示するだけ等。(スタックオーバーフローを使いまくる)→ Udemyで気になる講座をやる。

やりたい事

予定(デスクトップアプリを作成する) → 予定(Gatsby使用してブログシステムを作成したい) → 予定(Django使用してデータベースを使ったECサイトを作成したい) → 予定(数学を勉強し直したい) → 予定(Courseraアンドリュー先生の機械学習講座を受けたい:一度挫折してる)

追記:2021/5/12

今の所やりたい事を順調にやっている。ブログはGatsbyではなくNext.jsで作成しているが、Next.jsの方がダウンロード数も多くGatsbyに比べて参考に出来る記事が多いと思った。Next.jsのチュートリアルは英語でもとても分かりやすい。GatsbyがSSGしか使えないのに対して、Next.jsではSSG・SSRも使える。選択肢は多い方が汎用性があると思った。そしてGatsbyを使用するにはGraphQL習得する必要もあって学習コストが高いかなと思った。その結果Next.jsを使用することにした。

最後に

ここまで読んで下さり、ありがとうございました。

近いうちに再就職出来たらと考えてます。厚生年金を積み立てなければならないし、昨日も国民年金を納めたがやはり高いので就職はしないとやっていけないと思っている。

記事に関するコメント等は

🕊:Twitter 📺:Youtube 📸:Instagram 👨🏻‍💻:Github 😥:Stackoverflow

でも受け付けています。どこかにはいます。