自分よりも技術力の高い会社に入社して感じたこと

Preview:

DESCRIPTION

スタディプラス社に入社してから感じたことを書いています。 若手(社会人4,5年目ぐらいまで)プログラマが 目指すべき方向性について書いています。

Citation preview

自分よりも技術力の高い会社にJOINして

感じたこと

suzuki_mar@電設部部会

Version 2.0

自己紹介氏名 鈴木将之ID suzuki_mar

1年半前にiOSエンジニアになったその前は、PHPエンジニアだったので、最初はiOS開発にすごい苦労した

所属会社 スタディプラス

卒業年度と学科 08JO(オープンソースシステム科)

趣味 ライブに行くこと(アニソン系)

スタディプラスにJOINしてから感じたことを

電設部の皆さんにお伝えします

今日話すこと

スタディプラスにJOINしてから感じたことを

幸運にも自分よりも技術力の

高い会社にJOINすることができた

入社時のスペック

プログラミング言語はPHPやRubyなどのLLしか

やってこなかった

デザインパターンはFactoryなどの

すごい単純なパターンしか知らなかった

など色々とダメなところが多かった

そのため

すごい大変だった

でもやっぱり、自分の成長を考えると

自分よりも技術力の高い会社に

JOINしてよかった

技術力の高い会社とは

社内のプログラマ一人ひとりの設計力や実装力が高くて、かつ学習意欲が高いプログラマがお互いに協力し合いながらシステム開発をしている会社

プログラマとして仕事をしていて楽しいと思える瞬間が多いのも特徴

一言で言うと

XP(エクストリーム・プログラミング)

できている OR 実践しようとしている

会社

本編

1. なぜ技術力の高い会社にJOIN してよかったのか?2. 原則・パターンの大切さ3. JOINしたらプログラミング スキルを高速で上げる4. 社内の他のプログラマと差別

化できるポイントを持つ

目次

セクション1

なぜ技術力の高い会社にJOINして良かったのか?

設計原則・デザインパターン

の大切さを痛感した

プログラミングするときの

自分の悪い癖を修正できた

他のプログラマとの差別化を

するための方法を見つけることができた

技術力の高い会社にいかなかったら

優秀なプログラマがたくさんいる開発会社が

実際にどういう開発をしているか

知ることはすごい難しい

勉強会や書籍では

限界がある

知ることはできるが、体験することはできない

普通の開発会社のプログラマからすると

具体的なところまで知ることができない

境界線がある状態になっている

その結果

技術力の高い会社を知ることができずに

井の中の蛙になってしまう

境界線

優秀なプログラマ

普通なプログラマ

自分って意外と出来るかもしれない(普通なプログラマの中だったら。。。)

普通の技術力の会社のプログラマが境界線の先を見るのは、難しい

技術力の高い会社にいかなかったら、

次のものは得られなかった

得られたもの設計原則・デザインパターン

の大切さを痛感したプログラミングするときの自分の悪い癖を修正する

ことができた他のプログラマとの差別化を

するための方法を見つけることができた

開発会社の技術力は日本国内だけでみても

差がすごい激しい

プログラマはできるだけ早く

自分よりもレベルの高い人しかいない

環境に飛び込むべき

そうはいっても、どうすればいいのか?

知り合い経由でJOINする

待遇が悪くてもJOINする(給料面など)

極論

若いうちは最初はアルバイトでもいいと割り切るのもあり

本人のプログラマーとしての価値があれば

正社員になれる

プログラマ(エンジニア)のメリット

人材流動性が高い

セクション1のまとめ

プログラマとして成長するためには

失敗することを恐れずに

自分よりも技術力の高い人しかいない環境

飛び込む

セクション2

原則・パターンの大切さ

原則・パターンとは

プログラミングを効率よくしたり、保守しやすくする

考え方や実装例

特に機能を拡張しやすくなることが

メリットとして大きい

原則やパターンを知っていることで

他の人の設計や実装が理解しやすくなる

逆に知らないと

原則やパターンが適用されている部分に

誤った設計や実装をしてしまう

その結果

