2018年の振返りと今後に向けて

ヘッダー広告
スポンサードリンク

2018年を振り返って、感じたことをまとめておきたいと思います。
2019年は飛躍の年にしたいと考えているので、今回の反省を次回に生かします。

2018年の振返り

初めての大規模な機能開発

現在の現場に入ってから初めての大規模なシステム開発に携わりました。
プロジェクトとしては、生体情報を利用してログインするアプリのフェーズ2対応です。
開発した機能

  • アプリで利用するAPIの開発
  • 管理者が生体情報を削除する画面の作成
  • 削除処理された生体情報のIDを外部ベンダーへ連携して、実際のデータも削除するバッチ処理の作成

開発期間は、2017年12月頃〜2018年5月になります。

苦労したこと

  • 初めてユーザー企業と大きな案件を詰めるという経験をして、どのように進めていけばいいのか、また自分で決めていい範囲がわからず、要件の詰め方に苦労した。
  • 今回の開発では、アプリチーム、外部ベンダーなど開発関係者が多数いた。
    アプリ側でAPIを利用するために挙動を伝えたり、外部ベンダーとの通信要件的な部分を整理していくのが大変だった。
    外部ベンダーとの通信要件は自分が理解出来ていないSSLの部分だったので、消化できていないままなんとなくの理解で進んでしまっていた。(ここは後で問題となった)
  • オフショアと直接やりとりをしていたので、説明負荷がかなり大きかった。
    また仕様変更などを伝えるとなかなか理解してもらえず、すぐに対応してもらえないという辛さがあった。
  • リリース直前にSSLで接続できないことが判明した。
    SSLが何かを理解していない状態で進んでいたため、やっぱりそこで問題が発生した。

