エンジニアのはしがき

プログラミングの日々の知見を書き連ねているブログです

【まとめ】プログラミング超初心者だった頃に苦戦したこと

f:id:tansantktk:20201205153346p:plain

エンジニアに転職して実務を続けて2年半が経過しました。
私がエンジニアになる前に最初にマトモに勉強した言語はRubyでしたが、最初はかなり苦戦したのを覚えています。

  • 動的型付け言語の為、コーディング時はスイスイかけても、デバッグするとエラー吐きまくりで悩み…
  • スコープの理解が甘く、異なるスコープ間で同名の変数があった時にそれぞれの扱いの違いが分からず悩み…
  • gemという概念の意味が分からず悩み…

かつての自分を思い返しながら、どういうところで躓いて、どう対処していったのかを記録として残していこうと思います。 人間の記憶は揮発性ですので、そのうち”かつて出来なかった自分”のことも忘れてしまう日が来るでしょう。

ただ、案外こういう"出来なかった自分"でいた時期(今も出来ないことだらけですが)があったことを自覚していくことが大事なのではというなんとなくの直感があり、今回このような記事にすることに決めました。 せっかくのブログという場ですので、いろいろな可能性を模索する場にもしたいという気持ちもあります。

ゆる~く書いていきますので、酒でも飲みながら読んでくださいね。

☠苦しんだことリスト☠

🤔やりたい機能は頭にあるがどうググればいいのか分からない

大抵は実装したい機能に関連する短い単語をスペースで区切ってググれば、それなりに資料は出てくるものですがそもそもどうググるべきかが分かりませんでした。 英語で検索するのがほぼ間違いないんですが、そもそも英語が当時は壊滅的でしたので、「日本語で検索しないとわかんねーよ」ということで日本語でググっておりました。

ここは何度も欲しい資料が引っかかるまで試行錯誤して、今はそれなりの検索スピードが出せるようになった感じですね。 あんまりググり方を教えてるような記事って見たことが無いのですが、この辺り割と重要なポイントなのではないでしょうか。

😯やりたい機能に対してプログラム的にどうアプローチできるのか分からない

例えばTwitterのようなアプリを作るとして、各ユーザーのツイートはユーザーの投稿によって動的に生成されますよね。 この動的に生成する場合に、プログラムでは大概配列、リスト、コレクションといった概念を用いて、データを保持し、それらを順番に走査して画面に描写することが多いかと思います。

これが初心者の私には思いつきませんでした。 配列の存在は知っていましたが、使い方を知らなったんですね

😑エラーログで吐かれた内容が解読できない

「何行目でエラーになってるよ!」っていう記述が大概の言語、フレームワークのログには出力されます。 大体その行を見れば何とかなるのですが、かつてはその行を見ても何のこっちゃ分かりませんでした。

null参照エラーが出たら、大体そのエラー以前の処理に問題があるんだろなーと目星をつけてバグ調査するんですが、 経験が無いのでそこが分からない。

ここは経験でカバーしていった部分ですね。

🥱ググった先で書かれている内容が特定の知識があること前提で書かれており途方に暮れる

Qiita辺りの記事なんかが顕著なんですが、とにかく必要最低限の記述しか書いてなかったり、酷いものだとほぼソースコードのみの記事が引っかかったりします。
(個人的にそういった水増し的な記事はいかがなものかと思います)

初心者の頃は、とりあえずそれらのソースをコピペして…動かして… 動けば即実装、といった具合でした。

そして、後から予期せぬバグで苦しむやつです。

どこかの記事で読んだ記憶があるのですが、「自分で書いたソースコードはコピペだろうが全て処理を理解した上で書け」といった内容のものがあったのですが、 これは本当にその通りだなと思います。

👱‍♂️英語が読めない

英語は嫌いじゃなかったんですが、プログラミングで頻出する英単語に慣れていなかったので、公式ドキュメントを読む際などは心理的な抵抗感がありました。

これは今もまだ継続して改善中です。

Chrome拡張機能Google翻訳を活用して、基本的にドキュメントは原文のまま読み、分からない単語だけ逐一Google翻訳で翻訳して調べています。 慣用句やスラングまではGoogle翻訳でカバーできないので、そういう時はDeepLで翻訳します。

あとは、出来る限り英語を身近なものにする為に、Twitter英語圏の方をフォローしてツイートを読んだり、海外YouTuberの動画を見たりするようにしています。 ここ2、3か月は翻訳無しで英文の大意が掴めてきた感があります。

😨世間のエンジニアが当たり前に理解していることが理解できない自分への劣等感

心理的な問題ですね。

世の中の超スペックエンジニアさんの記事やツイート、動画を見ていると、もうなんだか自分が大変ちっぽけでくだらない存在に思えて、今やっていることが意味のあることなのかという疑問さえ湧いてきたりします。

未経験から転職したエンジニアの現実的な立ち位置として、10代からバリバリ勉強してきたエンジニアに敵う確率は限りなく低いのは明確だというのは自覚しているところです。 まずはその点についてよく自覚して、純粋な能力的な部分での比較は無意味なので諦めるということが大事だと思います。

生粋のエンジニアに対抗するよりかは、かつて所属していた別分野の知見と、エンジニアになってから学んだ知識の双方を応用して、発想力で勝負していくのが現実的だろうというのが現状の私見です。

完全に偶然でしかないのですが、現在勤務している職場では前職の業界に密接に関わるサービスの開発をしているので、利用者像が描き易く、先回りで機能実装を考えていける点に強みを感じています。

あとがき

できなかった自分を文章化してみて、なんとも小恥ずかしいというそんな気持ちになりましたが、出来る自分を発信している記事はネットに溢れかえっていますので、たまにはこういった内容も良いのではと思っています。

当ブログは技術ブログですが、プログラミングを主軸に置きながら、様々な模索をできればと思っておりますのでどうぞよろしくお願いいたします。