一年中こたつ出てる

こたつは最高

どうやってプログラミングを学んだか振り返る

最近、プログラミングスクールについて話題になっています。

自分も今であれば、 プログラミングスクールに通わず、プログラミングを学ぶ方法 のようにスクールに通うのではなく、ProgateとN予備校をおすすめするかなぁと思います。

ただ、こう勉強していくのがいいよ、という話はよく目にするんですが、実際にどう学んできたかみたいなところを書いてる人が少ない気がして。

いい機会なので、自分はどうやって学んだきたか、をちょっと振り返ってみようと思いました。めっちゃ長いです。

プログラミングとの出会い

初めて出会ったのは大学の講義でした。
JavaScriptを使って、簡単なゲームを作ってみよう〜みたいな講義で、そこで初めてプログラムを書きました。
およそ1時間半の講義の中で教えてもらったのは四則計算と宣言と代入くらいだったと思います。
当時はどう書けば動くのかさっぱりわからず、周りの人のを見ながらコピペして適当にその場を流した記憶があります。
あまりいい出会いではなかったです。

卒業研究

卒業研究でドローンを作ることになり、マイコンのプログラムを組めとボスに命令されて、急に本格的なプログラミングをやることになりました。。。
だいたい半年くらいでC++でプログラムを書いて、プロペラぶん回して浮上するところまでできました。
とはいえ、これは先行研究してた先輩のコードをコピペして、その中身をいい感じに切り貼りして新しいメソッドを生やしたりして、なんとかなったって感じです。
自分で考えてプログラム書いたのは50行くらいじゃないかな…ってくらいまともなプログラミングではなかったです。

誰からも教えてもらえず、もらったコードと電子回路を見て、電子部品を買いに行き、見様見真似ではんだ付けをし、なんとなくいい感じに配線して、なんとなくいい感じにバッテリーを積み、なんとなくいい感じでジャイロセンサーをつけ、なんとなくいい感じにセンシングをして、なんとなくいい感じにPWM制御をして……。

プログラミングの勉強としては、研究室内に落ちていたマイコンの雑誌などを読み漁りました。
C++を使うからといってなにかその勉強をした記憶がないです。。
今思うと、ちゃんとC++の本を買って、言語を理解すべきでした。
誰からも教えてもらえず、あるもので本当に本当に雰囲気でやっていました。
あのときは本当に苦しかった。
思えばここで独学でなんとかする力を養えたのかもしれません。

SH2マイコンの動かし方は全然わからなくって、なんで動いてるかわからんけど動いたって感じだったので、浮上実験で暴走させて教室を破壊しました。1名怪我をさせました。トイレで泣きました。
よくわからないまま、卒業することになりました。

第二新卒

新卒では自動車部品メーカーに入り、機械設計の方をやっていたんですが、田舎に飛ばされたので辞めました。
kxn4t.hatenablog.com
とりあえず2,3日でITパスポートをとり、未経験として中小のSIerに滑り込みました。
なぜ採用してもらえたのかよくわからないんですが…。
ここで初めて体系的に勉強していくことになります。

プログラミングスクール

入社初月100時間残業、テスト仕様書書いてと言われ、ひたすらダメ出しされつつ書く日々を4ヶ月くらい過ごし、ようやくプログラミングスクールに行くことになりました。
炎上していたときは余裕がなかったので、実質初めてのプログラミングでした。

3ヶ月間、

と、なかなか激ヤバな環境で学びました。
このとき2016年ですよ。まじか。

学習自体はやさしいJavaという本とスクールの教科書をつかい、
Javaの言語自体の勉強に1ヶ月
SQLやHTML、CSSフレームワークについて1ヶ月半
最後にチーム開発演習として1ヶ月でチームで好きなものを開発に1ヶ月
といった流れで進みました。

