脱SES業界!Web系開発に行く前に勉強するべきこと!【スクラム開発編】

この度、SES業界から自社系Web開発企業へ転職が決まりました。 新しい会社でお荷物にならないよう勉強しておこうと思ったのですが、何勉強しておこうかなっと。。。

技術的なことももちろん必要ですが、SES業界とWeb開発業界で最も違うのは、開発手法なのかなと思った次第です。

SES業界では納品期日が重要視されるため、要件を満たすための機能を洗い出し、期日内に完成させるために必要な人員を決定する『ウォータフォール』での開発が一般的である。

しかし、このウォータフォールの開発は、大体の現場では機能しない。ウォーターフォールは、正確な見積もりができて、初めて機能するからである。

エンジニアはエスパーではない。今までの経験から、1つの作業にかかるであろう工数を予測しているだけである。例えば、1ページに費やす工数を機能の数や複雑さなどからざっくりn人日っと言った感じである。

そのため、最初の見積もり段階ではリスクを入れてコストを出すのが一般的だが、他社に取られる可能性があるため、費用を抑えて提案しないとそもそも発注をもらえないこともある。

その結果、見積もりどおりにプロジェクトが動かず、炎上案件となってしまう。他にも失敗する要因はあるが、ここでは割愛する。

本記事では、スクラム開発はどうなの?っと言う視点で記載していく。

スクラム開発とは

f:id:shinji-tec:20210221173921j:plain

『スクラム』の語源を気にしたことはあるでしょうか。ラグビーで使われている用語で、小競り合い『小競り合い』『柵を巡らす』とっ言った意味があります。

しかし、大事なのは肩を組んで相手に負けないよう『一致団結する』様から『チームで目標を達成する』という意味で使われています。

スクラム開発では、この『チーム』が肝となります。今のチームがどれくらいの力を持っているのか、良い点はなにか。悪い点はなにか。それを解決するためにはどうすればよいか。このような質問を、短いスパンで定期的に行い、チームをブラッシュアップさせることで、認識の齟齬を減らし、効率の良い開発ができるようチームが『成長する』ようにします。

スクラム開発の進め方

f:id:shinji-tec:20210221174551j:plain

スクラム開発では、1週間や2週間といった、短いスパンを1サイクルとして開発を行います。このサイクルを、スプリントといいます。プロジェクトによりますが、その中で設計から開発、試験、評価などが行われます。

ウォーターフォールのように、すべての要件に対してすべてを見積もることはありません。そのため、納期を持つプロジェクトでは、スクラム開発は機能しません

このときに大事なのは、評価、振り返りを行うことです。そして、振り返りには必ずKPTなどの基準を設けるようにすることです。

KPTは、Keep(継続)/Problem(問題)/Try(試み)の頭文字を取ったものです。今回のスプリントで継続すべきこと、問題に対する解決策、次のスプリントで試すことを振り返ります。

記憶が新しい短いスパンで振り返りを行うことで、チームの成長を促します。

スクラム開発におけるエンジニアの役目

f:id:shinji-tec:20210221200604j:plain

スクラム開発では、以下の役割を持ったメンバーでチームが構成されます。

  • スクラムマスター
  • プロダクトオーナー
  • 開発者

ここでは、スクラムマスター、プロダクトオーナーの役割は省きます。

開発者の役目は、スプリントでやると決めた作業(スプリントバックログ)をこなすことです。 そして、振り返りができるようKPTなどの指標をメモしておくと良いかもしれません。

まとめ

  • スクラムは『チーム』が『目標』に向かって『成長』するためのもの
  • 成長するために、短い間隔で振り返りを行う
  • 『納期』が明確に決まっているプロジェクトでは、スクラムは機能しない

【書籍】いちばんやさしいアジャイル開発の教本

1. アジャイル開発は、失敗、反省の連続である。

アジャイル開発は、成長することを前提としたフローとなっている。成長するには、短いスプリントでPDCAサイクルなどを回し、「反省する」ことを大事にしている。

