gakkie プログラミング 備忘録

tech::expert(現tech camp) 45期

35以上続けるために意識すること

  • まず、引数チェック、状態チェックは必ずやれ。コードが語る、 →悲惨なバグやメンテナンス性の低下はそういった自分の意図の表明を横着したコードから起こり始める。 「俺はこれをやる、だからこの機能を呼び出すならこういう状態にした上でこういう情報を渡せ、 じゃないならやらない」とはっきり言え。もしこの辺を冗長だと考える同僚がいるならもう辞めたほうがいい。

  • 引数チェックや状態チェックのコードで画面の半分が埋まったならそのコードは設計がおかしい。

一旦手を止めてよく考えろ。一つの機能を動かすのにそんなに引数がいるのか、そんなにチェックする状態が多いのか、そしてそれらは本当に必要か検討しろ。

  • テストコードは絶対に書け。テストコードが書けない技術は絶対に使うな。

意味のあるテストが書けないならやめたほうがいいという輩もいるが、とにかく意味があろうとなかろうと書け。 引数にこれを入れたらこうなる、こういう状態でこういう事したらこうなる、というお前の意図はとにかく示せるだけ示せ。

だいたいこの辺を横着したやつは翌年酷く後悔するか、そこのメンテを担当した同僚を攻撃している。

参考記事(いつもありがとうございます)

anond.hatelabo.jp

Java 例外処理

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        System.out.println("ようこそ\n数字を入力してください");
        String s = new Scanner(System.in).nextLine();
        //i = Integer.parseInt(s);
        //System.out.println("入力値:" + s);
        try {
            //例外が発生する可能性のある処理
            int i = Integer.parseInt(s);
            System.out.println(i);
        } catch (NumberFormatException e) {
            //例外が発生した場合の処理(例外が発生しなければ行われない処理)
            System.out.println("ちゃんと数字を入力してください!");
        }
    }
}

Javascript 無料で見れるおすすめ参考書

JavaScript Primer 迷わないための入門書

  • ECMAScript 2015以降をベースにして一からJavaScriptを学べる書籍
  • プログラミングをやったことはあるが、今のJSがよくわからないという人向け、 今のJavaScriptアプリケーションを読み書きできるように書かれている。

200725 初版

CSSに困った時に使うサイト

Webパーツ屋

パーツ単位で記載しているので実践的なCSSの参考になる。

CSSでロゴのようにサイズが異なる画像を美しく揃えて配置するスタイルシートの実装テクニック

CSSで困ったときに頼ったサイト一覧

Find the first non-consecutive number

問題

  • 連続していない配列の最初の要素を見つけること
  • 連続していないということは,配列の前の要素よりも正確に1つ大きくないこと
function firstNonConsecutive (arr) {
  //初期化i=0、要素数-1がiより大きい場合が真の場合以下をくり返す。最後にiに1を足す。
  for(let i = 0; i < arr.length - 1; ++i){ 
    //index番号 = 値ではない場合、値を返す。
    if (arr[i] + 1 !== arr[i + 1]) {
      return arr[i + 1] //arr[i + 1]
    }
  }
  return null
}

いつもありがとうございます。

Find the first non-consecutive number

【スキルの棚卸し】未経験から受託企業に入り1年経ったので、学んだスキルを全部書いてみる

はじめに 

2019年7月にキャリアをスタートさせました。 Railsエンジニアとして1年でいろいろなことを学んできたので、簡単にまとめてみます。

いろいろなキャリアの積み方があるのでどれほど成長できてるのかは不明ですが、ほんの一例としてご参考ください。

経歴

・調理士学校卒  パソコンには一切触れず ・レストラン、結婚式場で5年勤務  パソコンには一切触れず ・2018/10〜 某エンジニアスクールで学習開始 ・2019/01〜 卒業 ・2019/05〜 家庭の事情があり、ようやく就職活動を始める。 ・2019/07〜 就職 ・2020/7 現在(2年目)

1年で学んだこと

1)技術関連

