今年の弊社(合同会社フィヨルド)はアップダウンの激しい年でした。

今年前半は去年末にオフィスの引っ越し・リフォームでお金を使い過ぎてしまい、必死に仕事をしてました。

その後5月にプログラミングスクールのフィヨルドブートキャンプを有料化した後は順調に生徒数が増えて、会社のお金的には安定しました。

求人サイトを作りたい

2020年はプログラミングスクールの流れとしては「スキルはあるけど業務未経験の人」のためのエンジニア求人サイトを作ろうと思っています。

プログラミングをスクールなどで勉強してスキルは十分でも業務未経験というだけで足切りされてしまう場面が多いからです。

プログラミング未経験 + 業務未経験で採用してもらえないのは仕方ないです。勉強してくださいって話です。ただ、それとプログラミングを勉強してスキルを得た人が「業務未経験」という言葉で一括りにされるのは、求職者・企業の双方にとってもったいないとおもいます。

その求人サイトを見にきて、スキルも無いという人はぜひフィヨルドブートキャンプへという流れです😄

生活・働き方

フィヨルドに入ってからずっと自社サービスで食っていきたいと思ってやってきましたが、目標を達成しつつある今、自分はどういう働き方がしたいのか、どういう生き方がしたいのかを改めて考える必要があり、まさに今模索中です。

お仕事的には求人サイトを作った後も作りたいWebサービスは常にあるので作っていきたいです。生活の方ではどこか海外に長期滞在しながら働けないかなと考えています。

僕の趣味はプログラミングとゲームと最近は旅行です。夫婦で旅行が好きなので長期滞在含めて、海外多めでそこから仕事していく方法を模索しています。

まずは1月にマレーシアに行って様子を見る予定です。

Webプログラミング学習者にとってSessionという言葉は混乱を招きます。

特定の機能の名前であるSessionと英単語としてのSession(期間)がごっちゃになるからです。

経験者はコンテキストからどういう意味でSessionと言っているのかを判断しますが、学習者には区別がつきません。

人によって、初めてSessionという単語に出会う場面が違うため、Sessionの意味を聞いても自分が出会ったSessionとは違う意味を説明されたりします。一つ一つのわからない単語を調べていく真面目な人ほど混乱してます。

Sessionクラスというのがあったとして、誰でもそれだけでは何を意味してるのかわかりません。

英単語としてのSession

まずはSessionは英単語として 期間 という意味です。プログラミングの文脈では 一つの期間 ぐらいの意味で使います。この場合は特定の何かの機能を指しているわけじゃないので、別に仕様とかもありません。

HTTP Session

HTTPクライアントがRequestを送り、HTTPサーバーが処理を行った上でResponseを返す。この一連の処理をHTTP Sessionといいます。

これのことも単にSessionという場合があります。

WebアプリのSession機能

HTTPはステートレスなプロトコルなのでWebアプリは大抵何らかの状態を保持する機能を持っています。この機能のこともSessionといいます。

この機能はPHPの様に言語が持っている場合もありますが、基本的にはライブラリ・フレームワークがそれぞれ独自のものを持っています。(rubyだとrack)

このSession機能は内容の保存方法・場所を選べ、サーバーのファイルに保存したり、データベースに保存したり色々です。

特にこの保存場所がCookieであることがあるので、学習者の混乱は加速します😅

学習者としての覚え方

そのSessionが指しているのがHTTP SessionかWebアプリのSession機能なのかをまずコンテキストから判断しましょう。それ以外だったら大抵は英単語としてのSessionです。

Herokuミートアップ第0回〜第2回ぐらいにちょこちょこ登壇したり出席してるぐらいのHeroku好きな俺ですが、Herokuに月3万ぐらいかかってて、サービスには満足してるんですが、やっぱりTokyoリージョンじゃないと遅いのでAWSかGCPに移ろうかと検討してました。

最後にHeroku EnterpriseのPrivate Spacesを検討してみようとお問い合わせしてみました。