アジャイル開発では、1サイクルを回すのに3週間、短いところだあと、1週間のスプリントで設計からテストまで行われる。この1サイクルごとに、反省会が行われ、良い点、悪い点のブラッシュアップを行い、改善するように動くようにしている。

2. 「論より証拠」で、より良いものを作る

ここで言う論は要件や設計、証拠は実際に作成されるシステムを指しています。ウォーターフォールでは、まずシステムの1から10までの要件定義、設計を行い、開発、テスト、リリースと一流れに沿って開発が行われます。

しかし、要件定義や設計で時間を取られることが多く、システムのもとになる開発、テストの期間が少なくなることが往々にしてあります。更に、開発し、実際にできたものを触って初めて、足りないものや余分な機能というものがわかってきます。

アジャイル開発では、要件定義から実施するものの、そのボリュームは必要最低限に抑えて実施されます。先にも述べたように、1周間、3週間と短いスパンで要件からテストまでを行えるように分割して開発を行います。

早いスパンで開発することで、実際に動くものを確認することができ、早い段階で修正をすることが可能となり、余分な機能の作り過ぎや、足りない機能を早期発見することができるのです。

3. ウォーターフォール?アジャイル?そもそも比較するのが間違い

「2. 「論より証拠」で、より良いものを作る」の記載は、アジャイルの良い点をベースにお話をしました。

しかし、ウォーターフォールアジャイルはそもそも得意分野が異なっているため、比較すること事態が誤りなのです。

具体的には、アジャイルは不明確な要件が多い場合に、作りながら修正を行うことを得意としているのに対し、ウォーターフォールは、要件が明確に決まっている場合に設計を行い、開発を外注するといったことが得なのです。

結論、プロジェクトによって使い分けれることができればよいのです。しかし、まだアジャイルでの開発は浸透しておらず、不明確な要件が多いにもかかわらず、昔からあるウォータフォールでの開発が行われているのです。

そして、不明確な部分に対して、工数をかけて設計、開発と行ったが、できたものを触ってみると、あれも足りない、これも足りないっと、ずれた開発が行われるという悪循環が生まれているのです。

4. なぜアジャイルは浸透しない?

本書にも書かれていましたが、外注(請負、派遣など)が挙げられます。理由としては、これらの外注は成長ではなく、成果を上げることが目的となっているからです。

「1. アジャイル開発は、失敗、反省の連続である」にも記載しましたが、アジャイル開発は、失敗の繰り返しです。その失敗をしっかり反省し、次に生かしていく、『成長すること』が前提としてあります。

しかし、請負などは基本成果主義であり、発注元からすると、過程などどうでも良いのです。

もちろん、請負であってもアジャイル開発を実施することはできます。すべてのプロジェクトができていないというつもりはありません。しかし、大体のプロジェクトは、反省をするのではなく、発注元のお客様へ、どう説明するか(簡単に言えば言い訳)を考えることに時間を浪費しています。

また、外注の場合、ウォーターフォールで設計を先に行い、合意を得ることで、後で機能を追加してほしいと言われても、仕様変更として追加の契約をすることが一般的です(たまに現契約内で追加してと言われます)。この文化がある限り、下請け会社は基本ウォーターフォールで開発を続けていくことでしょう。

Macでよく使うショートカット

今回は、Macを使うにあたって、よく利用するショートカットキーをまとめていきます。

コマンド一覧

コマンド 内容 利用頻度 必要なアプリ
Comand + c コピー ★★★★★ -
Comand + v ペースト ★★★★★ -
Comand + 左 戻る ★★☆☆☆ -
Comand + 右 進む ★★☆☆☆ -
Comand + delete ファイルの削除 ★★★☆☆ -
Comand + option + esc アプリケーション強制終了画面の表示 ★★★☆☆ -
Comand + shit + 3 スクリーンショット(全画面) ★★★★★ -
Comand + shit + 4 スクリーンショット(範囲選択) ★★★★★ -
fn + F11 デスクトップ表示 ★★☆☆☆ -
control + option + Enter Window 最大化 ★★★★★ Magnet
control + option + 左 Window 左半分 ★★★★★ Magnet
control + option + 右 Window 右半分 ★★★★★ Magnet
Command + shift + v clipy 起動 ★★★★★ Clipy

