この記事を書いていく前に、弊社の人事兼開発者が
未経験のiOSエンジニアを採用する際に見ていること
をまとめておりますので参考までにご覧ください
https://note.com/bari555/n/n5921e83378fa
##多くの初学者が無駄なインプットをしすぎている
自分もそうだったのですが、
「どこまで勉強すれば実務に入れるのか」
「何を勉強したら良いのか」
がよくわからず、色々な言語(2桁)を浅く触り、
かなり時間を無駄にしたので、他の未経験の方に
そういったことがないようにここにロードマップを残しておきたいと思います。
プログラミングでは全てを網羅しようとするとキリがないので、
あくまで自分が最低限実務で使っている、多用していることに絞っています。
また、スキルは証明しなければならないので、
深ぼったアプリを作る必要があります。
##スキルマップ
基礎構文
新しいことを始めるにはまず、最低限の言葉・文法を知らなければなりません
以下がチェックリストになります。
レベル1:実務は厳しい
・演算(+, -, *, /, %)
・インスタンスとは
・プロパティとは
・メソッドとは
・比較演算子(==, !=)
・変数 var
・定数 let
・エスケープ処理「\()」
・if文
・switch文
・for文
・構造体:struct
・関数 func
・型キャスト
レベル2:数打てばどこか入れるかも
・型推論
・オプショナルがわかる
・if let
・オプショナルチェーン
・画像が使える
・storyboard/コーディングによる描画
View、TableView、CollectionView、Switch、SegmentedControl
TableViewとCollectionViewでのカスタムセルによる実装、
その他もろもろのパーツ
・画面遷移(segue, navigationController,等)
・参照渡し, 値渡し
・アラート UIAlertController,UIAlertAction
・SVProgressHUDを適切なタイミングで使える
・NavigationControllerが使える
レベル3:数打てばどこか入れるかも
・UIView.animateでアニメーションが実装できる
-> ライフサイクルを意識できると良い
これができるとUIに磨きがかかるので選考でウケがいい
・セルの再利用がわかり、適切に動作させることができる
-> 再利用を理解せず(特に初期化)、副作用が起きがち
・selfをつける時、要らない時がわかる
レベル4:入れる確率上昇中
・非同期処理(WebAPIを利用)->DispatchQueueやクロージャを使う
(クロージャはここで使えれば良さそう)
・ライブラリ(Cocoapodsで外部ファイルをインストールして使う)
Charts、FSCalendar、SwiftyJSON、とかで良さそう
・Delegateが実用できる
・NotificationCenterが使える
・Githubが使える
・SourceTreeが使える
Delegateは以下の記事が一番わかりやすい
https://qiita.com/Sossiii/items/6c8916f96176991f19aa
レベル5:独学はもう効率悪いから今すぐ実務に入ろう
・Firestore、RealmSwiftを使える
サーバー上に保存した情報をローカルDBに入れることで、
何回もFirestoreからデータを引っ張らなくても良い(通信が減る)
RealmSwiftはメモリ上に保存するのでタスクキルでデータは消え、肥大しない
・チャットが実装できる
ライブラリ-> MessageKit
・ある程度のUIが設計できる
Pinterestでググれ
Pinterest(https://tinyurl.com/yyjaansd)
レベル6:即戦力
・RxSwift,Alamofire、SwiftyJSON、Moya, RxCocoa, RxDataSources
等のライブラリを使用して、MVVMアーキテクチャに基づいたコーディングができる
・既存コードを把握し、それを壊さないコーディングができる(保守)
レベルX:一番重要かも
・ぐぐり力
・ある程度のエラーを自己解決できる
・難題に見切りをつけ、「何がどうわからず、どう調べたが、どうわからなかったので
こういうことを知りたい」と言った形で質問ができる
・積極的に自習ができる
・プログラミングが好き
##最後はポートフォリオを作成
あなたが決めたレベルまでなんとなくできるようになったら、
あとは拘りのアプリを作り上げ、面接に進む時です。
##ポートフォリオは拘れ
たまに、「ポートフォリオは要らない」という方がいますが、
自分は「必要」の一択です
スキルレベルのわからない未経験を採用するのに一番わかりやすい
指標が「ポートフォリオ」なので、
必ずと言って良いほど必要です。
ただ、教育リソースがしっかりしていて、未経験の育成に力を入れている
会社であれば手ぶらな状態でも入れるところがあったりします。
その為、広く浅いポートフォリオではなく、
とにかく狭く深くを意識したアプリを作るのをお勧めします。
コンテンツの設計(UX)からデザイン(UI)まで考えられ、
レベル4,5あたりまでの技術を盛り込めば
あとは応募するのみです
##コーディング選考に備えるなら
Paiza一択(https://paiza.jp/challenges)
##スキル以外に重要なこととは
スキルだけあれば良いのか、と聞かれると実はNoで、
具体的には人としての軸が必要になってきます。
「なぜエンジニアになりたいのか」
「なぜ勉強しているのか」
「あなたはどんな人間なのか」
「実務についたとして続けられるのか」
「何が好きなのか」
このあたりの問いに明確な答えが出てくるようになると、
面接でも特に問題ないかと思います。
##企業ニーズに寄せていけ!
「私はこういう人間です!受け入れてください!」
「は?企業は親じゃねえよ」
会社は成果をあげる場所であって、
あなたを育成するための場所ではありません。
あくまでの成果のためにあなたを育成するのであって、売り上げのために動きます。
選考を通る確率を上げたいのなら、企業ニーズを把握し
それに合わせることはとても大切です
・どんなスキルを歓迎しているのか
・どんなビジョンを持っている会社なのか
・どういう人材を欲しているのか
を把握し、ポートフォリオや面接に盛り込めると尚良しです。
##おわりに
個人的にはレベル4,5あたりで応募していきたいところです。
参考になれば幸いです。
また、何ヶ月も勉強しているのに全然できない!
という方に朗報なのですが、1年でスタートラインに立てれば早いものです。
挫折は成長のきっかけであって、それを乗り越えるたびに1歩ずつ進み、
何もしない人との差がそれだけ開いていきます。