すると要するに最小プランでも月14万ぐらい + 現在のDyno料金アップ + 各種アドオン料金もアップということでした。(まずはお打ち合わせをなどのプレッシャーを回避しつつ聞いたところによると)

おそらくTokyoリージョンが使いたいためだけに使うものじゃないんでしょうね。

GCP行きます…

RubyMineのCode Styleとlintツールの設定がずれててイライラすることがあるのでこれは良い。

Image from Gyazo

5.2系では読み込まれてたんだけど、6.0.1にしたらデフォルトでは読み込まれなくなってるみたい。zeitwerkになったからかしら。

手動でrequireすればOK。

require "active_record/fixtures"

class NotificationMailerPreview < ActionMailer::Preview
  def came_comment
    id = ActiveRecord::FixtureSet.identify(:report_5)

    # ....
  end
end

フィヨルドブートキャンプ卒業生の@shita1112さんと、10年近くの縁の@rono23と、僕、machidaさんで代々木上原のゆうに感謝のお礼ディナーに行ってきました。

@shita1112さんは愛知から代々木上原に引っ越して来られたのでその引越し祝いでもあるんですが、先日@shita1112さんが投稿したいくつかのブログ記事がバズって、それを見てフィヨルドブートキャンプに来たという人が沢山いたのでお礼と、

@rono23は今年僕がサンクトペテルブルクRubyConfに行っていた時にかわりにオフィスに来てメンターをやってくれたのでそのお礼です。

Image from Gyazo

豚肉の何か。

Image from Gyazo

牛肉の土鍋。

Image from Gyazo

主に@shita1112さんは今年からフリーランスということで歴は長いが、働いている期間は短い@rono23を交えてフリーランスプログラマーとしてのサバイバル方法を話してました。

始める時ってそういう話助かりますよね。

「開発環境のユーザーのパスワードって何?」

みたいな情報の共有って面倒ですよね。any_login入れちゃうのがいいかも。

any_loginを入れると画面の左下にアイコンが出てきて、そこをクリックするとユーザーが一覧できるプルダウンメニューが出てきます。それを選択するだけでそのユーザーでログインできるというもの。

似た仕組みを用意してる人が多いとは思いますが、無いなら導入おすすめです。

igorkasyanchuk/any_login: Easy way to login as any user in system

認証ライブラリはDevise, Authlogic, Clearance, Sorceryなど色々対応してます。

Image from Gyazo

フィヨルドブートキャンプのアプリに入れてみました。

fjordllc/bootcamp: プログラマー向けEラーニングシステム

プログラミングスクール(フィヨルドブートキャンプ)で勉強している方へよくお話している内容なのでここに書いておきます。

わからない、ツラい

プログラミング(に限らず新しいこと)を勉強してるときに、

「何がわからないのかもわからない。ツラい。」

ってときがあると思います。

わからなくて1日何も進まなかったらとてもツラいと思います。1週間何も進まなかったらもっとツラいと思います。

この「何がわからないのかもわからない」というやつ。これはすごくツラいですが、プログラマーにとっては非常によくある状態です。

全然気に病むことはないです。

「ドンマイ、ドンマイ、締まっていこうー!」

ぐらいの感じです。

日々新しい技術を覚える必要があるプログラマーには頻繁におきます。 プログラマーとして働いている人はこの状態のプロです。

むしろ「これが飯の種になる」と考えている節があります。

この状態からの抜け出し方を知っていることが新しいことを自己学習し続けていけるコツなのかもしれません。

何がわからないのかがわからなくなったら

まず、昼間だったら温かい飲み物を淹れ、ゆっくり飲みましょう。夜だったらゆっくりお風呂に入って寝てしまいましょう。

そしてハチマキを締め直すイメージで問題に正面から立ち向かう覚悟を決めましょう。

何がわからないのかもわからないという場合、何かを見落としてるとか、大事なピースが一つ抜けてるとかそういう、あとちょっとの段階ではないということです。

自分には概要も見えないし、ピースも128ピースぐらい足りないということです。