アプリについて

Magnet

Magnet マグネット

Magnet マグネット

  • CrowdCafé
  • 仕事効率化
  • ¥500
apps.apple.com

MacでWindowの最大化や左寄せ、右寄せなどをできるようにするためのアプリケーション。 マウス操作はもちろん、コマンド入力でも実施することができるためおすすめです。

Clipy

clipy.softonic.jp

コピー履歴を管理してくれるアプリケーション。コマンド入力することでコピー履歴のWindowが表示され、選択するだけで過去にコピーしたものを再度使用することができる。

SierがWeb系で内定をもらうまでにやったこと。

2020年の11月ごろから転職活動をしており、(カジュアル面談だけを含む)約15社の内、最終面談を3社、内2社から内定をいただきました。 その時のやれること、やったことをまとめます。

これから転職を考えている方の参考になればと思います。

自己紹介

経歴

現在30代前半(2021年時点)で、大学から情報系(プログラム)を勉強をしていました。今のSES企業に入社後、AngularJSで業務用Webアプリケーションの開発を行いました。 SES業界でしたが、約4年間AngularJSに携われたことで、仕事をしながらWeb系の技術を身につけることができました。

スキルセット

スキル 年数
HTML 4年
JavaScript 4年
Angular 4年
Java 2年
PostgreSQL 2年
Shell 1年

フロントよりの技術知識があり、HTTPでAPIの開発、簡単なDB、SQLの作成もできます。 また、Linux系はもともと馴染みがあったため、サーバーの操作は割と得意です。

インフラ周りは弱く、ドメイン取得、HTTPS化、DBサーバやAPIサーバを構築できるくらいの知識です。

やったこと

履歴書、職務経歴書

最近は転職サービスに記載する箇所があるため不要の企業も多かったですが、提出を求める企業もまだありました。 自己PRや志望動機をまとめる必要もあるため、エントリーする前にまとめておくのが無難でしょう。

コロナの影響で、オンラインでの面接が一般的になりつつあるため、電子ファイルで作成し、メールで送付で問題ありません。 ※私はExcelとWordで作成し、PDFにして送信していました。

個人開発(ポートフォリオ)

smash-report.com

上記のようなWebアプリケーションを開発しました。

どんな技術を使って、どんなことに力を入れて、なんのために作ったのかなどを話せると、アピール、話のネタにできて良いと思います。 私の場合は、インフラ周りが弱かったため、自分で作ったアプリをAWSを使ってインフラ構築を行ったことを中心に話しました。

プレゼン資料の作成

面接時に自己紹介、自己PRをする際にパワーポイントでまとめて、プレゼン形式でやっていました。 主に志望動機や、個人開発に関する自己PRを多めにしました。

また、受ける企業が求めているスキルや人物像に対して、「私はこういうスキルを持っています」っと言えると良いと思います。

「転職」について調べまくる

当たり前のことなのですが、「自己PR」、「志望動機」などの作り方などを、大学のときにやった就職活動並みに調べました。 特に、企業が自己PR、志望動機を見て、何を判断しているのか、何を見ているのかなど、相手目線での「転職」について勉強しました。

上記を勉強するに当たり、「すべらない転職エージェント」の動画は、わかりやすくまとまっており、非常にお世話になりました。

www.youtube.com

また、この業界では適性検査やSP以外に、簡単なプログラミングのテストなどもあります。 SPなどと違って、試験内容は企業によってバラバラなため、「これをやれば大丈夫!」っというのはありませんので、日々の研鑽を忘れないようにしましょう。

逆に、よくある質問や逆質問など、どの企業でも聞かれるようなことは、しっかりと準備しておきましょう。 特に逆質問は、今後の企業方針だったり、会社で活躍している人の特徴といった、どの企業でも聞けるものから、企業公式や面談者のTwitterや経歴など、その企業でないと質問できない内容を網羅できていると良いでしょう。

