節約:新卒入社から5年間23区内一人暮らしで1500万円貯金できた節約術

都内にあるインターネット関係の某社に新卒入社して平社員エンジニアとして5年間過ごした自分のエピソードを事例としつつ、節約と快適を両立する23区内在住独身男性のエクストリーム節約術をご紹介いたします。
地方の人が抱いているかもしれない、上京して東京でおしゃれ生活という幻想や、東京の生活費ってお高いんでしょという思い込み、東京の人って冷たいのかしらという不安が、吹っ飛んで行くんじゃないかと思いますので、参考にして頂ければ幸いです。

概要:東京で消耗するのもなかなか楽しい

  • 株を買い、親にも買ってもらう
  • 独身男は古くて狭い物件に住めばよし
  • 家賃交渉をする機会は逃さない(これは全国どこでも通用)
  • あえて自炊ゼロって決めちゃう
  • ポイントはカードの種類を絞って徹底的に貯める

解説

株を買い、親にも買ってもらう

株取引で儲けようという話ではなく、株主優待を頂く目的で株を保有しています。
都内に住んでいれば、松屋とか天狗、大戸屋など、自分の行動範囲に存在するチェーン店の株主優待(タダ飯券)がいくつも見つかると思います。

株主優待をもらうためだけだったら、そんなに株も高くないです。大戸屋だったら20万円ぐらいです。

ヤフーファイナンスで各社の株主優待も見れるので、気になるお店を検索してみてください。
Yahoo!ファイナンス - 株価やニュース、企業情報などを配信する投資・マネーの総合サイト

大戸屋の例: (株)大戸屋ホールディングス【2705】:株主優待 - Yahoo!ファイナンス

所有株数を増やしても優待券を沢山くれない会社もあるので、親にも株を買ってもらって優待券を譲ってもらっています。

私の場合は、毎年もらっていたお年玉をずーっと親に預けてほったらかしだったのですが、うちの親は使い込んだりせずに銀行に預金しておいてくれていたそうです(感謝!)。親は遥か昔に株を買ったことがあったそうで証券口座は持っていたので、溜めてあったお年玉で株を買っておいてもらった次第です。

株は富裕層だからこそできる技ってわけでもないです。

皆さんも、ひとまず何十万とか貯金を作って、実家に仕送りして株を買って貰うといいんじゃないでしょうか。証券口座を開く手間は手伝ってあげましょう

これは相当な節約になるので、ぼっち飯のときによく使います。その代わり、誰かと食事に行くときは、お金をケチらず、ちゃんとした美味しいものを食べた方がいいですね(笑)
食事以外の株主優待も色々あるので下記の書籍などを参考にして見て下さい。

独身男は古くて狭い物件に住めばよし

都内には昭和時代の四畳半風呂なし物件が3万円ぐらいで各所に残っていて、そういうアパートに住んでいるので、まずは最大の固定費である家賃をがっつり削減できています。

不動産屋では、家賃の何割かを手数料にするビジネスである都合上、3万円の物件はあまり表に出しませんが、「3万円ぐらいの物件ありますか」とこちらから聞けば、出してくれます。渋谷区とか世田谷区とか目黒区とかのオシャレっぽい区でも昔から住宅地だったところだと意外とあります。古くてもちゃんとリフォームしてあって実際はボロさはそんなに気にならないのも多いです。

風呂がなくても都内は銭湯が割と充実しているので問題はありませんが、ベストなのは近くにコインシャワーがある物件です。うちの近くのコインシャワーは、年中無休24時間営業していて、料金は3分100円で一旦停止もできます。テキパキと体を流したりシャンプーすることに慣れれば、風呂代で月3000円しか使わなくなります。夏は汗をかくので朝と夜1回ずつ行くこともありますが、年間通せば平均で1ヶ月4,000円ぐらいの出費にしかなりません。風呂付きの物件を探すと5万円超えてしまうので、相当お得です。さらにいいことには、面倒臭い風呂掃除は他人任せになり、とても快適です。あえて今流行りの言葉で言うと、アウトソーシングってやつです!

四畳半風呂なしの物件だと大体はトイレが共同だったりします。共同なので、掃除やトイレットペーパー交換は大家さんがやってくれて、めちゃめちゃ快適です。しかも、うちのアパートは一人しか住んでいないので実質的に自分専用トイレです。アウトソーシング万歳!

うちの賃貸契約は、さらに良いことに、共益費の中に水道代も含まれています。家賃と共益費を足して31,000円の入居契約でした。普通の都内一人暮らしだと家賃共益費と水道代で8万円ぐらいは払ってるはずなので、他の人より毎月4万5千円以上の余裕ができています。

あえて自炊ゼロって決めちゃう

自炊は節約になると思って頑張ると、たぶん、少なくとも食事の半分以上は自炊にする必要があって、それ以下だと、食材の在庫やらガス・電気代などで相殺されて節約にならないと思いました。独身で社会人になりたてだと仕事もプライベートも忙しくってそんなに自炊している暇と気力はないんじゃないでしょうか。

都内には弁当屋さんも沢山ありまして、よく使うのは、おかず4種が選べて550円の弁当屋さんです。なるべく野菜のおかずを選べば、外食で食事が偏ることもなくなります。

というわけで、自炊しないことに決めました。自炊なし風呂なし生活にガス契約は必要ないので、毎月3千円以上の節約になります。冷蔵庫も止めれば、電気代でさらに毎月3千円ぐらいの節約になります。合計で毎月6千円の節約です。これだけ浮けば外食や弁当に使う出費は気にならなくなります。