レビューに時間がかかったり

保守性が下がり

開発スピードが下がってしまう

他のメリットとして

チーム内の共通知識

として使える

原則・パターンはプログラマだったら

当然のように知っておかないと

いけないスキル(知識)

原則・パターンにはどういうものがあるの?

原則(考え方)には次のものがある

パターン(実装例)には次のものがある

詳しくは、次の書籍で

しかし

技術書は高い(特に学生だと金銭的に厳しい)

それに、ページ数がすごい多い

そのため

技術書を購入(勉強)する敷居が高い

Web上で無料かつ簡単に

原則やパターンを知りたい

次のサイトがおすすめ

ストラテジックチョイスhttp://d.hatena.ne.jp/asakichy/

先ほど紹介した書籍のまとめも扱っている

セクション2のまとめ

原則・パターンを使いこなせることで

拡張性が高いアプリケーションを開発できたり

大規模なアプリも保守性高く開発

することができる

また

チーム開発するときに共通の知識として

使用できる

そのため

必ず習得して使いこなせるようにならないといけない

コアスキル

セクション3

JOINしたらプログラミングスキル

を高速で上げる

スキルを早くあげないといけない

自分よりも技術力の高い人しかいない環境

=

勉強しないと生きていけない

(仕事にならない)環境

しかし

技術力の高い会社

スキルを修得する(勉強する)

環境が整っている

プログラミング学習の高速化サイクルができる

ようになる

プログラミング学習の高速サイクルとは

プログラミング時に大切な3つの要素

実装(設計・コーディング)コードレビュー原則・パターン

技術力の高い会社に入社することで

各要素が他の要素にいい影響を与えることが

普段の開発からできるようになり

高速にプログラミングの

学習ができる

例えば

技術力の高い人にコードレビューをしてもらうことで

実装の質を効率的に上げることが

できるようになる

図にすると

コードレビュー

実装

原則・パターン

指摘

を受

ける コード

リー

ディ

ング

適用

する

誤用

を防ぐ

知る

誤って理解することを防ぐ

技術力の高い人にコードレビューを指摘を受ける

コードレビュー

実装

原則・パターン

指摘

を受

ける コード

リー

ディ

ング

適用

する

誤用

を防ぐ

知る

誤って理解することを防ぐ

自分がイマイチ理解できていない部分

悪い癖となってしまって

いる部分

独学では気づくのが難しい

コードレビューを通して指摘してもらえて

自分自身の理解や悪い癖を

正すことができる

コードリーディング

コードレビュー

実装

原則・パターン

指摘

を受

ける コード

リー

ディ

ング

適用

する

誤用

を防ぐ

知る

誤って理解することを防ぐ

コードを読むのはとても大切な勉強

何を読めばいいのかがわからない

仕様の背景や実装の都合まで理解している

コードを読める

質問もすぐにできる

原則・パターンを適用する機会を逃さない

コードレビュー

実装

原則・パターン

指摘

を受

ける コード

リー

ディ

ング

適用

する

誤用

を防ぐ

知る

誤って理解することを防ぐ

原則・パターンについての知識が足りないため

適用する機会をのがしてしまう

コードレビューで指摘を受けて修正する必要がでてくる

それにより

原則・パターンを適用しないことによる

開発スピードの低下を防ぐことができる

また

自分が知らなかった原則・パターン

新しく知ることができるようになる

原則・パターンの誤用を防げる

コードレビュー

実装

原則・パターン

指摘

を受

ける コード

リー

ディ

ング

適用

する

誤用

を防ぐ

知る

誤って理解することを防ぐ

原則やパターンを誤って適用してしまうと

開発スピードを下げてしまうことの要因になってしまう

しかし

原則・パターンは試行錯誤しながら

身につけていく部分もある

技術力の高い人がいることで

試行錯誤をすることができる

コードレビューで指摘をしてもらえる

プロジェクトへの悪影響を防げる

試行錯誤したことで悪いパターンも含めて

理解することができる

コードリーディングで原則・パターンに

ついて知る

コードレビュー

実装

原則・パターン

指摘

