paiza開発日誌

IT/Webエンジニア向け総合求人・学習サービス「paiza」(https://paiza.jp ギノ株式会社)の開発者が開発の事、プログラミングネタ、ITエンジニアの転職などについて書いています。

SI→Webに行ったエンジニアが転職前にやっといてよかったこと、やっとけばよかったこと

f:id:paiza:20161130165938j:plain
Photo by Michelle Hofstrand
こんにちは。谷口です。

paizaを開発しているエンジニアの中には、もともとSIerで開発をしていた人が何人かいます。

paizaで転職のご相談をいただく方の中にも、SIerからWeb系に転向したいという方は増えていますが、Web系の経験のない人が勉強などを何もしないまま転向を叶えるのは正直難しいです。しかし、Web系の開発業務経験のない人は「具体的に何をどう勉強をしたら役に立つのかわからない…」という人が大半かと思います。

というわけで今回は、SIerからWebサービスを開発している弊社へ移ったエンジニアたちが今になって思う、「転職前にやっておいてよかったこと」、また今になって「やっておけばよかった!」と思うことを聞いてみたのでご紹介します。

いずれは転職を考えているという人転職はまだ考えてないけどWeb開発の勉強に興味があるという人の参考になればと思います。

■高村

経歴:大学(情報工学)→メーカー系の大手SIer(マネジメントに強みがあるところ…)→paiza(ギノ)

◆やっておいてよかったこと

◇業務関連のこと
  • 食わず嫌いしないでいろんな領域にチャレンジしておく

SIerではインフラ屋さん・サーバアプリ屋さん・フロントアプリ屋さんetc…という感じに役割分担が区切られていることが多いので、「自分はここまでしかやらない」といった線引きをする人も多いのですが、自分は「全部できるようになった方が楽しめそうだし、会社に依存しない強さを身につけられるのかなー」と考えて、チャンスがあれば自分の知らなそうな領域に飛び込むようにしていました。

もちろん手を出した分、いろんな仕事が集中して回ってきて辛いときもあったのですが……結果として間違いなくスキルアップにはつながったと言えるので、チャレンジしておいてよかったなと思います。

  • 炎上プロジェクトのヘルプに参加する

「おい何を言ってるんだこいつは」と思われるかもしれませんが……。

炎上プロジェクトのヘルプは正直言って徹夜上等だったりするので肉体的に辛い部分はありますが、そういう場面における優秀な人たちの立ち振る舞いを間近で見ることができたりそもそも何でこんなひどい状況になったのか?次はどう改善すればよいのか?というような思いを巡らせる機会につながったり短期間でいろいろ身につくので、おすすめしちゃいけないかもしれませんが、体力がある若い方にはおすすめです。

まあSIer案件的な炎上じゃなくても、Web開発へ行こうがどこへ行こうが業務が大変なときはありますしね……。

◇業務以外に個人でやったこと
  • 自分で適当なWEBアプリとインフラを作って公開してみる

(運用までしてみるとベストですが、そこまではできなかった……)

paizaを開発することになったらRailsを使うことになるのはわかっていたので、前職にいた間、地味に面倒だった携帯端末の貸出・返却を管理するようなツールをRailsで作ってみたことで、Railsの基本的な機能を身につけることができたと思います。またVirtualBoxCentOSを入れて作ったアプリを公開して、一気通貫の流れをやっておいたので、なんとなくRailsアプリの全体像が見通せるようになった気がします。

(貸出・返却の情報は機密情報になるので実際に運用するところまではできなかったのが心残りです……)

  • Git・GitHubに触れておく

前職ではSVNでソース管理をしていたので、分散型のバージョン管理システムは使ったことがありませんでした。

ただ、Web系ではGithubを使った開発フローが主流だと認識していたので、自分なりに使ってみつつ理解を深めていきました。

特にプルリクエストは一人だとなかなかやる機会もないので、下記の参考記事のように一人プルリクエストで実際の開発時の流れをイメージしておいたことは、転職していきなり開発に入ってもつまずかずに済んだ効果があったかなーと思います。

【参考記事】
blog.qnyp.com

【参考書籍】

GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)

GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)

  • ブログやQiitaでのアウトプット

