(WIP)SI→Webの転身を決意して2ヶ月なのでつらつら書いてみる

tl;dr

SI→Webの転身を決意して2ヶ月経ちました。
15社ほどとお話しさせていただく機会がありましたので色々思ったことを書いてみます。

考えの変化

言語について

  • Ruby, Go, Python, Kotlinとか今時の言語使ってるとこに行きたい!と思っていた時代が僕にもありました

  • 言語ベースで会社選ぶのは愚かしい

  • むしろJavaとか(Spring boot)やPHPCakePHP)の方が会社(プロダクト)がある程度成長している傾向にある。
  • 会社が成長している = ある程度育成環境が整いがち、と言えないこともない。

会社について

  • いかにも古そうな大企業でも、実はテックカンパニーに転身しようと改革中だったりする。
  • スタートアップ企業の場合、採用される側からすると最初にエンジニアの人と話せるかは大きい。
  • スタートアップ企業はいくら事業内容や代表が魅力的でも、エンジニアに対して「この人とやっていけなそう」と思った瞬間候補から外れる。

こんな企業は嫌だったよ

  • スカウトなのにテンプレ文を送ってくる企業
  • メール段階で正しくIT用語を使えてない企業
  • 「話を聞きに行きたい」で行っているのに質問ばかりされる

アウトプットについて

  • アウトプットまじ大変
  • ポートフォリオを作るのは大変
  • そもそも、純粋にインプットする時間だけでも100〜200時間くらい必要
    • HTML&CSS 18時間(Progateから)
    • JavaScript 12時間(Progateから)
    • Ruby 8時間(Progateから)
    • Rails 60時間くらい?(体感)
    • GitやDockerなどの概念理解や操作手順取得 etc...

自己紹介(Markdownで書き直した)

はじめに


初めまして。
私はユーザー系SIerで勤務している社会人4年目、25歳の者です。

使っている言語はCOBOLで、メインフレームが担当システムです。
2018年にリリースしたピカピカの子です。

twitter.com

そんな僕は現在身を置いているSI業界から旅立つことを決意し、 新入社員の時に培ったサビサビのJava知識を礎としてステップアップ中です。

  このブログはその学習の記録を残していきたいと思います。
最初のこの記事では、まず自己紹介をさせていただこうと思っています。

 

IT業界への入社

僕は早稲田大学教育学部を2016年に卒業し、新卒でユーザー系SIerに就職しました。
文系出身、プログラミングなど全くしたことがないよという人がIT業界に入ることは珍しい話ではありませんが、僕があえてIT業界を選んだのは以下の理由によります。

  • 世の中を効率化してより良くしていくことに興味があった

  • 変化が激しくてワクワクできそう

  • チームプレーでものづくりするのが好き

 

また、その中でユーザー系である今の会社を選んだ理由としては以下の3点です。

  - 大企業なので安定しているし知名度もある

  • 親会社の関係で年収がいい

  • 1次受けなので上流工程ができる

 

正直なところ会社に入れればいいやと思っていただけだったので、会社の違いもそこまでわからなかったし、特にやりたいこともなかったので、完全に条件だけで選んで入りました。
(どうせ大企業入るなら家賃補助が出る会社にしとけばよかったと今は思ってます)

研修時代 〜プログラミングとの出会い〜

4月は親会社との地獄のような合宿がありましたが、幸いにも即現場配属ということはなく、1年目の8月までみっちりJavaの開発研修をやってくれました。

研修はめちゃくちゃ丁寧で、プログラミングの基礎であるアルゴリズム(条件分岐、繰り返し)から学び、JavaJSP/Servletデータベースと学んでいき、最終的にECサイト的なWebアプリケーションをチームで開発するというカリキュラムになっていました。

僕はというと、ド文系でしたのでアルゴリズムで既に詰んでいました。
まずn = n + 1がわからん。変数って何だよ。

大人しく営業やってりゃよかった。と早くも後悔しかけましたが、自分はコツをつかむのが遅いということは知っていたので、持ち前のクソ真面目さと負けず嫌いを発揮し、講師や同期に聞きまくって1つ1つ潰していきました。

 

実際にコーディングをする段階になるとすっかり染まりきっており、自分が作ったモノが動くということにすごく面白くワクワクして、本当にこの業界に入って良かったと思いました。

もっと良いロジックはないか、もっと読みやすいコードは書けないか・・・
ということを考えているときは、純粋に楽しかったです。

研修で心に残っているエピソードとして、ミニ課題として簡単な開発をするとなったときに、メンバーのコーディング能力が低く、かつ人も少ないチームのリーダーになった時の話があります。

リーダーとしてあるべき姿はわからないながらも、手が止まっているメンバーに対しての技術的なフォローと、成果発表に向けて必要な機能の優先順位づけと指示だしに徹し、必要な機能を実装することに成功しました。

日報に講師から「他のメンバーに対するフォローと割り切りがよかったです。実際の開発現場でもあなたのような空気を読んで動いてくれる人がいると周りの人は助かります。」

というコメントが寄せられたときはエンジニアの端くれになれた気がして、すごく嬉しかったです。

 

配属後

そんな長い研修時代にも別れを告げ、とあるプロジェクトに参画することになりました。
配属先ではIBM z/OSというメインフレームで作られた基幹システムの担当になりました。開発言語はCOBOL、DBは階層型です。

配属先や仕事にはこだわりがなかったので、どこでも頑張ろうと思っていました。

  システムテスト工程から参画したので、最初の仕事は実機テストでした。
(例に漏れず炎上していたので)テスト進捗は遅延しており、キャッチアップのために協力会社さんに混じりながらクソ寒いテストルームで黙々とテストをしていました。

