見出し画像

プログラマーに転職して1年経った件 #068

こんばんわきゅうです。

今日は仕事のことでも書いてみようかと思います。と言いますのも、昨年の5月から現職に転職して1年が経ったんです。
めでたいなあと。
折角なのでこれまでとこれから的なことをまとめたいと思います。

■ざっくり現在の能力
【経歴】
●30歳 文系大卒 理系はからっきし(数Aで挫折した)
●2015年4月~2021年7月末
BtoBのサービス業で企業相手にコールセンターとか営業とか、文系らしい仕事してました(最後の1年は九州勤務でした、楽しかったね)
↓東京に帰ってきた時の記事

【資格】
ITパスポート
基本情報技術者試験は落ちてます(照)
基本情報技術者試験合格しました!(2023/07/21追記)
情報セキュリティマネジメント試験合格しました!(2023/10月頃)


【プログラマーになってからの1年について】
■2022年5月
ITパスポートを携えて入社!
※営業やってたお陰か、ストラテジ(経営)で点数が稼げたので割と簡単に取れました。これが全ての勘違いの始まりということになる。

■2022年6月~7月末 
社外のプログラマー養成講座みたいなものに出される
●勉強したこと:Java(ほとんどこれ),git ,コマンドライン,sqlなど
●感想:分からなくて毎日頭が痛かった(いつか分かるようになると信じていた)研修の集大成としてログイン機能と検索機能(DBと接続する)を備えたWebアプリを作る課題があったけど、本当に何も分からなかった。Javaがわからないのにビルドツールのgradleがどうとか、DBと接続部分するための何かしらをアプリケーションのどこに配置するとか 出来るわけなかった。結局、sql文が書けてもそれを実行するタイミングを指揮するDAOの概念とか、インスタンスを用いてデータをやりとりするBeanの概念とか、総合的な理解がないとアプリケーションは動かないし動かせないよね ただこの2ヶ月は本当に充実していて、「何もわからない事がわかった」そんな厳しめな2ヶ月でした。向いてるか向いてないかで言えば向いてないだろうなあって思った。

何にもピンと来ないのに時間だけ過ぎる様子

■2022年9月~10月くらい
はじめて開発というものに参加する(使用言語:Java)
●感想①:Javaについては、参考資料があってコピペで良ければわりとソースコードは書けてしまう。ただ結局、書いたものは1から100まで全てを理解して書かないと納品出来ないし何かあった時にえらいことになる。

●感想②:webアプリケーションの成り立ちを理解していないとそもそも会話にならないし、何がボトルネックになっているかも理解しようがない。僕の場合、アップロードしたファイルを元にデータベースを更新し、検索機能を作成する というものだったが、DBとJavaを接続するための諸々の情報をそもそもどこに記載するか分からなかった。というか、gitからソースコードをクローンした時にクローンされるものとされないものの区別がある理由も分からなかった。(結局、私の環境でそれはvscodeの拡張機能であるtomcat for Javaのオプションにあたるjvm optionsに記述する物でした。後にcontext.xmlにも出会い、また混乱するのですが、いずれにしても私はそれらの名称のものがそんな重要なものである意識はまだありませんでした。)とまあ、当たり前の当たり前のことも、入社前にさくっと勉強した程度じゃ、研修で2ヶ月詰め込まれた程度じゃ理解が足りなかったわけです。たくさん質問してたくさん大量の分からないことに塗れながら、少しずつ分かる範囲が広がっていったな…。

コピペなのに書けてる気がしている様子(本当に危険です)

■2022年12月~2023年2月末くらい
2つ目の開発に参加する(使用言語:Java, JavaScript, HTML)
●やったこと①:前回はいわゆる機能を作成しましたが、今回は画面の開発をさせて頂きました。(noteアプリの左上のロゴをクリックしたらnote.comに遷移するみたいなのをいくつか ※例え話です)

●やったこと②:Hyper-Vというwindows上の仮想マシンを活用した環境構築と、環境構築マニュアルの作成をさせて頂きました。構築する内容(OSの指定やJavaのバージョンの指定、使用するDBやDBmanagementSystemの指定は予めして頂いています)が分かっていても、試行錯誤しながらやるのは楽しかったです。このマニュアルを作る、という文系文系した作業は楽しいですね。ただ、自分の作ったマニュアルで誰かが躓いた時、根本的な解決策を探したりというのは出来ないので、やっぱり精進する必要があります。