Strutsを触れたのはある意味よかったかもしれません。
いまやフレームワークが裏でどういうことをやっているのかなんて最初に勉強することなんてないと思いますが、初期のフレームワークではXML地獄でそれによって設定が色々できて〜ってところを学べたのが非常に役に立ちました。
まぁここで勉強したフレームワークを使うことは古すぎてないんですが。

定時時間内はそちらのスクールに出席し、定時後は会社に帰って23時頃までテストする毎日でした。
様々な会社の人間が集まり、一緒に勉強していくのは中々楽しかったし良い経験になりました。
出来る人と競い合って課題をこなしていたおかげか、最後のチーム開発では6人チームのメインプログラマーとして、コードベースの6割くらいを1人で書きました。

途中で突然人が来なくなったりということが数回あったのですが、現場が決まった、ということでした。
人売りまじでこえーな教育中のド新人を途中で売るんだな…まじか……こえーわまじか……ってなってました。

会社の勉強会

スッキリわかるJava入門

会社に戻り、会社内でも勉強会が始まりました。
メンターにすごいエンジニアについてもらい、若手数名と本の内容をまとめて発表するっていうのを毎週やりました。

このとき使ったのが、スッキリわかるJava入門という本で、こちらの入門編と実践編の2冊を読み切りました。
この本が神で、いままで知らずなんとなくでやっていたところが一気にわかり、目の前がすーっと広がっていく感覚を持てました。

Java Silver

勉強会を3ヶ月くらいやって、Java Silverの資格も取得しました。
スクール行きはじめてからだいたい半年くらいで取得できたこととなります。
kxn4t.hatenablog.com

Spring Framework

スッキリわかるサーブレット&JSP入門も同様に勉強会で読み終わったあと、ようやくSpringの勉強を開始しました。
名著であるSpring徹底入門を用いて、こちらも頭からみんなで本の内容をまとめて発表するというスタイルで半分くらい進めました。
ちょっと色々あってしばらく勉強会はストップし、実際に開発するところまでは至らず、最終的には1冊読み終わらなかった記憶があります。

ここまでで入社2年半です。
あとついでに基本情報もさらっと取りました。意外と簡単でした。 kxn4t.hatenablog.com kxn4t.hatenablog.com

メンター

入社2年半にして新卒の子たちにメンターとして、自分たちが学んだように勉強会を行うことになりました。
スッキリわかるJava入門、サーブレット&JSP入門、Java Silverの取得、Spring徹底入門、と順に教えていきました。

みんな無事にJava Silverが取得でき、Springの開発演習をやっていこうというときに、自分はこの会社を去ることなりました。

プロジェクト

プロジェクトではC#を半年ほど、Javaを3ヶ月ほど書いたのち、OSSのカスタマイズを行い、某大企業へ導入するというプロジェクトに参画しました。これ1年半の新人にやらせることなのか…という感じではあるんですが。
チームのまとめ役としてプロジェクトの基本設計フェーズから参画し、基本設計書の作成、詳細設計書の作成、協力会社さんへの開発指示、テスト仕様書の作成、客先への説明、などなどを2年ほど行いました。

CI/CDなんて便利なものは導入できず、自分でコードをUSBメモリで持っていって、現地でサーバーにFTPで転送、SSHで気合のコマンド手打ちでリリース、でした。
あまりにも嫌だからシェル作って、それでリリースするわっていったら却下されて虚無になってました。
温かみのあるリリース手順書コマンド全コピペ。
リリース直前、年末年始に大きなバグが発覚し正月休み返上で朝から終電まで。
このままリリースできなかったら訴訟するぞとか激詰めされて死にたいってなりながらなんとか乗り切れた。
おかげさまでLinuxと仲良くなることができました。

後半1年くらいはバグってたら自分でコード読んで直して持っていくみたいないことをやってました。PHPだったんですけど…。

個人

この頃結婚をし、家計簿いい感じに折半するアプリがないね、ということで家庭内で開発しました。
このときはOAuthの認可周りをひたすら勉強していました。これは入社して2年半くらいのとき。 qiita.com