大家さんとは感じよく接し、かつ図々しさは忘れない

古い物件は大家さんがじいちゃんばあちゃんだったりすることが多いですが、うちも80を過ぎたおばあちゃんが大家さんで、とてもいい人です。
うちの大家さんは、アパートの廊下を挟んだ反対側に住んでいて顔を合わせることが多いんですが、ちゃんとこちらから挨拶をして愛想よくしているので、とても仲良くしてくれます。休みの日に家にいると出前をご馳走してくれたりご飯を作ってくれたりもするし、暑い時期はビールの差し入れとか、寒い時期はケーキとかチョコとか大家さんがもらった甘いものを(糖尿病なので)譲ってくれたりします。東京のぬくもりてぃに感動すると同時に、経済的にもとても助かっています。次に会った時には忘れずに「おいしかったです(またお願いします)」とちゃんとアピールします。
こちらもお世話になったお礼にお歳暮を渡したりするのですが、圧倒的ににこちらが得しています。大家さんに対しては本当に感謝の気持ちでいっぱいです。

家賃交渉をする機会は逃さない

大家さんと同じ建物に住んでいるので、家賃も手渡しですし、契約更新も話が直接できます。
廊下の電気を自主的に消していたら「電気代減ったわねー」と大家さんが言っていたので、「自炊しなくて水もほとんど使わないし、共益費減らしてもらうのも合理的じゃね?」と思って契約更新時に家賃交渉してみたところ、あっさり千円下げてくれました。次の更新のときも図々しく家賃交渉してみたところ、また千円下げてくれました。結局、今では年間2万4千円得していることになります。
麻布在住の会社の先輩も家賃交渉をして下げてもらったと言っていたし、交渉することには基本的にデメリットがないので、家賃交渉ができそうな場合は、した方が絶対いいと思います。

会社の福利厚生・貯蓄支援制度を最大限活用する

一例として私の勤務先の制度の話をすると、最大限に活用すれば毎年ほぼ28万円以上得することができます(ちょっと裏技っぽいんですが、実際はもっと得しています)。
勤務先によって様々あると思うので、各自で徹底的に研究・活用して欲しいところです。

ポイントはカードの種類を絞って徹底的に貯める

男なので、みみっちいスタンプカードとか面倒くさいのは基本的にやりません(笑)。定期的かつ高頻度に行く店だけはスタンプを集めますが、それ以外は効率が悪い上にカードの管理でストレスが溜まるのでやめました。

お店のカードとしては、東急線沿線に住んでいて勤務地にも東急ストアがあるので、東急ストアのポイントカード「TOP&」に絞っています(1ポイント1円として利用可能)。
TOP&カードを使っていると、ちょくちょく全品5%引きクーポンとかポイントラッキー券(2000円以上の買い物で100P)が貰えるので、消費税が上がった昨今は大変ありがたいです。
東急ストアの地味にいいところは、レジ袋を断ると2ポイントつけてくれることです。100円ぐらいのもの(飲み物とか)を買えば、2%OFFと一緒ですから、こまめに買い物に行くほどポイントを得して、買い置きをしない冷蔵庫なし生活との相性がとてもよいです。

クレジットカードのポイントも馬鹿にならないですよね。最近はスーパーやコンビニですらクレジットカード決済できたりするので、なるべく色々なところでクレジットカード払いをするようにしています。数百円の支払いからカード払いをするぐらい徹底的にクレジットカードを使います。

カードの種類としては、近所のTSUTAYAが常時レンタル100円でよく行くのと、作業をするためにドトールにもよく行くので、T-POINTが溜まるヤフーJCBカードを愛用しています。年会費無料かつ、公共料金支払いにも使えて、どこで何に使っても1%のポイントが付き、ヤフーショッピングやLOHACOでのポイントが常に3倍かつキャンペーン中はもっとポイントが付くので、使いやすいです。こうなると飲み会集金係のやりがいも出てきますよ(笑)。
PayPay残高チャージ対応|ヤフーカード

今まで楽天で買い物してなかったので私は使っていないんですが、楽天カードだと、普段の買い物100円で1ポイントが付く上に、楽天市場でポイント2倍もあって、さらに色々な特典があります。楽天カードもすごくお得ですね。楽天の利用が多いならこちらの方がいいと思います。
楽天カード

あとがき

まだまだ東京で消耗しようと思います。

東京って、土日に作業をしていて疲れたら、ふらっと電車に乗って適当な街に散歩に行くだけで楽しいぐらい見所がたくさんありますしね。
最初から散歩行くつもりなら散歩ガイドでも持って行くんですが、ふらっと行くときも多いので、こんなアプリを使ってみたりしています。
https://itunes.apple.com/jp/app/supotto-jiantsukaru!fotopot/id813779149?mt=8&uo=4&at=10l8JW&ct=hatenablog

TOEIC受験時の確実にスコアアップにつながるテクニック+α


スポンサーリンク

はじめに

実力をつけてハイスコアをとるのが理想ですが、とにかくスコアが必要なんだという人のための参考情報です。
私もどうしても900点以上欲しくて30過ぎのおっさんなりに勉強も頑張ったのですが、最後にこれらの小技に助けられた気がします。

TOEICはとにかく時間との戦いで、全精神エネルギーを出し切る必要があります。試験時間の1秒も無駄にしないように個人的に工夫した小技+αをまとめました。

小技の練習のためにも模擬試験はやっておいた方がいいと思います。
私は前日と前々日に下記の模擬試験をやったんですが、予想スコアの精度がすごいと思いました(実際にとったスコアとの差は10点以内でした)。