を受

ける コード

リー

ディ

ング

適用

する

誤用

を防ぐ

知る

誤って理解することを防ぐ

原則・パターンを独学しても

プロジェクトでどうやって活かして

いけばいいのか

知ることは難しい

プロジェクトのコードとして

適切に原則・パターンを活かせているコード

読んだり保守する

実プロジェクトに適した適用の仕方を理解できる

原則・パターンについて適切な適用方法を

知ることができる

原則・パターンを誤って理解することを防ぐ

コードレビュー

実装

原則・パターン

指摘

を受

ける コード

リー

ディ

ング

適用

する

誤用

を防ぐ

知る

誤って理解することを防ぐ

原則・パターンを独学するが

誤って理解してしまうことがある

コードレビューをしてもらうことで

誤ったのを実装してしまうのを防げる

誤って理解した知識を正すことができる

セクション3のまとめ

プログラミング学習の高速サイクルを行い

コードレビュー

実装

原則・パターン

指摘

を受

ける コード

リー

ディ

ング

適用

する

誤用

を防ぐ

知る

誤って理解することを防ぐ

できるだけ早く

技術力を上げる

セクション4

社内の他のプログラマと差別化できるポイントを持つ

教えてもらうばかりではいけない

給料泥棒

プログラマとして価値を早くだせるように

ならなければならい

普通なプログラマ

優秀なプログラマ

見習いプログラマ

自分

優秀

なプ

ログ

ラマ

とし

て働

きた

技術力の高い会社だと

プログラマ一人ひとりの

技術力や学習意欲の

平均値が高い

そのため

普通にプログラミングの勉強をするだけでは

平均レベルのプログラマとしての価値しか

発揮できない

優秀なプログラマとしての価値を発揮するには

努力するだけでは難しい部分も多い

普通なプログラマ

優秀なプログラマ

見習いプログラマ

勉強して、普通なプログラマになれたが

優秀なプログラマになるのは難しい

自分

会社に対して価値を発揮できていない

悩む

それを脱却するには

自分の強みをもつ

例えば

プログラミングと関連性のある分野もできるようにする

次の様な分野

・データ分析・セキュリティ/テスト・デザイン・サーバの深い知識・DBの深い知識

できれば、社内にできる人が

少ないけど

リソース的に必要な分野がいい

ブルーオーシャン戦略

もしくは

特定のプログラミング言語や

特定の開発環境

専門的スキルを身につける

一番詳しい人になる

どちらにしても

+αの技術選択で一番重要なのは

好きなことや興味がある分野

楽しく勉強をする

自分だけの強みを持った結果

社内のプログラマと差別化をすること

ができて

プログラマ+αの価値を発揮することが

できるようになる

普通なプログラマ

優秀なプログラマ

見習いプログラマ

+αの価値を持ったプログラマ

自分

自分だけの価値を発揮しながら

技術力の高い会社で楽しく仕事ができる

セクション4のまとめ

自分の強みを持ち

自分だけの価値を発揮しながら

楽しく仕事をする

全体のまとめ

プログラマとして成長するには

できるだけ早く技術力の高い会社に

JOINする

原則・パターンを習得して

コアスキルとして活用する

そのためにも

プログラミング学習の高速化サイクルを行う

コードレビュー

実装

原則・パターン

指摘

を受

ける コード

リー

ディ

ング

適用

する

誤用

を防ぐ

知る

誤って理解することを防ぐ

自分のプログラマとしての価値をあげるためや

社内の他のエンジニアと

差別化をするために

自分だけの強みをもつ

そして

プログラミングの基礎スキルと

自分に取っての強み

相互に関連させながらスキルを積んでいき

+αを持ったプログラマとして

成長していく(いきたい)

ということをスタディプラスにJOINしてから思いました

普通なプログラマ

優秀なプログラマ

見習いプログラマ

+αの価値を持ったプログラマ

技術力の高い会社

普通の技術力の会社のプログラマ

ここ

を目指

見習いプログラマ

JOINする前

将来

の目標

ご清聴ありがとう

ございました

おわり

Recommended