本やWebの記事を読んでいるだけだと、なかなか自分が正確に理解できているのかわからないことが多いので、ブログなどにアウトプットしておくことで、知識が定着すると思います。(必ずしも定着させられるわけではないですが……)ですので、何かしらアウトプットをする習慣はつけておいて損はないと思います。

◆読んでおいてよかった本

  • リーダブルコード

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

新装版 リファクタリング―既存のコードを安全に改善する― (OBJECT TECHNOLOGY SERIES)

新装版 リファクタリング―既存のコードを安全に改善する― (OBJECT TECHNOLOGY SERIES)

上記2冊は、メンテナンスしやすいコードを維持していくための大切にすべき考え方が詰まっています。

SIerでは、ステップ数などという怪しい指標があり、「メンテナンスしやすい美しいコード」というのは見積もり金額にも反映できないので軽視されがちですが、自社サービスでは(修正が多いコードは特に)メンテナンス性を落とすと、そのまま自分たちに跳ね返って来てしまいます

美しいコードは尊いもの」という考えを身につけるためにも、手元に置いておきたい書籍です。

  • Ruby on Rails 4アプリケーション・プログラミング

Ruby on Rails 4 アプリケーションプログラミング

Ruby on Rails 4 アプリケーションプログラミング

パーフェクト Ruby on Rails

パーフェクト Ruby on Rails

まだまだRails初心者ではありますが、これらを転職前に読んでおいたので、転職して開発に入ってからのつまずきが軽減されたと思います。この2冊が特によいというよりは、転職先がどういう言語やフレームワークを使って開発しているのかわかっているのであれば、体系的に身につけられそうな書籍は一読しておいた方がよいかと思います。

◆やっておけばよかったと思うこと

◇フロントエンド系のスキルアップ(特にjQuerycss)

やっておいてよかったことの内容に反している気がしますが、インフラ・サーバサイド・フロントエンドなど一通り業務で触れてはいたものの、フロントエンド部分は、Webデザイナーさん寄りの仕事というところで、開発責任が曖昧だったということもあり、あまり注力してこなかったので今になって苦労しています……。

◇英語力向上(のための習慣づくり)

年に1回ぐらいやる気になって英単語帳を開いてみたり、英語のニュースを読み始めたりhuluで英語字幕で視聴し始めたり、何かしら英語と向きあおうとするのですが、どれも習慣化できずに挫折しています。もっと早くから習慣づけておけばよかった……。

ちなみに今は習慣化するためにDuolingoというサービスを使ってコツコツやっています。(2ヶ月以上続いたのはこれが始めて……)

■中村

経歴:文系大学→文系大学院中退→SIer→自社サービス開発企業→paiza(ギノ)

自分は転職が二度目で、前職も一応Web系ではあったのでそんなに違和感はなかったような気がします。

◆やっておいてよかったこと

◇情報収集する癖付け

やっておいてよかったというか癖なんですけども……自分は文系だったんですが学生時代からネット漬け生活だったので、そのまま社会人になってもいろいろ情報収集する癖がついていて、早い段階から「SIerとは違う開発の世界がある」とか「いろいろな技術があって今はこういうのが流行ってる」とか、そういうことを常に押さえていられたのはよかったと思います。

自分がいる会社や自分が使っている技術のことだけしか知らないと、いろいろな選択肢があるということにも気付けないですし……。

Railsチュートリアル&Git

Ruby + Sinatraは前職中にも自分でちょいちょい使ってみたりしていたんですが、弊社に入社するのが決まってからはRailsチュートリアルをやりました。RailsチュートリアルではBitbucket + Gitも触ることができたので、それもよかったです。前職ではソース管理にMercurialを使ってて、Gitを使うのにそんなに違和感はなかったですが。(Mercurialの方がちょっと履歴改変しにくい感じです)

Java + PlayFrameworkでの開発

前々職はJavaと一部C#、前職はJavaメインで開発をしていたのでRubyを業務で使った経験はなかったんですが、RailsっぽいJavaフレームワーク「PlayFramework」を使って開発した経験があったのと、あとは前述の通りチュートリアルもやってたので、Railsでの開発に入って行くのが多少は楽だったと思います。

本当の基礎からのWebアプリケーション入門

f:id:paiza:20160629152917p:plain
ゼロからWebサーバを作ってみようという内容のサイトです。ここを見て自分も作ってみたりしてました。