TOEICテスト超リアル模試600問[MP3音声付]

TOEICテスト超リアル模試600問[MP3音声付]

スポンサーリンク


小技たち+αのご紹介

塗り終わったマーク位置からシャーペンを離さない

こうしておくことで次の塗り位置が瞬時に分かります。次のマーク位置を探す時間は無駄以外の何物でもないです。塗り間違いを直すのも本当に無駄。

リスニングパートのマークは各問題ごとに印をつけておくだけにして、パートが終わってからまとめて塗る

リスニングの問題が流れている間は、数秒聞き逃しただけで正解が分からなくなってしまうので、聞くことに全神経を集中しておく必要があります。のんきに塗ってる場合じゃないです。

リスニング問題の正解候補メモとして、利き手と反対の手の指を折る

リスニング問題が流れているときは耳に全神経を集中させたいので、シャーペンとかマークシートをごにょごにょしていたくないです。
私は右利きで左手が空いているので、左手の人差し指をA、中指をB、薬指をC、小指をDとして、正解っぽいなーと思った選択肢の指を折っておきます。
最後に1個に絞れてるはずなので(2個以上残ったなら可能性の高い方を選んで)マークシートにそれを移しておきます。

マークシートは雑に塗る

正しい塗り方の例を真似する必要は無いです。ダメな塗り方の例よりましな塗り方なら何でもOKです。
TOEICは正解数のみがスコアに関係あるで、まれにマークの読み取りができなくなってたところで大した問題ではなく、雑に塗ることで時間に余裕を作ってなるべく多くの問題を解き切ることの方が重要です。

文法問題の固有名詞は読み飛ばす

TOEICの文法問題には固有名詞がたくさん出てきますが、正解を選ぶための情報としては無価値なので、固有名詞が出てきた時点で適当にAさんとかA社(とか何でもいいです)だと思って読み飛ばしましょう。

難しいと思った問題は適当に答えて、次に進む

不正解数は評価対象ではないので、難しい問題は捨てるつもりで、自信がなくてもそれっぽいのをぱぱっと適当に選んでしまった方がよいです。悩んでいる時間がもったいないです。
それよりも時間を有効に使いましょう。最後の方にもやさしい問題がたくさんあります。

消しゴムは2個以上持っていく

消しゴムが机から落ちても拾ってる場合ではないです。落とさないように気をつける精神エネルギーももったいない。

前日は十分な睡眠をとる

試験中2時間にわたって100%の集中力を保つ必要があります。
特にリスニングパートは集中力が数秒切れるだけで30点失うとか普通にあり得るので、十分に睡眠をとって脳が最大限にフレッシュな状態になっていた方がよいです。
酔ったまま寝ると睡眠の質が下がるので、お酒も控えた方がいいと思います。
ちなみに、私は午後の受験だったので昼に仮眠を取りました。

受験当日はコーヒーを飲まない

コーヒーは利尿作用があります。試験中におしっこしたくなりかねないので、控えた方がいいです。

(技とかでなく精神論ですが)気合を入れる

一瞬の気の緩みが重大事故を招くF1ドライバーになったつもりで気合をいれて試験に臨みましょう。何事も最後は気合で勝負が決まります!

おまけ

他の人は勧めているけど、個人的に有効ではないと思っている技も一応いくつか紹介しておきます。

  • 「空欄の前後をあらかじめ見てどの品詞が入るかで選択肢を絞っておく」
    • 正解の1個を選ぶために文全体を読み直すことになるので、無駄な作業だと思います。
  • 「リスニングの問題は、なるべくたくさん先読みしておく」
    • 先読みした情報を保っておくことと聞くことを脳が並列処理することになり、脳がリスニング力の100%を出せなくなると思います。100%並列に処理できたとしても微妙に頭が混乱すると思います。

あとがき

できればここで紹介した技は使わずに目標点が取れるよう、普段の勉強を頑張ってください!

個人的に一番やってよかった対策本はこれでした。

ユ・スヨンのブレークスルー990 TOEIC TEST 語彙・熟語・コロケーション1000問ドリル

ユ・スヨンのブレークスルー990 TOEIC TEST 語彙・熟語・コロケーション1000問ドリル

スポンサーリンク

濃縮ソフトウェアエンジニア研修:職務プログラミングで重要な心構え+お勧め書籍

はじめに

この記事の目的は、新しく職務としてプログラミングをすることになった人に、一生忘れないでほしい考え方や姿勢を身につけてもらうことです。
ソフトウェア開発で気をつけるべきことは細かいこと言い出すとキリがないですが、これぐらいは開発者全員が心と体に叩き込んでおいて欲しいという内容を凝縮してあります。

職務プログラミングの趣味プログラミングとの違い

まず、職務でプログラミングをすることは、趣味(や学校の課題や研究室で論文のために作るものも含めて)でプログラミングすることは全然違うという話です。

趣味プログラミングの特徴

趣味プログラミングは、自分のためのものなので、やりたい放題

  • 自分で作りたいものを決める
  • 自分で作る
  • 自分で使う(運用する)
    • エラーで落ちたりフリーズしても、データや動作環境をいじってやりなおせばよい
  • 自分で作り直す(直さないのも自分の勝手)

職務プログラミング

