開発者のスキルはあっても製品を開発した経験がないと、開発者のポジションには就けません。この記事では、リクルーターであるPaddy Sherryの「開発者になるためのアドバイス」を紹介します。
情報技術やIT学部を卒業した若者にとって、製品開発の経験なしでフルタイムの職に就けるかはキャリア上の重要な問題です。
情報技術の学位を取得すればソフトウェア開発に必要な知識が身について、好きな仕事に就けると考えているかもしれません。試験の成績が良く、プロジェクト実習は会心の出来で、最新のテクノロジーやJavaScriptライブラリーを学習してきた自負があるかもしれません。
それでも、10代半ばからプログラミングに熱中していて企業とのコネクションやインターンの経験がある開発者以外が内定をもらうには時間と努力が必要なのです。
困難な理由
実社会のWebやソフトウェア開発は、学業の世界とは別物です。
開発はチームで進めます。仕事においては、大学のクラスメートと取り組んだ12週間のプロジェクトより多くの変数があります。チームメンバー同士で歩調を合わせて仕事をするために、プロダクト全体と自分の担当パーツとの関係を理解したり、コーディング規約に従った質の高いコードをレポジトリーにコミットしたり、プロダクション環境でも稼働する機能を期限通りに完成させたりしなければいけません。
通常は稼働中のシステムがあるので、チームに入った直後からコードを書いて貢献できるわけではありません。プロジェクトの構造を理解して、ほかの開発者が書いたコードを読み解き、既存のシステムに悪影響を及ぼさない変更をコミットするのには時間がかかります。しかし時間とお金を投じて採用した若い開発者を、勉強のために6カ月間も遊ばせてはくれません。
大学でのプロジェクトならバグが許されても、製品の開発では許されません。製品は企業の資産であり、バグがあれば企業は信頼を失い売上が下がります。製品をリリースするには、テスト、セキュリティ、スケーラビリティ、パフォーマンスに十分な性能が必要です。ソフトウェア製品の開発やデバッグに関する知識は経験しないと習得できず、キャリアの出発点では未経験です。
その上で、新人開発者のポジションに採用されるためのヒントを紹介します。
得意な言語を絞る
Web開発、ソフトウェアエンジニアリング、データベース、ネットワーク、UX、アーキテクチャー、ビジネス開発など多くの領域を、授業では簡単に触れるだけです。すべてに熟練していると求職時にアピールしてはいけません。
採用担当者は「Java、C#、Python、PHP、Ruby、Javascriptすべてをマスター」と書かれた履歴書を信用しません。得意な言語が1つか2つはあっても、キャリアの開始時点ではほかの言語は初心者でしょう。
スキルセットを絞り込んで、得意な言語を特定してください。
バックエンドの言語は変化が遅いので、ソフトウェア開発に携わりたければJavaやC#、Pythonなどの厳格な言語が良いでしょう。Web開発ならPHPかRubyがおすすめです。選んだ言語がキャリアを築く基礎になります。
さらにJavaScriptをはじめ、フロントエンドの言語を組み合わせれば、フロントエンドとバックエンドの両方をこなせる開発者になれます。アピールするスキルの数を減らして熟達した領域があることを示しつつ、フロントエンドとバックエンドの両方へ進めるオプションを残すのが賢明です。
キャリアの進路が限定されていないことを企業は評価します。
ポートフォリオWebサイトを作る
大学で勉強したモジュールについてインタビューで聞かれることはありません。深い知識なしで答えられることより、採用担当者は実際に経験したことに興味があるからです。仮に経験が少なくても、自分のポートフォリオWebサイトを構築すること自体が経験になります。
ポートフォリオとして掲載するものがなくても問題ありません。ドメイン登録、ホスティング設定、CMSインストール、アカウント作成、検索エンジン登録、Google アナリティクス設定など、すべてがWebサイト構築の必須要件です。訪問者がたくさんいる成功したWebサイトは現段階では不要です。
Webサイト構築を経験すれば、家族や知人を通じてWebサイト作成の依頼があり、それがポートフォリオに載せる実績になるかもしれません。また、ポートフォリオサイトを構築したときの失敗を次に生かせます。大きなリスクを負うことなくスキルを磨きながら、実務の開発に近い経験を得られます。
インタビューでアピールする経験になり、その会社にWebサイト開発の仕事があれば、採用される可能性が高まります。
プロダクトかプラグインを開発
ポートフォリオサイトを構築すると、プラグインやJavaScriptライブラリーで解決できる問題が見つかります。既存のプラグインやライブラリーでは対応できない問題なら、ほかにも困っている開発者がいるでしょう。
そこで解決策を見つけて、ほかの開発者も利用できるようにWordPressプラグインやパブリックGitHubレポジトリーの形式でパッケージ化します。これで、単体のプロジェクトを1人で開発していた段階から、ほかのプロダクトやエンジニアの要件、ユースケース、大きなコードベースへの適合なども考慮する段階へ進んだことになります。
大きなアプリケーションの中の一部分を担当して全体に適合するコードを書くことは実際の開発チームの状況に近いため、インタビューでアピールできます。もしかしたらプラグインを有料にして、おこづかいを稼げるかもしれません。
オンラインコミュニティに参加
技術的な能力だけでなく、仕事が好きであることも企業は重視します。開発の世界は変化が速いので、業務外の時間にも勉強して最新のトレンドやフレームワーク、ツールについていく必要があります。
具体的には、ブログやソフトウェアのWebサイトを読むのがおすすめです。十分な知識を身につけたら、コメントしてアイデアを発信してください。ほかの開発者に解決策を提案できれば、そのコミュニティでの認知度が上昇します。
企業はコミュニティでの認知度に関心がないと思うかもしれませんが、開発のキャリアに真剣かを調べるために、応募者のLinkedIn、GitHub、Stack Overflowプロフィールなどにアクセスします。トップレベルのチームなら最低でもStack Overflowで評判の良い開発者だけを採用します。Stack Overflowで提案した解決策が「Upvote」されていれば、スキルの証明になるからです。
GitHubのコードはすべて公開する
オンラインのコードはすべて公開してください。公開すると批判や批評の対象になりますが、ソフトウェア開発ではチームメンバーの目でチェックしてもらうことが品質管理に欠かせません。早くからチームメンバー間のレビューに慣れておけば、製品開発のときに抵抗なくチームメンバーの書いたコードをレビューしたり、フィードバックを受けたりできます。
公開することでエキスパートの目に触れる可能性もあります。過去に構築したプログラムや解決した問題について話すだけなら簡単ですが、経験豊富な開発者にコードを見てもらえる状態にしておけば信頼性が高まります。
応募先のチームメンバーに、コードの質や使用したデザインパターン、コメントの書き方などを見てもらうこともできます。それだけでなくソフトウェア開発とチーム作業に欠かせないバージョンコントロールシステムを使いこなせていることもアピールできるのです。
最後に
卒業後に未経験の状態で開発職に就くのは簡単ではありませんが、スキルをアピールして内定を引き寄せる方法はあります。
バックエンドかフロントエンドの言語を選択し、Webサイトとプラグインを構築してください。ブログを書いたりコメントを投稿したりしてください。なにか言われそうだと心配する必要はありません。開発したものはなんでもGitHubで公開し、新しいツールがあれば試してください。
はじめはだれでも未経験ですが、同じリソースと機会を持っています。この記事で紹介したヒントを活用し根気強く取り組んで、高待遇の仕事を射止めてください。
(原文:How to Land a Development Job Without Experience)
[翻訳:内藤 夏樹/編集:Livit]