利用したサービス、エージェント

Findy

findy-code.io

おすすめ度

★★★★☆

良いところ

  • 全体を的にシンプルで見やすい
  • 求人がみやすく、自社開発系の求人が多い
  • 連絡を取り合うための専用チャットが便利

悪いところ

  • 求人の母数は、他と比べると少なめ

使用した感想

Web系やAI、IoT系などの自社サービスをしている企業の求人が多かったです。 お互いに、いいねを贈ることでマッチングされ、専用のチャット画面で連絡していました。 チャットでは、文章だけでなく、ファイルを送信することもできます。

職務経歴書や履歴書を送るのに、メールを使う必要がなかったため便利でした。 殆どFindyさんを使っていました。

エンジニアHub キャリア

eh-career.com

おすすめ度

★★☆☆☆

良いところ

  • 求人がみやすく、自社開発系の求人が多い
  • 大手の求人も多数ある

悪いところ

  • チャットが必要最低限で、メールでのやり取りが必要
  • 外部のエージェントの求人がある

使用した感想

LINEやPayPay、クックパッドなど、大手の求人から、スタートアップ企業も含め 求人数は非常に多かったです。

ですが、チャットはメッセージを送れるだけの簡単なもので 企業によっては、メールで職務経歴書などをお送りする必要があります。

また、他のエージェントが求人を載せており 求人企業に連絡したつもりが、エージェントの営業と話すこととなり 一人でやりたい方は気をつけないといけない感じでした。 ※それをプラスと考える方もいらっしゃるかと思いますが、私としてはマイナス要素でした。

doda

doda.jp

おすすめ度

★☆☆☆☆

良いところ

  • ・・・

悪いところ

  • 登録後、いきなり電話がかかってくる
  • 興味がない求人からもオファーが多い

使用した感想

エンジニア系専門の求人ではないため、自社開発以外の求人が多かったり 現職がSierということもあり、他のSESの企業からのオファーが多かったです。

それ自体は悪いことではないと思いますが、私の転職希望とはマッチしなかったです。

type

type.jp

おすすめ度

★★★★★

良いところ

  • 面接に合格した後のアフターフォロー
  • 大手の求人も多数ある

悪いところ

  • チャットが必要最低限で、メールでのやり取りが必要

使用した感想

マッチングした後のメッセージ機能は、エンジニアHubと同じで 簡単な文章のやり取りのみとなります。

求人量は、自社開発だけでなくSESや社内SEなども豊富だったため 幅広く探したい人にはおすすめです。

また、他のエージェントではあった、「おすすめ求人だから受けてみて!」というのはなかったですが 1次面接が受かった後のアフターフォローは充実していたため 個人的には一番うれしい形のサービスでした。

【JavaScript】functionの生成方法による違い

Web系エンジニアを目指して転職活動をしているSierです。 とある企業様の課題を解いている際に、ふと疑問に思ったことを記事にしていきます。

前置き

その課題はVue.jsを使ったものでした。私はほぼ初めて触りましたが 明確にメンバとメソッドが分けられていてわかりやすい印象を受けました。

もともとCやC++から勉強した人間のため、Angularの書き方が一番しっくり来ていたのですが Vueもあまり変わらないなと思いました。

ふと、Vueのメソッド内で、ローカルで定義されているメンバへアクセスしたい課題がありました。 その差異、「this.hogehoge」みたいな形でアクセスできると思っていましたがエラーが起きました。 しばらく???となっていました。

原因と解決策

原因を色々調べていると、どうやらメソッドの定義の仕方が悪かったようです。

methods : { 'XXX' : () => { this.hogehoge} }           // NG
methods : { 'XXX' :  function { this.hogehoge } }   // OK

どうやら、アロー関数とそうでないメソッド定義によって、色々と異なるようです。 詳しくは以下の記事に記事に色々書いているため端折ります。 今回は、その性質の1つ、thisのスコープの違いのようです。

qiita.com