学んだこと(得たもの)

  • プロジェクトの進め方。要件の詰め方。
    ユーザーがなかなか要件を決めなかったので、その対処法を身につけた。具体的には、こちらから要件を具体的なフローや図を使って明確にしていき、詰めていくことが重要。
  • 利用者にわかりやすいAPIを作ることの重要性の理解
    今回のプロジェクトでは、既存のスマホサイトで利用しているAPIを展開する方針だったが、アプリに展開するには画面のレイアウトなどが適していなかった。
    元々のAPIが汎用性があるものではなかったのが問題だったので、わかりやすいAPIや様々な利用方法を想定したAPIを作成する重要性を理解した。
    また、APIをわかりやすくて文書化する難しさなど理解出来た。
  • 技術的な理解の重要性の理解
    外部ベンダーとの通信要件について、理解出来ないまま進んだのはよくなかった。
    しかし今回は周りに理解出来ている人がいない状況だったので、相談するにも出来なかった。ではどうすべきかという話だが、自分で前もって勉強すべきだった。今回は問題が見つかってから本を買って勉強したが、今後は事前に家で勉強するべき。
  • コミュニケーションの取り方。
    オフショアに仕様の説明することの難しさを実感した。どうしても伝わらないときにはコードで会話することが重要となる。また、仕様変更などが発生した際には、その経緯などを出来る限り詳細に伝えて納得感を持ってもらうことが重要。
  • 暗号化の知識
    SSLで躓いたことで、暗号化の仕組みに興味を持つことが出来た。
    本を読んで様々な暗号について知識を得ることができた。

    参考にした書籍

    [商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

    暗号技術入門第3版 秘密の国のアリス [ 結城浩 ]
    価格:3240円(税込、送料無料) (2019/1/2時点)


炎上プロジェクトを経験

人生で初めて炎上プロジェクトと言えるようなものを経験することができました。
プロジェクトとしては、PCサイトにある機能をスマホサイトでも利用できるようにする対応です。
開発した機能

  • スマホサイト用に画面の開発
  • スマホ用にAPIを作成

スマホサイトはSPAで開発しています。PCサイトはAPIを利用していないので、PCサイトのロジックをAPIにもコピーして作りました。
開発期間は、2018年3月頃〜2018年8月になります。

苦労したこと

  • 規模に対してスケジュールがかなりタイトだった。
    元々はPCサイトの画面をそのままスマホサイトに提供するというものだったが、スマホサイトに適した画面にしたことで、画面遷移が複雑になったり、APIを適切な単位に分けたりとしたことで、予定以上の工数がかかってしまったことが原因。結果的には予算的にも大赤字となった。
  • 障害が多発した。
    スマホサイトの開発をした経験がある人が少なかったので、例えばボタンをタップした後のローディング処理の漏れなどがあり、多くの障害対応を行った。
    特に一番苦労したのはブラウザバックで、画面遷移が複雑になったことで、ブラウザバックで多数の問題が発生して、リリースの直前まで障害対応を行った。

学んだこと(得たもの)

  • スマホサイト作成時の画面の設計
    スマホサイトでの適切な画面が何か考えることが出来た。PCサイトのままSPサイトにするのではダメで、スマホサイトでは情報量を減らしたり工夫しないといけない。画面を分割したりするには業務知識がないと適切な画面の判断が出来ない。
    このプロジェクトでは業務知識があったので適切な判断が出来た。
  • スマホサイトを作ることの難しさを理解した
    特にフロントエンドの難しさを痛感した。使いやすい画面遷移が作りやすい画面遷移という訳ではない。使いやすさと同時に作りやすい画面も意識したい。(使いやすさと作りやすさのバランス)
    もしくは設計でのデータの持ち方などを考えて作る。
  • スケジュール管理の重要性理解
    かなりスケジュールがタイトで仕様変更も多数発生している中で、毎日残業づくしの日々だった。スケジュール管理の重要性や、顧客からの要望をはじきかえす重要性を強く感じた。人生で一番辛い期間だったがスケジュールについて考える良い機会となった。

自社サービスの会社へ入社するための準備

以前にWeb系のスタートアップから声をかけられてから転職意欲が高まったという記事を書きましたが、それからはプライベートでなるべく多くの時間を勉強するように意識して行動しました。

参考:Web系のスタートアップから声をかけていただいた話

開発した機能

  • ボードゲームの対戦後の感想投稿機能
  • CMS的な記事投稿機能
  • 掲示板
  • 口コミ投稿
  • スクレイピングしてニュースを取得する

学んだこと(得たもの)

  • gitの基本
    以前までであれば、苦手意識がありましたが、今はあまりないです。が、一人で開発しているので戻しの方法などはすぐには出来ないので、そこは転職後にチーム開発を経験することで身につけたいです。
  • heroku、AWSなどの関連サービスに触れることが出来た。反面、AWSの設定の意味がわからないまま進んでいるので、どこかで整理したいです。

    参考にした書籍


  • テストコードの重要性の理解
    現在の現場ではテストコードを書く習慣がなく、リファクタリングもなかなか出来ないような環境ですが、テストコードを書くことで気軽にリファクタリングを出来るということがわかり、それがあるべき姿だよな。と当たり前ですが、理解できました。
  • サービスを作ることの難しさ(SEOやデザインなど含めて)
    システムを開発してリリースすることがゴールではなく、その後どのようにPVを集めるのか。リピーターを増やすのかという難しさを感じました。特にデザイン部分は専門ではないのもあり、自分で作っているにも関わらず気に入らないという課題があります。今後どうするかは検討中です。

    参考にした書籍


  • 学習する習慣の身につけ方
    私にとっての学習する習慣の身につけ方としては、Webサービスを開発することだということが分かりました。
    Webサービスを開発していくことでモチベーション高く勉強出来ているので、そこは今後も継続したいと思います。反面、具体的にどのような技術を勉強していくのか、身につけなければいけない技術を身につけるためにどのようなサービスを開発していくのかを考えて対応していきたいと思います。

転職活動開始

ある程度Webサービスの開発も形になったので、11月くらいから転職活動を開始しました。詳細については転職活動が終わってから別記事にしたいと思っていますが、転職活動で色々な方と会話させていただく中で、多くのことを考えさせられる良い機会となりました。
特に技術面で多くの指摘をされて、レガシーな環境なんだと改めて理解しました。
面接では技術的にバカにされているように感じてかなり悔しい思いもしましたが、そういう反応されてしまったらしょうがないと思い、次回の面接に向けて足りていないところを聞いたりしているところです。

SIでマネジメント的な部分をしてきた人がWeb系企業へ転職する際には、ポテンシャル採用になると思うので、いかに早くキャッチアップ出来るのかを説明できる必要があります。
SI企業でぬるま湯に浸かってきた人(私も含めて)には、思った以上に転職活動で苦戦するので焦ると思います。
転職が成功してから工夫した点も別記事に書こうと思いますが、普段から何を考えてどのように行動しているのかを見られることが多いと感じました。

2019年の目標

技術力を飛躍的に向上させる

2019年の最大の目標は、やはり技術力を大幅に向上させることです。
今身につけなくてはいけないと考えているのは以下のような部分になります。

  • 保守性を考えたり綺麗なコードを書くスキルを身につける
  • コードを書く速度を速くする
  • メモリなども意識した速いコードを書くスキルを身につける
  • OSSのコードを多く読む
  • gitを使いこなす。単純なコマンドだけでなく、戻しの方法やコンフリクトの解消方法など
  • dockerなどコーディングする際の周辺知識を身につける
  • 新しい技術を取り入れ始める
  • 新しい職場で中心人物になる

2019年は新しい目標を立てて2週間に1回は振り返りをして行きたいと思います。
Web系企業で働いている同じ年齢の方々がかなり活躍しているのを見て、悔しいので1日も早く追いついて、そして追い抜きたいと思います。
そのためには、定期的な反省と成長実感が重要だと思っています。
転職は決まっていませんが、新しい職場では中心人物となってサービスを作って行こうと思います。

フッター広告

スポンサードリンク



シェアする

  • このエントリーをはてなブックマークに追加

フォローする