CodeIQで転職するまで

CodeIQで転職するまで。まだ転職してないけど。

06/??

いろいろあって転職したいと思うようになる。

06/22(Sat)

「ウチに来ない? / JavaScriptナンプレに挑戦」を解く。

06/29(Sat)

「ウチに来ない? / JavaScriptナンプレに挑戦」の2回目を解く。
1回目は特定の関数の中身を書くだけだったのだけど、2回目はソースコードすべてを書き直した。

06/30(Sun)

JavaScript / エラトステネスの篩(ふるい)」を解く。

07/02(Tue)

オファー来ないんだけどCodeIQさん(´・ω・`)ショボーン
「ウチに来ない? / JS:パスワード強度判定」を解く。

07/03(Wed)

JavaScript / 黒い正方形と45度傾いた赤い正方形」を解く。

07/04(Thu)

2社からオファーキタ(゚∀゚)!!
「ウチに来ない? / JavaScriptナンプレに挑戦」でのオファーだった。


「【CodeIQ】HN様(本名様)の解答を閲覧した株式会社XXXXのXXXXさんがぜひお会いいただきたいとのことです」という件名でメールが来る。
内容は、

  • 何の問題を見てオファーを出したか
    • 基本的には「ウチに来ない?」の問題なのかな
  • その会社からのメッセージ
    • 会社の事業内容とか募集内容が書いてある
  • 面談の日程候補と面談者に関して
    • 面談の日程がいくつか提示される
    • その中から都合の良い日、時刻をすべて書く
  • CodeIQ事務局からのアドバイス
    • 面談当日は気軽に〜とか
    • 面談の日はスーツじゃなくてOKです〜とか

という感じ。
面談に行くかどうかと、日程・時刻を書いて返信する。
ところどころに挿入される、「ささなんとか様」が若干笑いを誘う。


返信後、職務経歴書のようなものを書いてアップロードするようお願いされる。
とりあえずMarkdownで書いてアップロードした。経歴とか書いたこと無かったからなかなか面倒だった……


ちなみに、メールを返信せずに放置すると再度ご案内される。


2社とも興味があって、新潟から東京に何度も向かうのは避けたいので1日にまとめられないかお願いしてみたところ、ちゃんと1日にまとめて面談できるようにしていただいた。


以降、やり取りはCodeIQ事務局を通して行われる。

07/12(Fri)

「ウチに来ない? / JS:パスワード強度判定」の2回目を解く。
「メタメタしている」コードになった。らしい。

07/16(Tue)

「言語不問 / じぇじぇじぇなコードを書いてくんろ!」を解く。
JavaScript / はてなインターンの課題を解いてみよう」を解く。
「MongoDB / MongoDBでイカせんべいゲット」を解く。

07/18(Thu)

「言語不問 / じぇじぇじぇなコードを書いてくんろ!」の2回目を解く。
少しマシなコードにした……記憶がある。


1社からオファーキタ(゚∀゚)!!
「ウチに来ない? / JS:パスワード強度判定」でのオファーだった。
ジャバだったし、雰囲気的に合わなそうだったのでごめんなさいをした。

07/19(Fri)

2社に面談に行く。

07/20(Sat)

JavaScript / はてなインターンの課題を解いてみよう」の2回目を解く。
コードはCodeIQの「はてなインターンの課題を解いてみよう」を解いたよ - 四角革命前夜に書いたようにした。

07/23(Tue)

Ruby、その他 / 複数書式が混在するログをやっつける」の1回目、2回目を解く。


「電子回路 / 女子にも優しい電子回路入門」を解く。
抵抗の読み方は辛うじて覚えていた……みたい。


「言語不問 / じぇじぇじぇなコードを書いてくんろ!」の3回目を解く。
コードは「オラにじぇじぇじぇなコードを書いてくんろ!」のやつ - 四角革命前夜に書いたようにした。

07/24(Wed)

1社からオファーキタ(゚∀゚)!!
「ウチに来ない? / JS:パスワード強度判定」でのオファーだった。


この辺りから夏の暑さ + 3社の調整 + 現職がリリースに向かっていて大分疲れてくる。

07/25(Thu)

「言語不問 / じぇじぇじぇなコードを書いてくんろ!」の4回目を解く。
さっきと同じくコードは「オラにじぇじぇじぇなコードを書いてくんろ!」のやつ - 四角革命前夜に書いたようにした。

07/29(Mon)

「ウチに来ない? / JS:島の多いエーゲ海」を解く。
Ruby、その他 / 複数書式が混在するログをやっつける」の3回目、4回目を解く。
「わーいTagomoriStreamだー」とか言いながらCodeIQの「複数書式が混在するログをやっつける」を解いたよ - 四角革命前夜に書いたように実装し直した。

08/05(Mon)

2社に面接に行く。
数年振りにスーツを来たのだけど、暑くて死ぬかと思った。
ついでに、完全にネクタイの絞め方を忘れていた。

08/06(Tue)

1社に面談に行く。
知り合いの居る所だったのだけど、自分には合わなそうと思いごめんなさいをした。


1社から内定をもらう。
ついでに、「おめでとうございます!」と祝福してもらう。

08/08(Thu)

1社から内定をもらう。
ついでに、「おめでとうございます!」と祝福してもらう。

結果

結果として、JavaScriptを書いて欲しいという1社に行くことに。
CodeIQではほぼJavaScriptしか書いてないのだけど、1社からはLAMPを頼まれたり、もう1社からはCoffeeScript + PHP/Ruby/Perlを頼まれたり。
JavaScriptのコードを見て、これなら他の言語も十分書けるだろうと期待されたのであれば、それはそれで喜んで良いことなのかもしれないけど……


とりあえず、がんばって書いたPHPユニットテストExcelに書き直すというような作業は、面談を何度かした感じでは無さそう。Excelあまり使わないようだし。

いろいろ

4社からお声がけいただいた訳だけど、どうなんだろう多いのか少ないのか。
逆にJavaScriptしか書いてないから、JSerを必要としていないところからはお声がかからなかったと解釈するべきなのかなんなのか。
てかまあ、数が多い少ないで良い悪いって訳でもないし気にすることないのか。


面談の時に「若い」と言われたのがちょっと気になっていて、そんな若いかなーと思ったことと、「若い」という点を評価の一つとしてとらえられてるのかなーと。
評価の一つとしてとらえられてるのだとしたら、声をかけてもらえるのは若い今だけなのかなあ……とかね。


開発環境はかなり良くなりそう。

からMacBook Proになるみたいなので、家で趣味のコード書いてるときの開発環境が再現できそう。


いいけど、やっていけるのかなあ、怖いなあ。
良い環境ということはそれなりにいろいろと要求される訳だし。
スキルが趣味レベルでしかないから、通用しなさそうな気がする……
とはいえ、逃げ道なんて無いからやるしかないのだけど。


ふむー。

Gruntでlivereloadをする

Gruntでlivereload出来るらしかったので、試してみました。
jadeとstylusのファイルを監視してもらって、変更したらコンパイルとlivereloadでの更新をしてもらうという感じです。

package.json
...
  "scripts": {
    "postinstall": "bower install && grunt bower:install",
    "start": "grunt"
  },
  "devDependencies": {
    "bower": "~1.2",
    "grunt": "~0.4",
    "grunt-cli": "~0.1",
    "grunt-bower-task": "~0.3",
    "grunt-contrib-connect": "~0.5",
    "grunt-contrib-jade": "~0.8",
    "grunt-contrib-stylus": "~0.8",
    "grunt-contrib-watch": "~0.5"
  }
...

こんな感じで書いておきます。
grunt-bower-taskでライブラリの位置を移動する必要が無い場合はモジュールと、postinstallの&&以降が要らないです。
grunt-contrib-livereloadが必要、と書いてあるページもあったのだけどインストールしてみたらdeprecateだよ〜watchに統合したよ〜みたいなことが書いてって、watchだけでいいみたい。

Gruntfile.coffee
module.exports = (grunt) ->

  grunt.initConfig
    bower:
      install:
        options:
          cleanup: true
          install: true
          layout: (type, component) -> '..' # project root dir
    connect:
      server:
        options:
          port: 3000
          base: '.'
    jade:
      compile:
        files:
          'index.html': ['jade/*.jade']
    stylus:
      compile:
        files:
          'index.css': ['styl/*.styl']
    watch:
      options:
        livereload: true
      jade:
        files: 'jade/*.jade'
        tasks: 'jade'
      stylus:
        files: 'styl/*.styl'
        tasks: 'stylus'

  grunt.loadNpmTasks 'grunt-bower-task'
  grunt.loadNpmTasks 'grunt-contrib-connect'
  grunt.loadNpmTasks 'grunt-contrib-jade'
  grunt.loadNpmTasks 'grunt-contrib-stylus'
  grunt.loadNpmTasks 'grunt-contrib-watch'

  grunt.registerTask 'default', ['connect', 'jade', 'stylus', 'watch']

  return

connectとwatch便利だね。

jade/index.jade
script(src="//localhost:35729/livereload.js")

jadeのファイルのどこかに上記を入れておく必要があります。
これもgruntなんちゃらを使えば、開発中だけ埋め込むとかできると思うんだけど、まだ調べてない。

使う

$ npm install
$ npm start

これでライブラリのインストールと監視は完了。
あとは好きなように編集すればブラウザが勝手に再読み込みされるよ!


参考:
http://www.slideshare.net/sakunyo/jscafe-v
http://qiita.com/mizchi/items/1d10874dc0956d30fd92


追記:
せっかくjadeなので以下のようにしました。

jade/index.jade
doctype 5
html
  head
    ...
  body
    ...
    include _livereload
jade/_livereload.jade
if process.env.NODE_ENV !== 'build'
  script(src="//localhost:35729/livereload.js")


これで、ビルドするときに気をつけてNODE_ENVにbuildを指定してコンパイルすればlivereloadのコードが含まれない形でjadeがコンパイルされるので、普段の開発時はlivereloadが効いて良いのではないかなーと思います。