SIerの現場では、サーバを触らないポジションの方が多いかと思いますが、エラーが出れば原因は追わないといけないわけで……自分はよくわからないエラーメッセージに囲まれて途方に暮れつつ、ApacheとかTomcatとかのサーバを自分で立てたりもしてみたんですが、手順通りにやるだけなのでいまいち知識も理解も深まらないし、どうしたもんかと思っていた頃に流れ着いたサイトです。

このサイトで学べるようなWebアプリケーションの基礎の基礎って、Web開発をするなら知っておいた方がいい知識が多いので、やっておいて損はないかと思います。

◇技術に詳しい先輩と仲良くなっておく

前職にも前々職にも技術にめちゃくちゃ詳しい先輩がいて、技術やIT業界や転職に関することなど、いろいろと早くから教えてもらえたことも大きかったと思います。

「それはお前が先輩に恵まれてただけだろうが」と思われるかもしれませんが、どこのSIerでも技術オタクみたいな人は一定数いますし、飲み会があると大抵「いつ辞めるか話」で盛り上がると思うので、意外と見つけようと思えば見つけられると思います。技術も転職に関する情報も交換しあえるような人が見つかるとベスト……。

SIerでの仕事をがんばる

なんか矛盾してるかもしれませんが、SIerでもプログラミングの基礎とか業務の進め方とか、学べることはたくさんあるわけで……当たり前かもしれませんが、いま目の前の仕事をしっかりやるということが次につながるんだと思います。精神論みたいなことでなんですが、「こんな仕事やだー俺はここにいるべきじゃないんだー」と思う前に、目の前のことしっかりやらないと次へ進むことはできないんじゃないでしょうか。

◇読んでおいてよかった本
  • リーダブルコード

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

有名な書籍なので言われなくても読んでるかもしれませんが……(そして高村さんも挙げている……)。コードの書き方もそうですが、オブジェクティブな考え方を身につけるのに役に立ちました。

  • コンピュータはなぜ動くのか

  • ネットワークはなぜ繋がるのか

ネットワークはなぜつながるのか 第2版 知っておきたいTCP/IP、LAN、光ファイバの基礎知識

ネットワークはなぜつながるのか 第2版 知っておきたいTCP/IP、LAN、光ファイバの基礎知識

コンピュータやネットワークにおける原理的な仕組みや「中で何が起きているか」ということって、別に知らなくてもプログラミングはできるのでなかなか手が出ないかもしれませんが、エンジニアを続けるのであればどこかのタイミングで知っておいた方がいいんじゃないでしょうか。自分は前職でWebサーバから作ったりすることがあったのですが、そのときに意外とこの辺の知識が役に立ちました。

もともと情報系を専攻してきた人にとっては学校で習ったりしていて当たり前の知識かもしれませんが、自分は大学も文系で情報系の勉強をしてきたわけではないので、こういう書籍や、あと基本情報の資格の勉強などを通して、コンピュータやネットワークについて体系的に学ぶことができました。(基本情報って軽視されがちですし、別に資格自体は取得してもしなくてもいいんですが、情報系の勉強をあまりしてこなかった人が体系的に学ぶにはちょうどいい内容なんじゃないかと思います)

◆やっておけばよかったと思うこと

◇フロントエンドについての勉強
◇UI/UXについての勉強

フロントエンドは前職でも少しはやることあったんですが、あまりリッチなことはやってなかったので……。

UI/UXは、そこから考えて作るというのがpaizaが初めてなので、いま勉強しながらやってて結構苦戦中です。先にもっと勉強しとけばよかったなー。

■佐藤

経歴:高専情報工学科)→大学編入→大学院→地方の常駐メインの下請けSIerpaiza(ギノ)

この中では一番古株です。弊社に転職してきたのもだいぶ前のことで、当時やってた技術的な勉強も今となっては「古!!」という内容が多いかと思いますので、その辺は参考程度ということでお願いします。

◆やっておいてよかったこと

◇海外のIT関連の情報が得られる記事を読む
◇将来性の高そうな技術分野や自分が行きたい分野を見定める

転職を目指すに当たって、一番大事なのは将来性高そうな技術や分野を見定めることではないかと思います。

自分は新卒の頃から3年以内には転職しようと思ってたんですが、転職するにしてもどの分野を目指すのか?今後はどういう技術がきそうなのか?ということは、ずっと考えながら仕事をしていました。