プロダクトやプログラムは、組織(会社やプロジェクトチーム)のために存在し、自分のものではない

  • 他人(経営者、プロジェクトオーナー)の作りたいものを作る
    • だから、対価として給料がもらえる
  • 他人と(場合によってはチームや会社の垣根を越えて)強調して作る
    • 大きな成果を期限内に作るためには多人数でやる必要がある。ビジネス的な価値や責任も大きくなる
  • 他人がそのプロダクトを使う
    • 簡単にフリーズしたりエラーで落ちたりしてはいけない
  • 他人が運用する(してくれる)
    • 自分には休日がもらえることになる。問題が起きた時に自分しか対応できないときついよ
  • 他人にテストされ、ソースを読まれ、バグを発見され、修正される(してもらえる)

職務プログラミングにあたっての心構え

  • 何を作るべきなのか(必要十分な機能)、自分の担当範囲を明確にしておく
    • 限られた時間と人数で成果を上げる必要があるので、余計な機能を勝手に追加しないこと
    • エラー処理をどれぐらい丁寧にやるべきかを明確にしておくこともわりと重要
    • 開発の終盤で作り漏れに気づくと締め切りを守れなくなるので、漏れもないように気をつける
  • いつまでに開発終了させるべきか、間に合わなさそうになったどうするべきかを把握しておく
    • ビジネスにおいて時間や時期は最重要事項なので、進捗によってプロジェクトの変更(締め切りを伸ばす、機能を減らす、仕事の分配を修正する)の判断に迫られる
    • 判断のタイミングが遅いと取り返しがつかなくなる。間に合わなさそうなものを一人でなんとか頑張ったけど挽回できなかったというのは最悪。できるだけ予兆の段階で報告すること
  • 開発の成果物(プログラムやデータ、ドキュメント)をきちんと管理する
    • ソースコード管理ツールに習熟しておきましょう
    • 開発ドキュメントやテストデータなどもメンテナンス時に必要になるので、ぬかりなく
  • 運用の手間を減らすようにUI設計を工夫する
    • 何十年間も無駄な運用コストが発生することにもなりかねない
  • テストしやすいよう設計、プログラミングする
  • プログラムを他の人に読んでもらいやすいように書く
  • プログラムを修正しやすいように予め構成しておく

どう設計すればいいか

テストやデバッグ、修正が簡単になるようにしましょう

  • 重複を避ける
    • 重複箇所にバグがあったり修正が発生した場合、テストやデバッグの手間が倍になる
  • 機能のはっきりしたコンポーネント、クラス、関数に分解しておく
    • 関係あるものをまとめる/関係ないものを分離する
  • 意味的/機能的に(あるいは他の合理的な指針で)、階層構造/木構造になるように構成する
  • 分割したもの同士が必要以上に影響し合わないようにする
    • 余計な依存をなくしたり、一方通行にする
    • 例:関係するモジュール(とかクラスとか関数)A0とB0がある場合
      • AをA1に取り替えようとするとBも変更しなければならず、BをB1に取り替えようとするとAも変更しなければならない→よくない
      • AをA1に取り替えようとするとBも変更しなければならないが、 BをB1に取り替えようとしてもAはそのままでよい→よい
      • AもBもそれぞれ独立に代替物に取り替えれる→とてもよい

よい設計が出来るようなるための参考書籍

どうすれば良いコードになるの?

〜名前編〜

変数名、関数名、クラス名、ファイル名などに気をつけましょう

  • 名前で中身がわかるようにする(変な名前をつけてコメントで説明したりしないこと)
    • 駄目な名前 x、u (ループ変数のようなちょっとしたローカル変数ならOK)
    • 良い名前 user_id、uid (コード以外でも使われる略語はOKだが独自略語は避ける)
  • 命名方針を統一する
    • convert_to_eucとかconvertToUTF8とかconv2sjisとかを混ぜない

〜見栄え編〜

読んでもらいやすく、修正しやすいプログラムを書く

  • 重複を避ける
    • 読む量が増えるし、同じっぽく見えて微妙に違うのかなとか無駄な混乱が起きる
  • 出来る限り短くする
    • 分かりにくくならない範囲で、行数も1行の文字数も減らすこと
  • 構造を見た目で表す
    • きれいにインデントする
    • 必要十分な空白を入れる
    • 必要十分な括弧を入れる

よいコーディングのためのキーワード

  • コーディングスタイル
  • 防御的プログラミング
  • 各言語の仕様を読むこと
  • 言語の機能の意義を理解すること

コーディングのスキルアップのための参考書籍

時間・タスク管理もしっかり

ソフトウェア開発は、試行錯誤の繰り返しで、人によって作業効率もぜんぜん違う。
作るべき内容が途中で変更されることもしばしばある。
計画当初の通りに進むことはまずない。
→ 個人でも、時間管理とタスク(の優先度)の管理が超重要になってくる。

時間管理力アップのための参考書籍

エンジニアのための時間管理術

エンジニアのための時間管理術

おまけのアドバイス:英語も勉強しよう

余力があれば(というか余力のある今のうちに)英語の勉強をしましょう。ソフトウェアの技術や文化はほぼ全て英語に基づいています。英語力があると、適切な関数名・変数名を付けるといった細かい話から、最先端の技術を身につけたり、海外出張に行ったり、転職したりといったエンジニア人生に関わる大きな話まで、色々な点でとても有利になります

あとがき

先輩面したようなことを書いていますが、自分もまだまだ理想のエンジニアにはほど遠いので、これからも頑張り続ける所存です。

理系IT系就活で全然自信がなかったからこそ面接に成功したと思える当時の心構えと今の考え

特に、理系の人やエンジニア志望の人はスキルがあっても口下手で面接が苦手って自分で思ってる人も多いと思うので、そういう人に参考にしてもらえたらと思って書きました。

