UKey's Labo

未経験からITエンジニア(プログラマ)へ転職しました@福岡 – vol.2 〜Java入門編〜

Javaに入門してみました

友人から借りたJavaの入門書でプログラミングの勉強をはじめましたが、いきなりつまずきました笑

おなじみの”Hello World”あたりはよかったのですが。

中盤を過ぎたあたりから脈絡もなく突然出てきた専門用語が理解できない。

いきなり”インスタンス”とか”コンストラクタ”とかいう言葉が。。。パニックです笑

「何?その言葉の説明どこに書いてるの???」という感じで、前後のページを行ったり来たりしてみましたが、記載がない。

”入門書”と謳われていても、全然優しくない入門書が、やはりあるわけで。
友人から借りたこの”入門書”は、良くなかったですね。ド素人には判りにくい。

当時は、「ググる」ということも知らなかったわけで。その本が全てだったので。

その”入門書”に記載がないと、もうお手上げなのでした。

元々、凝り性なタイプなので、ここで諦めるという選択肢はなく。

この本でダメなら、他の本をあたってみよう。
と、いうわけで。即本屋に駆け込みました。

とにかく自分で考えて、手を動かす

今でもそうなのですが。結構、ジャケ買いしちゃうタイプで笑
その時たまたま目についたのがこちら。「明解Java入門(柴田望洋著)」でした。

[amazon_link asins=’4797387602′ template=’custom’ store=’takayuki57101-22′ marketplace=’JP’ link_id=’208b2703-67fc-11e8-a62f-771654d7567d’]

この本のスタイルとして、
「まずは解説(if文、for文の使い方など) その後練習問題」という形式だったのですが。
この「練習問題」、解答がありません。

「こういう結果を出してください。」ということしか記載されていません。
これについて、amazonのレビューなんかでは賛否両論なのですが、この解答が無いというスタイル、
プログラミング力を鍛える方法として、結構重要だと思います。

現場に出てわかったのですが、ある仕様を実装するための方法は人によりけりで、方法はひとつではありません。
解答に至るための方法はいくつもあるけど、最終的にその解答に到達すればいいわけで。

「その解答に至るための方法を自分で試行錯誤して実装する」ことは、エンジニアとして重要なスキルのひとつだと思います。

この「試行錯誤する能力」がないと、エンジニアとして務めるのは難しい、と自分は思っています。

このテキストの「解答がない」というスタイル、自分で試行錯誤するという能力を養ってくれます。
ド素人の自分としてはなかなか厳しい問題ばかりでしたが、やりごたえはありました。

そして、入門書をやるときはとにかく入門書のプログラムを写経し、写経しながら、
それぞれの処理で一体何をやってるのかを理解し、ときには自分流にプログラムを書き換えてみたりして、 とにかく自分で考えて、手を動かすことが重要だったりします。

結構陥りやすいのが、入門書を読んだだけで、わかった気になるという勘違い。 実際に手を動かしていないと、ほぼ頭に入っていなかったりします。
実際に手を動かしてはいても、自分で考えずに写経のみしてる場合も同様です。

以前、情報系の大学を卒業した新卒社員の新人教育をやったことがありますが、 その方にJavaのWebアプリケーションの入門書を1週間程度かけて、1冊を一通り勉強してもらったことがありました。

内容は、最終的には簡単なECサイトの買い物かごを作ってみようというやつだったのですが。 その本をやり終えた新卒社員に、その本の応用版で、ちょっとした機能を自分で考えて実装してみて、と依頼してみました。

すると、結構手が止まる。

本に書かれている内容を応用してプログラムすればいいだけだったのですが、
その方は、本にかかれている内容をただ写経して、プログラムが動いたので終わり、と思っていたようです。 何故動くのか、データがどういう風に流れているのかを全く理解できていませんでした。

よくある、「何を自分がわかっていないかがわからない状態」だったようです。

自分で考えて手を動かすって、やっぱ大事です。

言語の選定について

余談ですが。

エンジニアに転職しようと考えておられる方のお悩みポイントとして、
「プログラミングを勉強したいけど、どの言語を勉強すればいいのか。」というところなのですが。
私も勉強しはじめのころはこれを悩みました。

とりあえずプログラミングを勉強したいけど、言語って何を勉強すれば実務につながるんだろう、
それぞれの言語で、一体何ができるんだろう。といったところが悩みどころだと思います。

作りたいもの、転職したいエンジニアのジャンル等にも寄るかと思いますが、自分のおすすめは「Java」です。
福岡界隈に限ってなのかもしれませんが、私が遭遇する案件の言語って、ほぼ「Java」です。
(私が知っている範囲の狭い業界内の話なのかもしれませんので、あしからず)

「とにかくどんな形でもいいので、エンジニアに転職したい」という方向けにはなってしまいますが。

福岡は「Java」の案件が結構多い。 さらに踏み込んでいうと、「Javaを使用した業務系のWebアプリケーション」が圧倒的に多い。

某会社の調達部が使用する物流システムだったり、
大学向けの情報システムだったり、
有名通信業者のエンドユーザ向けのシステムだったり。

各現場でフレームワークが違ったり、使用してるデータベースが違ったりというのはありますが。

なので、「Javaが一通りできます」となると、仕事にありつける可能性は高いかと思います。
また、「重量級」といわれているJavaが一通りわかるようになると、多言語への適応力も高くなります。

PHP、Rubyあたりだと、細かい部分ではよくわからないけど、
大局で見ると何となく何やってるかはソース見てわかる。レベルにはなれます。
ちゃんと理解するためには、当然また勉強しないといけませんが。

閑話休題。

次のステップ(Webアプリケーション構築)へ行く前に

「明解Java入門」をやり終えた後、インターフェースとかクラスの概念がぼんやりしてたので、
「わかりやすいJava オブジェクト指向編」を勉強しました。

[amazon_link asins=’4798043753′ template=’custom’ store=’takayuki57101-22′ marketplace=’JP’ link_id=’dd032ebe-6955-11e8-aaad-830a1bd3202b’]

これをやり終えたのが、勉強をはじめて半年後くらいです。

基本的な言語仕様がある程度わかってきたところで、次は実践に近づくために次のステップに行くわけですが。

その前に。

とりあえずここで一旦、情報収集も兼ねて、就職活動をしてみることにしました。

今思えばかなり無謀だったのですが、実際に現場でどの程度まで求められるのかもわからなかったので、
一体、どの程度できるようになれば、エンジニアとして雇ってもらえそうなのか、その辺が知りたかったので。
当時の自分には右も左もわかりませんから。

私の地元は、まぁ、田舎なので。求人サイトのでの地域には該当しません。
福岡市、北九州市もそこそこ遠い。車で1時間強かかる距離です。

なので、就職活動も中々難しい。
職安で求人検索してみますが、それでも見つかません。

途方に暮れた挙句。

何とか通勤時間としては許容範囲である、北九州に範囲を広げて調べ、
「30歳以上、未経験可」のプログラマの求人検索で引っかかった、
北九州市にある、派遣会社の登録に行くことにしました。