前社の仕事の進め方などには最初から問題意識があったので、そこから「じゃあ逆に次はどういう企業がよいのか?」ということも考えたりしていました。

あと、当時は今よりも技術の情報が日本に来るのがだいぶ遅かったので、「最近は海外でITがこんなふうに活用されているから、そのうち日本にもやってくるな…」といったことを知るためにグローバルな情報もよく調べていました。

結果として、自分は「自社開発」「Railsを使った開発」「設立10年以内」などの条件を満たした企業に行きたいなという方向性で転職活動を始めて、弊社に入ることになりました。

上記の条件は、古い記事ですがこちらの記事2009-12-19 - アンカテ)を読んで、「自社サービスの開発なら自分達の会社の利益を生むためにプログラムを作ることができるので、これからやるなら自社サービスの方がいいなあ」と思ったり、他にも「Railsを使うと従来の開発方法よりも生産性が高くなる傾向にあるから、導入している企業(当時はまだ少なかったので)は技術に対する先見性がありそう」とか「経営者が若くてIT技術に覚えがあるところがいいから若い会社がいいな」というような方向で考えていたからなんですが、これはあくまで自分が行きたいと思った方向性で、人によって良いと感じる開発分野や環境や条件は全然違うと思います。

ですので、まずは自分なりに最新の技術や業界の動向を調べたり、現職で不満があればそれを解消するにはどうしたらいいのかを考えたりすることで、自分の行きたい方向性をしっかり見定めるということが重要なのかなと思います。

転職先で使っている技術を完全にマスターしておく必要はないと思ってるんですが(それはかなり難しいし、実際の業務を通して学べばいい部分もあるので)、それも自分の転職に関する方向性が決まれば「じゃあRailsを触っておこう」とか「Gitを使えるようになっておこう」といった感じで、技術的に勉強しておくべきことも定まってきますしね。


【参考記事】
d.hatena.ne.jp

ソースコードの管理ツールをVSSからSVNに変更したり、タスク管理をエクセルからRedmineに変えたりした
◇HerokuでデプロイするためにGitも使ってた

↑結構昔にやってたことなので……今では古い話になってしまうかと思うので参考程度でお願いします。

ただ、これはどんな技術でも言えると思うことなんですが、技術関連のものって、どれだけ調べて文章を読んでも実際に使ってみないことにはいまいち良さがわからないことも多いと思います。なので、ネットでいろんな人が「これはいいぞー」って言ってるものは、高価なものでもない限り、まずは素直に使ってみるのもいいんじゃないかと思います。使ってみて「別によくないじゃん」と思えばそこでやめればいいわけですし。

RedmineプラグインRubyで作ってみたりしていた

転職前から「転職先はRailsが使えるところがいいなー」と思っていたので、週末にRailsを使ってRedmineプラグインを作ったりしていました。Rubyの書き方、Railsの使い方を覚えるとっかかりになりました。

◇時間を作る

前職では、ルーチン系の仕事は誰でもできるようにマニュアル化できるところはマニュアル化したり、手作業系の仕事を自動化するための開発をして自動化したりして、それで浮いた時間にさらに別の自動化ツールをがんがん作ったりして、とにかく早く帰れるように、プライベートの時間を増やせるようにしていました。

で、できた時間で何をしていたかというと、転職活動における情報収集や技術の勉強をしていました。情報収集するにしても何か勉強するにしても転職活動するにしても、とにかく時間がないと始まらないので……。

◇読んでおいてよかった本

アート・オブ・アジャイル デベロップメント ―組織を成功に導くエクストリームプログラミング (THEORY/IN/PRACTICE)

アート・オブ・アジャイル デベロップメント ―組織を成功に導くエクストリームプログラミング (THEORY/IN/PRACTICE)

アジャイルサムライ−達人開発者への道−

アジャイルサムライ−達人開発者への道−

前職の開発業務はウォーターフォールだったのですが、ずっとアジャイルの本を読んでいました。どういう風に進めていけばプロジェクトをうまく進められるかを知りたくて読んでいた感じです。

最近、死んだいや生きてるいや息してない…という感じで話題になっているアジャイル手法ですが、当時はまだ一般に認知の低い手法だったので、関連書籍にはアジャイル手法についての解説だけでなく、アジャイル現場に導入するために「周りの人達をどう説得するか」みたいなことが書いてあることも多くて、その辺もいいと思います。