就活当時の話

人に自慢できる学生時代のエピソードもなかったし、全く内定をもらえる自信がなかった。
基本的に「どこも受からなさそうな気がするし、落ちたら落ちたでいいや」と思っていた。
「ひょっとしたらここは受かりそうだから自分をよく見せておこう」とか微粒子レベルにも考えてなかった。
面接1社目で流れを経験した後は、完全に吹っ切れて、気負うこともなく、全く緊張しなくなっていた。

「エンジニアをちゃんと評価してくれる会社とは?」が就活時の一番の関心事で、面接官がどうやって良いエンジニアを見抜くのか興味があったので、面接中は「さて、お手並み拝見〜♪」と考えていて、面接官の質問はじっくり聴いた上で、素直に気楽に答えていた。

ある面接では、面接官の方が緊張していたみたいで「なんでそんなに余裕で自信満々なんですか!?」と聞かれた。
上記のことをぶっちゃけてしまうわけには当然いかないので「普段通りの自分を見てもらった方がいいと思って、自然体で話すように気をつけています」と、焦りつつ取り繕う場面もあった。

面接は、面接官が就活生を評価する場でもあるけど、半分ぐらいは就活生が会社を良く知るための場でもあると思っていたので、社会見学のノリでこっちの知りたいことはズバズバと(しかし失礼はないように)質問した。
こういう受け答えは、面接官からは自社に対する興味とか積極性と感じてもらえたような気がする。

運とか色々な要素があったと思うけど、大体の会社は最終面接まで行けて、いくつかの会社はこちらから次の選考を辞退した。
最終的に「この辺に受かれば就活は成功かな」と就活開始時に考えていた会社から内定がもらえた。

まとめに、あえて方法論として名前をつけるなら「どうせ落ちる面接なら楽しんだ方が勝ちメソッド」?

ちなみに、Wordで作った履歴書を印刷して提出していた会社の面接は落ちた(他の会社は手書き)ことを、こちらの記事を読んで思い出しました。
履歴書はちゃんと手書きで書こうよ、就活生クンたち!

今の話

ここからは、IT系(というかWeb系)のエンジニア志望の人向けに特化した自分の意見なので、興味ある人だけ読んでいただければと思います。

今、IT系のエンジニアとして働き続けていて、後輩もいる状況で考えてみると、エンジニアってコミュ力がそんなに高い必要はないかなと思います。
上司も社長も友達感覚で会話してもらえるので、一流マネージメント職を目指すのでなければ、友達と普通に社会生活が送れるぐらいのコミュ力で十分です。

今でも面接を特別に頑張る必要はなかったと思っていて、就活で具体的に評価されたポイントは、ソフトウェア開発のための勉強を一通りはやってたことと、自分でWebサービスを作って研究室のサーバーで公開していたことかなと思います。
そのWebサービスは、商店街や街角の街灯の写真をアップロードして地域ごとに整理して楽しめるという超ニッチで自分しか見てなかったんじゃないかという、全然大したものではないです(今考えるとレベルも内容も謎過ぎて、恥ずかしい)。それでも、作品があるとないとでは雲泥の差です。

エンジニアのコミュ力がどれだけ高くても技術力がしょぼければ良い製品は完成しないので、自分が面接官をするときには、同じように評価したいと思います。
エンジニア志望のみなさんには表面的な面接対策をするのではなく、こちらの記事に書いた通りプログラミングの基礎を身につけることと作品制作をお勧めしたいです。

この本を読んで実践できてたら新卒の応募者としては完璧レベルで、面接がよほど酷くない限り、即採用したい。読んで理解できてるだけでも候補には残したい。

良いコードを書く技術 ?読みやすく保守しやすいプログラミング作法 (WEB+DB PRESS plus)

良いコードを書く技術 ?読みやすく保守しやすいプログラミング作法 (WEB+DB PRESS plus)


あと、面接などの服装で「カジュアルな服装でお越し下さい」と書かれているのに、わざわざスーツ着てくるのやめてねw。部下やチームメイトは、指示には素直に従ってくれる人でないと困るのよ〜

就活生の皆様の健闘と幸運を祈ります。
では。

おまけ

知り合いになった人が書いた記事がヒットしているクックパッドとヤフーの開発者ブログの人気に嫉妬しつつ就職先としてお勧めしておきます。転職しようかな

就活生がITエンジニアを目指す前に伝えておきたい業界の真実と現役エンジニアからのアドバイス

はじめに

日本のIT業界では、技術職求人に対して、ちゃんと専門教育を受けていない(独学で身につけたわけでもない)人の応募の割合がとても高く、絶大なる不幸を生み出しているのが現状です。
これから社会人になる就活生の皆さんには、できれば不幸な人生ではなく幸せな人生を歩める選択をしてほしいとの願いから、このエントリーを書きました。

注意:ITエンジニアとして就活をしてプログラマー的な仕事が主な業務になる人が多いと思うので、この記事に出てくるITエンジニアという言葉は、プログラマーのことだと思って読んでいただけると幸いです。広い括りの題名をつけてしまってすみませんが、インフラ/ネットワークエンジニアやメーカーのエンジニアの話は出てきませんので、ご容赦ください。

目次

  1. 背景
  2. プログラミング言語を覚えよう
  3. データベースの使い方を覚えよう
  4. オリジナル作品を作ろう(ここが一番大事)
  5. IT系の勉強会に参加しよう
  6. GitHubで自分のプログラムを公開しよう
  7. インターネット上に自分のソフトウェアを公開しよう
  8. 自分がプログラマーに向いているかどうか判断しよう
  9. アマとプロのプログラミングの違いを知っておこう(二番目に大事)
  10. 個人的にオススメな応募先