僕はこういうとき、わかりたい対象をキーワードとしてたくさんググります。そのキーワードがちょっとでも入ってる本をたくさん買って読みます。片っ端から見てやるぞというイメージです。

とにかくそのキーワードが含まれている情報を浴びることを意識します。

そのキーワードについて様々な角度から書かれているものを見ているうちに共通点と差異からおぼろげながら輪郭が見えてくるはずです。

そうしたらもう糸口が見えているので、今まで収集した情報の中から学ぶべきものを学び、聞くべき人に聞いていけばわかってきます。自分が何をわからなかったのか、もうわかっています。

また、「理屈じゃない、触りまくって体で覚えなきゃわからない」というタイプの対象もあります。その時はひたすら触る時間を増やせば良いです。毎日習慣になるほど触っているといつの間にかわかっています。(ただそれを他の人に説明しろと言われてもできない)

一方、komagataプロは・・・

僕もプログラマーになってもう21年経ちますが、毎年一回はこれになってますね。

今年はBlender、去年はUnity、一昨年はkubernates・・・。

僕ぐらいのプロになると「はいはい、わからないわからない、ワロスワロス」ってなもんです😭

覚えるまでの苦労は何ら変わらないですが、

「今は全くわからないけど、あと1ヶ月ぐらいがむしゃらにこれをいじりまくればわかるはずだ。」

と思っているので、気持ち的にはだいぶ楽です。

というかホントはこんな状態になりたくないしサッとわかりたいですよ😭

奥さんの@y_komacoがオリジナルキートップの販売をBOOTHで始めました。

poop keytop - kmgt keytop - BOOTH

Image from Gyazo

Image from Gyazo

Image from Gyazo

間違いなくこれはクソですね。

奥さんは元ジュエリーデザイナーで彫金とかの学校も出てるので立体造形は得意ではあります。

ただ、他にも動物とか試作品がいっぱいあるのに何故第一弾がクソなのか、何故無駄にカラバリが多いのか、全てが謎に包まれていますが、凄い勢いで作っているので静かに見守りたいと思います。

人事リセットとは

イベントなどで経営者や現場の人間と意気投合し、是非にと言われて面接に行ったら人事の人には何も話が通ってなくて、

「履歴書・職務経歴書について説明してください。前職ではどのような役割を・・・」

みたいなこと言われて、

「え、知ってて誘ったんじゃなかったの?あれだけ盛り上がったのに無かったことになってる・・・?」

となって意気消沈し、一次面接を通過したのに、

「会社の雰囲気が思ってたものとちょっと違った」

という理由で応募者が二次面接を辞退してしまう現象を言います。

面接を受ける人も紹介する人も経営者も人事も全員不幸になってる気がする。これどうにかなんないの・・・?

人事リセットはネガティブなことか

そもそも面接というのはいかに良くない人を落とすかが目的で、その為には入社するべき良い人が多少落とされてしまっても仕方ないという考えもあります。

しかし、市場環境的に現在はプログラマー不足が深刻で完全な売り手市場です。経営者も現場(プログラマー・広報)も一丸となって経営課題としてプログラマーの求人をしているところに、一昔前の会社側が上からの「入社させてやる」目線の姿勢で対峙される場合があり、会社として凄い損失だと思うことがあります。

少なくとも求職者の事前情報を共有しておくことになんの問題もないはずです。

強い人事

一方で最近は人事が非常に強力だなと感じる会社も見られます。

プログラマーの業界で言うと、現場にも採用にコミットする人がいて、人事・広報の人とチームを組み、一丸となって現場のイベントにも参加し、求職中のプログラマーと人事の方が直接の知り合いとなり、面接から入社後のメンタル面のフォローまでしてくれる会社。そういう会社も増えてきています。

弱い人事

前述のように人事リセットが発生するような弱い人事だと強いプログラマーを逃し続け(しかも経営者がその状態を知らなかったり、知ってても口出しできないことも多い)、会社の力が弱まり続けていきます。

世の中のプログラマーのいる会社の人事の方にはAIによる履歴書のスクリーニングだなんだと言う前にすぐにでもできるこの点を改善してほしい。