現職の開発環境やプロジェクトの進め方に不満があって「ちくしょう、転職だ!」と感じている人は多いかと思いますが、例えば「このツールよりあのツールを使った方がもっと効率よく進められるのにな~」という思いがある人なら、「あのツールが便利だから導入しませんか?」と周りに働きかけてみて、それが通れば転職しなくても仕事をもっとハッピーにできるかもしれませんよね。そういった意味では、どんな企業で開発していても読んでおけば役に立つ気がします。

リファクタリング・ウェットウェア ―達人プログラマーの思考法と学習法

リファクタリング・ウェットウェア ―達人プログラマーの思考法と学習法

プロダクティブ・プログラマ -プログラマのための生産性向上術 (THEORY/IN/PRACTICE)

プロダクティブ・プログラマ -プログラマのための生産性向上術 (THEORY/IN/PRACTICE)

ウェットウェアとは「人間の脳や思考方法」を指す言葉だそうです。学習・思考法の改善について取り上げた本で、初心者から達人に至るまでのヒントが示されています。

具体的には、右脳・左脳における思考方法の違いや、人間の脳のクセ(認知バイアス)、それらを踏まえた効率的な学習方法や集中力を高めるための方法などが紹介されています。

また、プロダクティブ・プログラマでは生産性を上げるための方法論について取り上げられています。熟練のエンジニアの持つ様々なテクニック(コマンドライン正規表現、自動化)についての紹介や、テスト駆動、オブジェクト指向の正しい設計方法、メタプログラミング、といったプログラミングの少し深い領域の内容について解説されています。これは「仕事の方法を変えてもっと自動化しよう」という意識のきっかけにもなった本だと思います。

直接技術的な情報を書いているわけではない書籍って、仕事に迫られることもないのでなかなか手が伸びないかもしれませんが、逆に言うとこれらの書籍に書いてあることは技術的な流行の移り変わりがあっても劣化せず、広い分野で長きに渡って価値を持つ書籍だと思うのでおすすめしておきます。

改訂3版基礎 Ruby on Rails (KS IMPRESS KISO SERIES)

改訂3版基礎 Ruby on Rails (KS IMPRESS KISO SERIES)

  • HerokuではじめるRailsプログラミング入門

HerokuではじめるRailsプログラミング入門

HerokuではじめるRailsプログラミング入門

RailsによるアジャイルWebアプリケーション開発 第3版

RailsによるアジャイルWebアプリケーション開発 第3版

この辺は自分がRailsの勉強をしていたときに読んでいた書籍ですが、Railsはバージョンアップが早いので改定版などがあるものはいいですが、最新の書籍を調べて購入した方がいいかと思います。あくまで参考程度に……。

◆やっておけばよかったと思うこと

Railsチュートリアル

自分は説明書を読まずに使いだしてしまう方なので……Railsも一通り触ってからドキュメントを見て、チュートリアルの存在にかなり後になってから気付きました。(先に出てきた中村さんはチュートリアルやってから入社したからえらい……)

Railsって機能がめちゃくちゃ多いので、前述のようにRedmineプラグインとか作ったりして、一通り使えるようになったつもりでいても、全然知らなかった機能がいっぱいあったので、先にチュートリアルで体系的に学んでおいた方がよかったなーと思います。

■まとめ

SIerとWeb系における開発業務では求められることが異なる部分が多く、転職したくてもなかなか内定を取れないという方も増えているので、転向を目指す方の参考になればと思います。

それぞれ必要とされるスキルや適性は違うので、向き不向きもあり、転向すれば必ずうまくいくというわけではありませんが、常に情報収集をして業界の動向を追いかけること、行きたい方向を定めて自分のレベルの底上げを図っていくことが、自分の望むキャリアを築いて行く上で、とても重要な行為なのだと思います。


paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。

↓詳しくはこちら
paiza.jp

そして、paizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。
paiza.jp
スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。

ITプログラマ・エンジニア向け転職・就活・学習サービスのpaiza


プログラミング入門講座|paizaラーニング

PHP入門編Ruby入門編Python入門編Java入門編JavaScript入門編C言語入門編C#入門編アルゴリズム入門編