背景

プログラマーの適性(向き不向き)の差は、他の職種よりも非常に大きいです。
ソフトウエア開発 55の真実と10のウソ』に書かれている調査によると、向いていない人は、向いてる人と28倍も生産性が違うという結果が得られたそうです。同じ仕事をこなすために何倍もの時間がかかったり、作った物のクオリティも何倍も低い(バグが多いなど)ということです。

仮に、向いていない人が職業としてのプログラマーになったら、どうなるでしょうか。
他の人と同じように仕事が与えられれば、向いていない人は、深夜残業を毎日して徹夜も普通という生活を強いられることになりかねません。その上、仕事のクオリティも低ければ、給料アップの望みもないでしょう。

最近は、ブラック企業が社会的に大きな問題になっています。ブラック企業のやり方はもちろん問題なのですが、あなた自身でブラックな状況を作ってしまうことも有りうると認識しておいて下さい。

まともに利益を上げてまともに社員に給料を払う気がある会社なら、適性によって生産性が何倍も違う職種の採用で「プログラミング未経験者歓迎」と本当に思っているわけがないことを理解しておきましょう。適性のない人を採用したら、納期を守るのも難しくなってしまいますし、残業代も沢山払わなければいけなくなってしまいます(払ってもらえればマシなんですが)。「未経験でもプログラミングができるよう教育します」といううたい文句の会社も沢山あります。教育されればプログラミング言語の一つぐらいは文法を覚えて書けるようになるかもしれませんが、第一線で活躍できるレベルは全然別物です。最低限はできるけど向いてない人を丁寧に面倒見てくれるほど余裕のある会社はあまりないでしょう。もし、未経験(とか、ほぼ未経験)でエンジニア採用されることが普通な会社に入社したら、相当の修羅場を覚悟した方がいいですよ。

あと、日本の大学の情報なんとか科でちゃんと勉強せずに生ぬるく卒業してITエンジニア人生を安泰に送ろうと思っている人も危ないです。
念のために言っておくと、パソコンの使い方やインターネットに詳しいとか、エクセルがちゃんと使えるとかはプログラミングの適性とあんまり関係ないです(必要なスキルではあります)ので、そこを勘違いをしていると後で苦労します。

そうならないために、ソフトウェアエンジニアを目指すと決める前に最低でもこれぐらいやっておいた方が良いことをあげておきますので、実践した上で応募を検討してみてください。

プログラミング言語を覚えよう

何かを作って適性を見ようというのがこのページの趣旨なので、プログラマーの向き不向きが分かる前にくじけてしまわないように、初心者が手っ取り早く自分の作りたいものを作れるようになる言語としてPHPで話を進めたいと思います(プログラマーになる決意の固い人は、RubyとかPython、ScalaあるいはiPhoneアプリ作りたいならSwiftとかをじっくり勉強した方がいいかもしれません。こっちができた方がイケてる会社の面接では受けがいいと思われます)。

作る内容によりますが、PHPが多分一番簡単にWebサービスを作れます。
ちゃんと勉強すれば他の言語にも応用が利く知識が身につくと思います。

PHPの勉強は、書籍やWeb上のチュートリアルを参考にしてください。
[asin:B00JA179KY:detail]


(ここに挙げる参考書・サイトは一例なので、なるべく自分にあった参考書を探してください。以下同様)

データベースの使い方を覚えよう

現実的なプログラムでデータベースを使わないものはまずないので、データベースも基本知識として必須です。
データベースも色々ありますが、無料で使えて、PHPと合わせて開発しやすいMySQL(マイエスキューエルと読みます)をお勧めしておきます。
MySQL公式サイト MySQL

Web上にたくさん解説記事がありますし、上記のPHPの書籍でMySQLの使い方も解説されているので、一通り勉強するにはちょうど良いと思います。
[asin:B00JA179KY:detail]

オリジナル作品を作ろう

さて、ここが一番大事なところです

教科書や書籍、参考サイトに書いてある通り作るだけなら誰でもできてしまうことなので、向いてるかどうかは判断できません。本当にそれができるというには怪しいところです。

自分の作りたいものを考えて、オリジナル作品を作りましょう!

斬新である必要はありませんし、独自性も高くなくて構いません。
教科書や書籍に書いてあった通りに作ったというのでなければOKです。
色を変えただけとかはダメですよ^^;

見た感じツイッターっぽいものを中身は自分で考えて作るといった程度のことです。
少しで良いので、そのサービスが魅力的であるために自分なりの工夫を入れましょう

実際に自分で作ってみると、分からないことが沢山あったり、エラーがいっぱい出てどうすればいいか分からなくなってしまうと思います。
そこで諦めずに、本や検索で調べたり、詳しい人に聞いたりしてください。
後述の勉強会に参加して、教えてもらうのもよいと思います。
そういうことがソフトウェア開発現場での仕事です。

(作ろうとした機能が意外と難しい場合は部分的に削ってもいいので)
とにかく完成させましょう!

IT系の勉強会に参加しよう

この業界はオープンな勉強会がよく開催されていて、いろいろな会社からモチベーションの高い現役のエンジニアが参加しています。
無料のものが多いですし、懇親会があったりして、公式の会社説明会では聞くことができない(それよりももっと重要な)現場の生の情報を聞けるので、参加しない手はないです。企業が主催の勉強会は、主催側の話を鵜呑みにするのではなく、参加者の先輩エンジニアからも話を聞くように注意しましょう。

