20代に送るエンジニアとしての生存戦略2019/02/04(Mon) 川原 英明
View Slide
アジェンダ● 自己紹介● 仕事に関すること○ ゲーム開発時代○ IT業界時代● 開発言語習得に関する話● エンジニアとして生きていく道○ プログラミングマネージャー○ シニアマネージャー● アウトプットしよう
川原 英明について自己紹介基本情報● 本日誕生日です、50歳になりました● Twitter @sapi_kawahara● 東京板橋区で誕生、妻の実家川越に住んでます、娘二人(6歳、1歳11ヶ月)居ます● 業界歴30年● ファミコンゲームからプレイステーションまでゲーム開発して、IT業界にジョブチェンジ● 開発時に心がけていること「10年後の自分が見て恥ずかしくないコードを書くこと」● 開発以外では、ブログ読む、ブログ書く、技術書典に行く● 勉強会に参加する、勉強会で登壇する、勉強会を運営する3
川原 英明について自己紹介 仕事を始める前までの経歴生い立ち● 1969年(昭和44年)2月4日生まれ● 10歳ぐらいに、NEC PC−8001やシャープ MZ-80CでBASICを独学で始める● 都立向丘高校(文京区)に物理部という「天文部」「パソコン部」「アマチュア無線部」を一つにまとめた部があり、この部活動にてアセンブラ言語(6809)を習得する● プログラムを作って雑誌投稿をすることにより、高校時代にはパソコン2台を購入する● 高校時代にパソコン通信にハマり大学進学を断念、専門学校に行きつつゲーム会社でアルバイトを始める4
仕事に関すること ゲーム開発時代
仕事に関すること ゲーム開発時代ゲーム開発時代のMVVビジョン● 「変化の激しいゲーム業界において、自己成長とともに業界に生き残る」● 成長戦略として、激しい変化に追従することを主題としたミッション● 「新しいアーキテクチャーを習得し続ける」● 常に新しいゲーム機が出る業界、新しいアーキテクチャーを習得することが必要不可欠ですバリュー● 「10年後も第1戦で活躍できる知識と経験を重ねる」● ゲームの作り方に興味を持ち、それを学び、そしてソフトを出すことにより継続的に知識と経験を重ねていきます
仕事に関すること ゲーム開発時代ゲーム開発職歴概略(未発売を含む)ゲーム開発時代● アセンブラ言語を使って開発○ ファミコン、アクションゲーム2本○ ゲームボーイ、アクションゲーム1本○ スーパーファミコン、RPG1本、シミュレーションゲーム1本○ PCエンジン、RPG3本○ メガドライブ、釣りゲー1本● C言語を使って開発○ プレイステーション(アセンブラ言語を若干使用)、ギャルゲー1本、シミュレーションゲーム2本○ セガサターン、シミュレーションゲーム1本
仕事に関すること ゲーム開発時代ゲーム開発時代のスキル(学生、バイト時代は除く)アセンブラ言語● 6502(ファミコン 8bits)● GB80(ゲームボーイ 8bits)● Hu65(PCエンジン 8bits)● 68000(メガドライブ 16bits)● 65816(スーパーファミコン 16bits)● R3000(プレイステーション 32bits)C言語● Microsoft C(セガサターン 32bits)● GCC(プレイステーション 32bits)
仕事に関すること ゲーム開発時代ゲーム開発時代のまとめ● 11年間で、アセンブラ言語6つ、ゲーム機のアーキテクチャーを8つ習得する● 新しいゲーム機の開発ノウハウは世間に無いので、チャレンジ精神で開発してました● ゲームで遊んでいると、気になるシーンがあるときは、ゲームを解析しまくっていました● このようにゲーム開発は能動的にいかないと取り残されます● 後輩育成は、プログラムのソースコードを読めでした● ついていけない人は辞めるか、音信不通になりました● プログラムのソースコードは動作速度最優先で、1年前のは自分でも読めない
仕事に関すること IT業界時代
仕事に関すること IT業界時代IT業界時代のMVVビジョン● 「変化の激しいIT業界において、自己成長とともに業界に生き残る」● 成長戦略として、激しい変化に追従することを主題とした、ゲーム開発時代と同じですミッション● 「新しいアーキテクチャーを習得し続ける」● 常に新しい開発方法が出る業界、新しいアーキテクチャーを習得することが必要不可欠です、ゲーム開発時代と同じですバリュー● 「10年後も第1戦で活躍できる知識と経験を重ねる」● 新しい開発方法に興味を持ち、それを学び、そしてソフトを出すことにより継続的に知識と経験を重ねていきます、ゲーム開発時代と同じです
仕事に関すること IT業界時代IT業界時代の職歴起業時代● iモードサービス初期の頃のサイト開発及び運営(権利譲渡済み、かつサービス終了済み)● クーポン配布サイト開発及び運営(2018年サービス終了)● ドロップシッピングサイト開発及び運営(サービスして半年て消滅)SIer時代● NTTコミュニケーションズにて画像共有サービス開発及び運営(2016年サービス終了)● ヤフーにて検索エンジン移行時の広告表示の対応● 楽天にてメルマガ配信システム開発及び運営、またそのメール配信システムを使った広告配信サービス開発及び運営● その他、各会社にて開発などを担当
仕事に関すること IT業界時代IT業界時代のスキル開発言語● Perl Version5系、自作フレームワーク● PHP Version4,5,7系、自作フレームワーク、Mojavi、CodeIgniter、CakePHP2、CakePHP3● Java Version5,7,8系、Seasar2、Spring Framework● Python Version3系、自作フレームワーク、Django● React Nativeその他● オンプレミス● AWS
仕事に関すること IT業界時代IT業界時代のまとめ● 相変わらずのチャレンジ精神で、現在も新しい言語の習得をし続けている● ゲーム開発時代と異なるのは、リリースしたら終わりではなく、開発し続ける必要があるため、その場しのぎの開発はしなくなりました● まともなドキュメント、まともなソースコードを書くようになりました● SIer時代なので、後輩に教えることは無くなりましたが、現場では他社の人でもあっても積極的に教えるようになりました● 新しいトレンドを求めて社外に出るようになりました
開発言語習得に関する話
開発言語習得に関する話常に新しい開発言語をやる意味● IT業界はLAMP時代から、JavaのApache StrutsやRuby on Railsなど、最近などはReact NativeやLaravel + Vue.jsなどトレンドがどんどん変化 しております● 30年仕事していますが、 2年でトレンドが変わり 、5年で求められるスキルが変わり 、10年で業界の勢力図が変わります● 「10年後も第1戦で活躍できる知識と経験を重ねる」ためには、新しい言語を習得し続けるのが得策です● 何を習得すれば良いか?投機的実行のように、外れても良いから自分の感覚を信じて習得するのがお勧めです● 実際に、自分はPerlを習得するとき、ついでにPythonもやっており、当時はトレンドの中心にならなかったけど、15年の時を経てトレンドになりました
開発言語習得に関する話現在の開発スタイル● 一つの開発言語を習得していれば、どんな開発言語でも雰囲気で習得可能です● まずは、新しい開発言語に慣れるために、チュートリアルでも良いから動かす● 少しでも慣れたら、実際の開発に入ってしまいましょう!● 優秀なIDEがあれば、IDEが教えてくれます● IntelliJ IDEAがお勧めですが、Visual Studio Codeもお勧め、テキストエディタは捨てよう!● 座学で3ヶ月やるなら、チュートリアル1週間の後に開発の方が習得スピードが早いです
開発言語習得に関する話挫折について● そんな開発言語大好きな自分でも挫折はあります● 順風満帆にスキルを伸ばしていたが、IT業界に入ってから1度挫折をしています● ゲーム開発時代の動作速度優先のプログラムから、メンテナンス重視のプログラムに変わっていきます● 最初は、人にプログラムのソースコードを見せるなんて苦痛でした● ひと月ぐらい、苦痛のあまり考えることができない時がありました● しかし、変化する時代に自ら対応すると決心し、人見せることができるプログラムのソースコードを書くように変化しました● 人に見せれば質も上がります、どんどん見せよう!
エンジニアとして生きていく道
エンジニアとして生きていく道エンジニア35歳定年説について● 自分は35歳から15年経過しているが、開発は継続しています● フリーランスの人で、35歳を過ぎている人は珍しく無いです● 上記のことから、35歳はエンジニア定年では無いです● 頑張り続ければ、いつまでもエンジニアで居られます● エンジニアから、マネージャーの方に進む人も居ます○ 会社における地位により、自然とマネージャーになる人○ マネジメントスキルを求めて、自らマネジャーになる人● エンジニアが進み道は、フリーランス、マネージャー、プログラミングマネージャー、シニアマネージャー、CTO(技術責任者)、VPoE(マネジメント責任者)など色々あります
エンジニアとして生きていく道各役職の区分け● 個人的な考えですが以下のようだと思います○ エンジニア→プログラミングマネージャー→CTO(技術責任者)○ エンジニア→マネージャー→シニアマネージャー→VPoE(マネジメント責任者)● この2つの道は、似ているようで大きく異なります
エンジニアとして生きていく道プログラミングマネージャー● プロダクトマネージャーというところもあります● 人や組織をマネジメントするのは少しでよく、技術や製品に対して責務を負うのがメインの役職です● 技術に特化している人なので、スキルや知見は高いものを要求されます● そのスキルを会社の内外に広く公開し、会社の地位向上と、エンジニア全体の地位向上に寄与します● なお、CTOは、プログラミングマネージャーの役職に、経営面での技術的な意思決定 が加わります
エンジニアとして生きていく道シニアマネージャー● エンジニア組織をマネジメントする役職です● エンジニア全員が100%の力を発揮させるため組織運営がメインの役職です● 技術に特化してなくても良いが、エンジニア全員の信頼を得るためには、一定レベルの技術レベルと知見が要求されます● 昔は、マネジメントの一括りにされていましたが、最近はエンジニア組織論を語る本が出るようになりました● なお、VPoEは、シニアマネージャーの役職に、経営面での意思決定が追加されます
みなさんは、どちらに進みます?
アウトプットしようどちらの道でも、必要とされる共通のスキルがある● エンジニアとして生きていくならばアウトプットをしようブログ● ブログやっていますか?今日の感想をブログに書くのも良いです技術書● 最近は、組織論の本や、技術書典 https://techbookfest.org/ など商業誌以外の技術書を購入して読むようになりました○ 合同誌ですが、本の出版もやりました(冬コミにて販売)○ 新たな合同誌、及び個人誌も計画中!勉強会● 勉強会に参加したら、次は登壇しましょう!
アウトプットしようエンジニアの登壇を応援する会● 『全てのエンジニアに成長と幸福をもたらす』をビジョンに活動してます○ エンジニアの登壇を応援する会 https://engineers.connpass.com/○ 技術を学ぶ会による学び○ 勉強会やカンファレンスでの登壇○ Slcakもやってます、興味があればご参加ください http://bit.ly/elt-slack● 定期的に勉強会を開催してます● 2月は「真冬こそ激アツの自由研究 LT大会」 https://engineers.connpass.com/event/112688/○ もう既に枠は全てうまってますね・・・○ 3月にも勉強会の予定 があります、興味があればご参加ください
まとめ● ゲーム開発時代、IT業界時代も、MVVは一緒で「自己成長とともに業界に生き残る」ために努力をしている● 開発言語は投機的実行により、興味がある開発言語を選択し習得して行く● 開発言語の習得は、習うより慣れろで、チュートリアルを少しやったら実際に組む● ソースコードは人に見せられるものを書く● エンジニアとしての道で行き着く先は、CTOの道か、VPoEの道かの選択です● 行き着く先が、どっちになろうが、エンジニアとしてアウトプットをする● アウトプットするのはブログでも登壇でも執筆でも良い、どんどんしよう!
ご静聴ありがとうございました