要件も何もわからないままテスト仕様書に書かれた入力内容の通りに打ちまくり、テストケースを消化していく日々・・・

テストが終われば、エビデンスをPDF化してフォルダに格納。仕様書にテスト結果を書き、上司に回付して印鑑をもらいます。戻ってきたら穴開けてファイリング。(一生見ない)

あれ、2016年のIT企業だよね?

と、こんな日々が2年目まで続きました。

テストをしながらだんだん仕様や要件について理解していく中、僕には1つできるようになりたいことがありました。
それはエラーのトレースです。

 

うちの会社には、テストでエラーが出たら協力会社の人に丸投げをする人たちが結構いました。
具体的には、「このエラーについて、◯◯日の◯時までに原因とプログラムの修正箇所といつまでに直せるか報告してね。あ、類似点検もやっといてね。」 という感じのメールを送るだけで、自分で調べたりしないということです。

中身をろくに見ないで、協力会社に投げるということがひどく無責任な行為に感じ、エラーについてはソースコードを開いて自分で調べるようにしていました。

そんなこんなで2年目、3年目とキャリアを重ねていき、SIerではおなじみのスキルである、業務知識、エクセル資料作り、調整能力を身につけました。
 あと、離席するときはエクセルを読み取り専用にする力。

3年目ではついにシステムがリリースを迎えました。

エラーをちゃんと調べるという日頃の心がけが功を奏し、リリース後に障害が発生した際にも積極的に手を動かして原因究明に貢献することができ、部長から表彰してもらえたり、ボーナスを増やしてもらえたりしました。

仕事をしている中で、3年目のこの時が一番楽しかったですし、 こいつを無事にリリースさせるぞ!うおお!という使命感がありました。

(会社も一丸となってリリースを成功させようという一体感がありました。)

転職を思い立つ

入社以来担当していた案件の1つの案件のリリースを迎え、「これから自分は何やるんだろう?」という気持ちが芽生えてきました。

それはだんだん、「何がやりたいんだろう?」という至極当たり前の疑問になっていきました。
次第に会社を変えるという選択も視野に入れ始め、最近転職した友人に相談したところ、以下の某マニュアルを紹介されました。

jumpei-ikegami.hatenablog.com

 すげえ、当たってる。

シンプルにそう思いました。 

それと同時に、転職を本気で考え始めました。

まずは錆びついてしまっている実装スキルを高めるために、自分で勉強してみよう! と思いこのブログを立ち上げました。

 

さいごに

今は自己学習をしている最中ですが、実務に勝る経験はないと思っています。

正直1日でも早く、技術力をつけられて成長できる環境に身を置きたいです。

絶対会社に貢献してみせる自信はありますので、雇っていただける企業さま、よろしくお願いいたします!

 

 

Railsプロジェクトをデプロイするまで

AWS Cloud9でSSHキーを作成する

下の記事にわかりやすく書かれています。

qiita.com

Railsプロジェクトを立ち上げる

下の記事にわかりやすく書かれています。

qiita.com

Gitにpushする

github上にリモートリポジトリを作る〜githubにpushするの手順を実施すればOK

rails-study.net

Herokuにデプロイする

下の記事にわかりやすく書かれています。

HerokuにRailsアプリをデプロイする手順 - Qiita

こちらに書かれているが、productionでsqllite3ではなくpgを使うようにするGemfileの設定が必要。 Gemfileを変更したら忘れずに以下を実行する。

$ bundle install --without production

また、database.ymlと

Ruby on Rails学習記録⑧

インターネットにWebサービスを公開する。

 

デプロイとは

開発したソフトウェアをサーバに設置してユーザーが利用できる状態にすること。

オンプレミス ・・・ 物理的なコンピュータを設置して運用

→サービスの年商が100億を超えてきた時に話題にあがるかも

クラウドサービス ・・・ 仮想サーバーを使ったぶんだけ手数料を払って使用する。

 

Herokuを使う

 

Herokuについて

 

HerokuはPaas(Plarform as a service)と呼ばれるクラウドサービス。

もとも、Rubyのアプリケーションをホスティングするサービス。

PHPなど、他の言語にも対応

 

Paas

アプリケーション 開発者の担当

ミドルウェア Herokuが担当

OS Herokuが担当 

ハードウェア Herokuが担当

ネットワーク Herokuが担当

gitとは

ソースコードのバージョンを管理するツール  このフォルダでgit使うよという宣言が必要。 git add -A git commit -m "Initial commit"は毎回行う ルート直下のgitignoreに書かれたファイルはgitの管理の対象外

Heroku cliについて

Cloud9などからHerokuを操作するためのツール

cli (Command Line Interface)

devcenter.heroku.com

Ruby on Rails学習記録⑧

Seedsファイルを使った初期データの投入

フォームヘルパー

ストロングパラメーター

バリデート

ルーティングの設定

リファクタリング

 

bootstrapの導入

github.com

 

Installationに導入方法が書いてある。

 

railsのform_withメソッド formに関する記述を簡単にしてくれれる。

local:true h非同期通信を無効にする

 

ストロングパラメーター formから送信されるデータは信用ならないものなので

render

変数paramsにはformから送られてきたデータがはいる。

byebug

バリデートとかバリデーション フォームから送られてきたデータが正当化確かめるためのもの。

 

link_to 、メソッドはviewヘルパーのメソッドの一つ link toはハイパーリンクを<a>を作るテキスト。引数がURL、rails routes のprefixに_pathをつける。

 

通化はアンダースコアをつける

render 'アンダースコアをとったやつ'