IT系勉強会を検索できるconnpassやATEND、dots.などのサービスで勉強会を検索してみてください。

何を選ぶにしろ、三、四回ぐらいは行った方がいいと思うので、ここでは具体的にオススメは挙げません。
なんでも良いので、なるはやで入門的な名前が付いているものに行ってみて、知り合った人にオススメを聞いてみてください。

GitHubで自分のプログラムを公開しよう

最近は、採用面接でエンジニアが面接官になり、実際に自分の書いたコードについて話をすることも多いです。
その場でコードを書く面接も増えています。

GitHubは、共同開発できるようにプログラムを管理・共有するためのサービスです。

ここにプログラムをアップロードしておくと他の人に見てもらえるようになります。
確かにプログラムをかけるということの証拠になりますし、GitHubのアカウントを持っていることが応募の条件という会社すらあります。
逆に他の人のプログラムを見て参考にすることもできますので活用しましょう。

GitHubなどを利用して自分の書いたコードをきちんと管理することはプロとして必須スキルなので、コード管理はなるべく早めに身につけましょう。
使い方は、



などを参考にしてください。

エンジニアがコードを見る面接の場合は、プログラムのクオリティも審査されると思いますが、こちらの本を参考にして作り方にもある程度の工夫がしてあれば、申し分ないです。

就職前にこの本に書いてあること全部ができてる必要はないと思いますが、もし出来ていれば、技術レベルとしては、ほぼ全ての会社から内定がもらえるレベルです。

インターネット上に自分のソフトウェアを公開しよう

インターネット上に自分の作品を公開しておけば、採用担当の人事の方に見てもらうこともできます。
これはとてもよいアピールになるので、エントリーとか初期段階で落とされなくなると思います。

自分でサーバーを持っていなくても、無料でインターネット上に作品が公開できるherokuというサービス(ヘロクと読みます)があります。
Cloud Application Platform | Heroku

使い方は、




などを参考にしてください。

自分がソフトウェアエンジニアに向いているかどうか判断しよう

まずは、オリジナル作品の作成や公開の作業が楽しい・やりがいがあると思えたかどうかが、最低限のプログラマーの向き不向きの判断基準となります。
自分の作りたいものを作ったはずなので、この作業があまり楽しいと思えなかったのなら、プログラマーには向いていません。仕事だと、自分が作りたいものを作らせてもらえるとは限りませんし、くだらなくてつまらなくて苦痛な作業もあるので、モチベーションは続かないでしょう。

この基準をクリアしたとして、ちょっとだけ向いてるのか、すごく向いてるのかを短期間で判断するのは難しいですが、プログラマー職に応募する意味があるレベルだと思います。やる気と時間の余裕がある人は、プログラミングのコンテストに出てみたりするといいと思います。

アマとプロのプログラミングの違いを知っておこう

採用ページとか説明会ではよく分からないと思いますが、実際のプログラマーの仕事の内容を、ちゃんと知ってから応募したほうがいいです。

職業としてのプログラマーになるということは、単に動くプログラムが書ければ良いということではありません。

初めてオリジナルのソフトウェアを作った人は、おそらくエラー処理はほとんどしていないと思いますが、仕事ならあらゆるエラーに対応できるように面倒臭いコードも沢山書かなければいけません。
ユーザーから遅いと言われたら、速く動くアルゴリズムを考えたり、実装方法を工夫して速くなるように作り直さなければいけません。

アルゴリズムを学ぼう

アルゴリズムを学ぼう

機能追加や修正がしやすいようにプログラムを構成する工夫も必要です。

仕事は共同作業ですから、他の人にも読みやすいように書かなければいけません。

動作テストもちゃんとしなければいけませんし、バグがあれば、何千、何万行もあるプログラムの中からバグを探したりもします。

色々と難しそうなことを書きましたが、プログラマーの仕事は、言語を使って複雑なパズルを解くような仕事なので、パズルの解き方を考えるのが好きで文字を読むのが好きな人と相性が良いと思います。

現実的には、Webサービスやアプリを安定稼働させるためにサーバーやネットワークの知識も勉強する必要があります。

変化の早い業界なので、時代や目的に合わせてプログラミング言語や関連技術を常に新しく勉強する学習意欲や向上心も必要です。プログラミング言語は10個ぐらいは覚えることになると思います。


そういったことを踏まえた上で、「もっと勉強して上達したい」「この仕事にチャレンジしたい」と思える人は、きっとプログラマーに向いています。
是非、ソフトウェアエンジニアになってください!

個人的にオススメな応募先


クックパッドさん、一番オススメしたいのにリンクの埋め込みが表示されません >< 助けて*1
http://hr.yahoo.co.jp/fresh/



などなど、他にも私の知らない範囲でもあると思います。

自分がWeb業界の人間なので、挙げるのがWeb系ばかりになってしまいました。ごめんなさい。BtoBやSIerにも良い会社あると思います。でも、Web業界も楽しいです。

IT系の勉強会に参加して、転職経験者の経緯とか聞いてみると良いですよ!

オススメできない応募先はここにはちょっと書けない(笑)ので、自己判断してください。

面接について


あとがき

今までの日本のIT業界は歴史的な事情で、向いていない人もたくさんプログラマーになっているので、向いている人にとってはむしろチャンスの大きい職種とも言えます。現に、トップレベルのプログラマーは年収1000万円以上もらっていたり、ベンチャー企業を立ち上げて資産が何十億円という人もいます向いてそうなのに他の業界や職種を目指しているお知り合いがいらっしゃいましたら、是非ともプログラマー職の応募を勧めてみてください