あとLinuxの勉強をしようと思い、自分でVPSを借り、Mastodonインスタンスを立ち上げて運用を開始しました。 qiita.com

勉強会もいろいろ参加するようにしていました。
社外の人と関わりを持てたらなぁっと思って…。
コミュ障なので知り合いはできませんでした…。
が、参加した先の勉強会でフォロワーにばったり会うなんてことは多々ありましたね…。

まとめ

  • 卒業研究
  • プログラミングスクール
  • 社内勉強会
  • メンター
  • プロジェクト
  • 個人開発

といった形で勉強してきて今に至るって感じです。
なんかやっぱり振り返ってみても結構泥臭いんだよなぁ…。

会社でも勉強はさせてもらいましたが、仕事では全然書かせてもらえなかったですね。
なので自分でも色々勉強してきてますね。えらい。
転職してから1年くらい経ちますが、プロダクトオーナーとかいう立ち位置になって、相変わらず仕事ではあまり書くことがないので、家でちまちま書いたりして遊んでいます。

まぁこんな感じの人生を歩んでプログラミングをやっています。
参考になるかわからないですが、参考になれば幸いです。

バックボーン

自分のバックボーンについてちょっと触れておきます。

ここからは自分のことが好きな人向け。
唐突な自分語り。


物心ついたときには家にあったWindows 95に入っていたピンボールで遊んでいました。

小学生のときは、Windows 98が入った富士通のノートパソコンがやってきて、ゲームをしたり、親が買っていたPC雑誌を読んだりするようになりました。
インターネットはダイヤルアップで月に3時間しか使えないのに画像読み込みに1時間かかる、電話がかかってくると切れる、みたいな地獄でした。

IEの履歴をみて、親がエロサイトを見てることを知り、なるほどそういう世界もあるのか…というか履歴消さないとバレるんだ…となり、エロサイトを見た後は一時ファイルや履歴もしっかり消すいい子になりました。

ゲームが好きだったので、攻略情報を調べるうちに、2chの攻略スレが一番まとまっていることに気づき、2chに入り浸るようになります。

この頃、E3などがリアルタイムで配信されるようになり、英語あんまりよくわからないながらも夜中リアルタイムで2chで実況したりしていました。

あと、親がハンゲームにハマっていたので、自分もひたすらハンゲームをやっていました。
土日は延々とパチンコ打ってた。

GTA SAの日本語版がでないので、グラボを買って、MODを入れたりして遊ぶようになり、ブログを立ち上げそのことを書いてたりしてました(これは完全に黒歴史

自分で何かをつくるということはあまりしなかったんですが、興味あるゲームのおかげで検索力みたいなものは養われていたと思います。
当時はMODいれるのですらめちゃくちゃ大変でした。

ゲーム色々いじってたらPCぶっ壊して起動しなくなって、手元にある携帯で色々調べて直したことがあって、あれはちょっと焦りました。

高校生のころはXbox360にハマり、初めてフレンドがたくさんできました。
夜な夜なオンラインで遊んで仲良くなり、初めてオフ会に行ったりとか、インターネットって感じでした。
外人のフレンドもでき、がんばって英語を喋っていました。

そんなこんなで元気に大学は一浪し、Twitterにハマることとなります。
もう10年以上飽きずに使っていますが、ここでできたつながりがなければ今の自分は絶対にいないと断言できるくらいに人生を変えました。
東京行ってみたいな、と思うことはなかっただろうし、行くかwっていって勢いで転職してみたりとか…。
(今よく遊ぶ人たちとは、こんな事言うのは恥ずかしいけど、ずっと仲良くしてたいなと思っています。)
昔の自分では考えられないような行動が取れるようになりました。

プログラミング自体を学んだのは大学が最初ですが、こんな感じでかなりPCやインターネットと一緒に育ってきた感じで、勢いだけでIT業界に転職したけどなんとかなっているのはこのバックボーンのおかげです。

自分語り失礼しました。