Ruby/Rails

入社してから4ヶ月くらいは毎日触っていました。 入社当初よりだいぶ読むのに抵抗が無くなったなと思ってましたが、別PJに移ると、同じRailsでもすんなり読めない箇所が結構出てきたので、まだまだ甘いんだなと痛感しました。

要件を機能にまで落とし込むこと(ステータスを持たせるべきか、ステータスの種類としてどれを選ぶべきか等)非常に苦労した覚えがあります。 byebugを使ってどんなデータが入っているか確認する癖はここでつきました。 他にはwebとスマホでも使うようにするためUIとUXを分けて考える必要があったため非常に勉強になりました。 特にスマホは画面が小さいためUIのでデザイン設計は苦戦しました。

業務フロー的に機能の設計〜開発を担当し、お客様と何度も要件を擦り合わせ、完成後本番環境に移行した後もしばらくはバグ対応などで苦労しました。

ステージング/本番環境へのデプロイ

機能実装をして毎週のようにデプロイ作業を行なっていました。 本番環境でなぜか動かないなどの現象が起き必死てバグ修正をしていました。 rails assets:precompileなどを忘れてただけということがありました。

SQL

必要なデータを調べたり、お客様からの要望で欲しいデータを集める時に使いました。 本で学習することも大切ですがsqlに関しては現場で書くことが一番身につく方法だと思います。

Git

チームでのgit開発方法について学べました。スクールではGitHubGUIを使っていたためCUIには抵抗がありましたが、使っていくうちに慣れました。

Java

スクリプト原語の他に1つコンパイル言語を学びたい理由でJavaを始めました。 PJにもアサインされここでは簡単な機能実装や保守を担当しました。

2)顧客対応,スケジュール管理

タスク/スケジュール管理

お客様の要望の全てを、Googleスプレッドシートで管理したりエクセルの使いかたはここで学んだ気がします。 Googleスプレッドシートを爆速で活用するための基本&応用の関数10選

タスク進捗、WBSGoogleスプレッドシートで管理 そもそもWBSとは?から学びました。 結論非常に苦労しました。WBSを書くにはスタートからゴールまでわかっていないと書くことができないので。

[補足]次の1年でやりたいこと

今後学びたいスキルを書いていきます。 開発に力を入れたいです。

※ アドバイス等あれば嬉しいです。

Rails

基礎力が低いことを通感しました。 原点に戻って、基礎からサッと復習したいなと思います。 Ruby on Rails チュートリアル プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで 現場で使える Ruby on Rails 5速習実践ガイド

社内で書かれてるコードを読むのも勉強になるので、自社のPJのコードを積極的に読んで行きたいと思います。

JavaScript

実務であまりJavaScriptを触っておらず、エンジニアとして結構な弱点だと感じています。 まずはじっくり生JavaScriptに慣れていこうと思います。(今後の需要を考えてVueやReactではなくTypescriptを学びたいと思っています。)

開眼! JavaScript――言語仕様から学ぶJavaScriptの本質

改訂新版JavaScript本格入門 ~モダンスタイルによる基礎から現場での応用まで JavaScript Primer まずはこの辺りを参考にする予定です。

IT基礎

知識不足を日々感じます。 まずは基本情報でIT基礎を網羅的に頭に叩き込みます。

その後Linux SQLあたりも、王道めな技術書をざっと読んで早く頭に入れてしまいたいです。

チームリーダー

チームをマネジメントしてPJを成功に導くと経験、 書くメンバーのスキルを把握し適切なタスクを振り分けるスキルを身に付けたいです。

突破力

ググり力は上がりましたが、基礎知識不足のせいか諦めて社内の人を頼ることも多々ありました。 ベースの力をつけるのはもちろん、その上で分からないことも粘り強く最後まで諦めないようにして、突破できる力をつけたいです。 ただ仕事なので、これ以上無駄だと判断したらタイミングよく見切るクセもつけたいです。

なるべく意識してるのですが、この境目がなかなか難しいです。