おすすめ記事




*1:クックパッドさんにご対応いただきました。ありがとうございます。こうやってネット上のエンジニアの話題にも敏感で、採用活動にも真剣さが感じられ、エンジニアに対するリスペクトのあるふっふはっほさん、やっぱり素敵です

Swift NSTimerの使い方のポイント

scheduledTimerWithTimeInterval(ti: NSTimeInterval, target: AnyObject, selector: Selector, userInfo: AnyObject?, repeats: Bool)

ポイント

  • target
    • 指定するオブジェクトは、NSObjectを継承しているか、@objcのついたクラスである必要がある
  • selector
    • Selector("onUpdate:")でもよいし、"onUpdate:"でもよい
      • コロンは省略不可(引数が一つあることを表す)
    • メソッド名はなんでも良い
    • 引数はtimer: NSTimerでなければならない
    • 戻り値は自由

サンプルコード1

class AnswerTimer: NSObject {
    init() {
        super.init()
        NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector("onUpdate:"), userInfo: nil, repeats: true)
    }

    func onUpdate(timer: NSTimer) {
    }
}

スポンサーリンク


サンプルコード2

@objc
class AnswerTimer {
    init() {
        NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector("onUpdate:"), userInfo: nil, repeats: true)
    }

    func onUpdate(timer: NSTimer) {
    }
}

エラーメッセージ

上記のポイントが満たされていないと下記のようなエラーが出る

2014-11-23 10:13:12.623 MyApp[7959:894999] *** NSForwarding: warning: object 0x78e5d4f0 of class 'MyApp.AnswerTimer' does not implement methodSignatureForSelector: -- trouble ahead
Unrecognized selector -[MyApp.AnswerTimer onUpdate:]

スポンサーリンク


おすすめツール

meyasuba.co

クイズアプリQuizUpで気分転換も兼ねた英語学習はいかが?

最近、iPhoneのクイズアプリQuizUpにハマっています。

QuizUp™

QuizUp™

  • Plain Vanilla Corp
  • ゲーム
  • 無料

QuizUpとは?


ジャンルを選んで、Play Now!ボタンを押します。
f:id:knj4484:20141107221142p:plain

システムが対戦相手を探してくれて、対戦が始まります。
f:id:knj4484:20141107221209p:plain


1対1の対戦で10問の4択問題を解いてポイントを競います。
ポイントは回答時間が短いほど高くなるようです。
f:id:knj4484:20141107221258p:plain

対戦が終わると、ポイントが集計されて、レベルアップしたり、「日本でトップ10内です!」などの賞がもらえたりします。
結果画面から対戦相手に再挑戦ができたりもします。
f:id:knj4484:20141107221325p:plain

画面のメッセージや問題、選択肢などすべて英語なので、楽しみながら英語力Upできてとても良いです。
こんなQuizUpの魅力をご紹介します。

純粋に楽しい!

参加者が本当にグローバルで、アフリカやヨーロッパのあまり聞かない国の人もいます。
ロシア人の若い女性と対戦が組まれたりすると、ちょっと興奮しますね(笑)。
国別にランキングがつきますが、今の所は日本人の参加者が少ないので、少し頑張ると日本人トップランクが取れて、ちょっとだけ自分がすごい人になれた気分になります。

速く読む練習になる!

回答の制限時間が1問につき10秒で、残り時間が少なくなるとチキチキ音がなりだします。
選択肢も全部読むとなると結構な速さで読むことになりますので、速読力が相当鍛えられます。

カタカナ英語のスペルが覚えられる!

地名とか人名、商品名などが答えになっていることが多いので、それらのスペルを知ることができて、「へー、こういうスペルだったのかー!」と新鮮な気分を味わえます。

オススメのジャンルを紹介

英語が分からなくても画像だけ見て答えられるジャンルなんかもありますが、英語の勉強の意味でいくと以下の分野がオススメです

  • 自分の専門分野
    • 自分に関わる英語はもともと語彙も知識も多いのでとっつきやすいです
    • 個人的にはインターネット企業のエンジニアなので、The Internet、Computer Science、MicrosoftGoogleが解きやすかったです
  • 映画・ドラマ
    • クイズにチャレンジするつもりで自分の好きな映画を英語音声・英語字幕で見直してみるとリスニングの勉強にもなって楽しいです
    • 個人的には、Disney、Back to the Futuer、24あたりを見直している途中ですね
    • ハリーポッターの原書Harry Potter and the Sorcerer's Stoneにも挑戦しようかと考えています
  • アニメ
    • 日本の作品がたくさん出てきます!アニメ文化が世界で受け入れられている実感がわきます!
    • Animeというジャンルもありますし、作品別でもOne PieceDragon BallNarutoとかがあります!

オススメできないジャンル

  • 英語のスペルを答える系のジャンル
    • ネイティブの人の回答スピードに絶対勝てないので無駄に悔しいです

問題の投稿もできる

ユーザーが問題を提供できるようです。
個人的には、ITエンジニアなので、Swiftの問題とか、UNIXのコマンドの問題とか自分で作れるとなるとワクワクしますね(笑)。

まとめ

以上、QuizUpの魅力を紹介してみました。
皆様も是非チャレンジしてみてください〜

日本人が知らない ネイティブがよく使う英会話フレーズ400 中経の文庫

日本人が知らない ネイティブがよく使う英会話フレーズ400 中経の文庫