●感想:引き続き正直コピペでふわっとソースコードが書けてしまう…みたいなところはあったのですが、ページ遷移の条件が複雑になってきたり、関数に渡す引数の数で処理内容を変えたり… 的な事が(振り返ってみれば)必要になっていくうちに、理解しなければコードは完全に書けなくなったように思います。2度目の開発なので幾らか余裕がでるかと思いましたが、作成する環境によって様々な設定が異なる = 経験した知識を"そのまま"活かすことはできない ので、経験を応用する経験ってのはまた別なんだなあと思いました。また、jspの取り扱いは本当に辛かったです。(なんども言うけど)そもそもJavaが分からないのに、HTMLが混ざってたり、JavaScript(やjQuery)が混ざっていて、呼び出しの順序も当然上から下に…ってわけにはいかないので、たっぷり時間はあったのに、それでもぎりぎりの開発でした。基本的にホワイトな会社だと思っていますが、納期前はそれなりに残業がありました。この時もたくさんの分からないことに塗れながら、拾えるものと零してしまうものを選ぶひまもなく(吸収できるものだけ)吸収していったという感じです。

一日中これ

■2023年1月~3月
たくさんテストやりました。
テストのために環境構築をまたやったり。
客先にいってアプリの更新作業をこの目でみたり、はじめてお客さんと名刺交換したりしました。開発が落ち着いていたので、懐かしのprogateを再開したりしました。ある程度開発を経験してからHTML/CSSを学んだ時に、idやクラスの存在意義を理解できた時は明らかに進んだ感がありましたね。同じようにJavaScriptもまだ苦手意識はありますが、上司がJSが”発火する”というのも、その感覚が少しずつ分かってきたような感覚があります。

苦節一年、遂にprogateに書いてあることを理解した様子

■2023年4月~現在
ここで記事の毛色が少々変わるのですが、私のプログラマー人生にちょっとした革命がおきます。ChatGPTの出現ですね。正直な話、これが現れてからのJavaの理解速度はめちゃくちゃ上がったと断言できます。初めてプログラミングについて相談した時は本当に草が生えましたね、機械が自分よりも明らかに優れているのにはシンギュラリティ的なものを感じました。ま〜〜〜これも使い所(扱い方)や、リテラシー(情報漏洩リスク)の問題があるので使用方法には慎重になるべきだと思いますが、それを補って余りある早さがあります。(正確性があるとはいっていない)

この早さというのは重要で、「分からないこと」にも鮮度があるんですよね。当然、分からないことを理解しようとする際に新たに発生する「分からないこと(2)」にも鮮度があります。(例えば)集中力がピークに達しているような時、一度休憩を挟むともうゾーンには戻れなかったりしますよね。初心者プログラマーってそんな時間の連続の中で納期に追われてたりすると思うんですよね、質問するにも上司先輩の業務状況を伺ってしまったり、要はプログラムに関係のない空白の時間を無意識のうちにすごしてしまっていると。ChatGPTたそがすごいのは、この時間をわりと無くしてくれたことですね。現在の知識量では本来(理解するための障壁が多すぎて)乗れないような集中力の波に乗れるまでの伴走をしてもらえるような感覚です。断片的な答えを出していって、ソースを書く前に道筋が見えて、プログラミングそれ自体は既に作業になった というのは一年前に比べて成長を実感するところですね。

ChatGPTくんのイメージ

【まとめ】
・分からないことを浴び続けた結果、簡単なものなら分かるようになった
・環境構築を何度かやったので、webアプリをより俯瞰してみれるようになった
・ソースコードを書く前に修正箇所と修正内容の仮説を予め立てることで、行き当たりばったり的なプログラミングはちょっと卒業できた(かも)
・(わたしは物覚えが悪いかもしれないけれど、じぶんより優秀な人はたくさんいるけれど、周囲と比較することなく)プログラマー2年目もがんばるぞ!

やる気がある様子

【最後に】
●読んだ本
・プログラムはなぜ動くのか
・プログラミング言語図鑑
・基本情報技術者 表計算 とっておきの解法(落ちたけど)

●読んでる中
・知識ゼロから学ぶソフトウェアテスト

●これから読みたい本
・リーダブルコード
・おすすめ募集しています🙌

【ここまで読んでくださった皆様へ】
最後までありがとうございました、いいねしてね♡


この記事が気に入ったらサポートをしてみませんか?