こんにちは、はてなのエンジニアアルバイターのshiba_yu36です。
今回はid:antipopさんが企画されたHatena::Staff Advent Calendar 2011とは関係なく、なぜかid:hitode909からバトンが回ってくるというよく分からない事態が起きたので、まぁAdvent Calendarには参加できなかったけど、はてなのことを書こうという気持ちで書いています。
さて突然のことで何を書こうか決めてなかったので、今回ははてなアルバイターから見た、はてなでのアルバイト - attsumiの日記を真似して、はてなのエンジニアアルバイターは何をしてるのってことを書こうと思います。
はてなエンジニアアルバイターの一日
10:30 出社する
社員さんは10:00出勤ですが、アルバイターは特別なので、遅れても良いのです。
10:30~ コード生成をお願いする
ちょっとしたコード生成は社員を使うらしいので、僕達のお仕事はコード生成をお願いすることです。簡単ですね!
13:00~14:00 昼ごはんを食べる
アルバイトだろうが、ご飯は作っていただけます。毎日おいしいですね。
14:00~ コード生成をお願いする
午前中とやることは変わりません。あ、あとリリースはアルバイトができないことになってるので、出来たコードのリリースももちろん社員さんにお願いしますよ!!1
はてなエンジニアアルバイターの一日(真面目版)
10:30 出社する
さすがにアルバイトははてなの重要なことを話したりするような会議には参加できないのでe、大体朝会が終わるような10:30に出社します。もちろんアルバイターが特別ということはありません。
10:30〜 コードを書く
はてなのエンジニアアルバイターは基本的に本番にリリースするためのプログラムを書く仕事をします。
もちろんやらなければならないことは、社員の方と変わりません。アルバイトだからといって、考えずに言われたことだけをやるだけでなく、本当にその機能が必要かなど考えながら仕事をします。
さらにある程度仕事が出来るようになってくると、仕事もかなり大雑把に任されます。たとえば「こんな感じの決済が出来るようにしたいからやっといて」みたいなかんじです。難しいですが、設計や実装など1から全てできるので、非常に面白いです。
また、はてなの場合、アルバイトといっても与えられる権限は非常の大きいです。必要とあれば本番のテーブルをalter tableすることだってあります。もちろん社員さんにレビューしてもらった上でですが。
さすがに社員さんと違ってやれないこともいくつかあって、個人情報に関わるデータは見れないし、リリースなどは出来ません。このあたりは社員さんにお願いして、日々仕事を行なっています。
13:00~14:00 お昼休憩
アルバイトでももちろんはてなランチが食べられます。IT企業という料理には殆ど関係ない業種なのに、こんなに美味しい料理を食べられるなんてと、驚くばかりです。
また、社員の方ともいろいろお話ししたりします。技術系の話、アニメの話、最近のデバイスの話、その他いろいろです。昼休みまでにちゃんとアニメ見とかないとネタバレされる危険のある職場は初めてでした。少し古いですが、朝会でもまどマギネタバレされたらしいです。
14:00~19:00 コードを書く
午前中とやることは変わりません。19:00くらいまでは仕事なので、自分で考え、時には社員さんと相談しながら仕事を進めています。
あ、ちなみにアルバイトもフリードリンクフリーお菓子なので、食べて飲んでも大丈夫ですよ。いつも甘いもの食べ過ぎてしまいます。
19:00 帰宅
いつ帰るかはある程度自由なのですが、区切りとして19:00に仕事が終わります。もうちょっとやりたかったらやるし、仕事終わったあと社員さんと晩御飯(ラーパー)食べたりもします。
はてなエンジニアアルバイトの特徴
さて僕ははてなでエンジニアアルバイトを去年の4月からやり始めましたが、はてなでのアルバイトが楽しくて、勉強になって、正直アルバイトをして人生が変わりました。
そんな僕が感じた、他とはちょっと違った「はてな」でのエンジニアアルバイトの特徴を紹介します。
とにかく他よりは責任のある様々なことをやらせてもらえる
エンジニアアルバイターのできること、やることは殆ど社員さんのそれと変わりません。本番にリリースされる機能を一人で任されるし、かなりコアな部分を任されたりします。実際僕も課金の部分とかを一人で任されたときは、「本当に大丈夫なの?」って思いましたがw
このように責任のある仕事を任されるお陰で、スキルの向上も非常に早いです。また、言われてやる仕事より、かなり楽しいですね。
周りが優秀なエンジニアばかり
はてなにいると周りは本当に優秀なエンジニアが多いです。社員さんには未だに追いつける気がしていません。もちろん頑張って追いつきますが。
このような環境だと、やっぱりがんばろうという気持ちになります。そのおかげで一年間めげずに発表したり、自分で何かを作ったり出来たと思っています。
また、自分でやっててわからないことがあったときに、誰かに聞いたら何かしら答えが帰ってくるというのは大きいです。学習のショートカットになるので、ただただ感謝です。
アルバイトでも意見が言える
アルバイトでも、機能やサービスに対して、気負わずに意見をいう事ができます。これは会社内が仲がよく、ある程度フラットに物を言えるからだと思っています。
最後に
というわけでHatena::Staff Advent Calendar 2011とは、直接は関係していないけれど、はてなのことについて書いてみました。交通事故みたいな感じで突っ込まれたので戸惑いながら書きました。経緯ははてなまとめ(仮)をみるとわかりやすいでしょう。
こんな感じで、正直はてなでアルバイトをすることによるメリットはかなり大きいと思います。京都で学生をやっていて、暇ならとにかく一度アルバイトしてみたら?と思います。
確かにはてなのエンジニアアルバイトって敷居が高いように見えます。僕も最初はいるときはプログラミングあまりできなかったので、非常に躊躇して居ました。それでも今はなんとか仕事ができています。
最近だと、インターンの課題などを利用して、入る前にある程度スキルを上げるようなトレーニングを受けさせてもらえるので、プログラミングに自信がなくても一度飛び込んで見ることをおすすめしますよ!
ちょっとでも興味を持てた人は株式会社はてなを見てみてくださいね。
それでは次はid:r7kamura君です。玉突き衝突は終わりません。頑張って!
コード書くときに気をつけていること
コード書くとき気をつけることバトンってことは完全に見落としてました。まぁいいや。
よくやってるのはあるメソッドに渡す引数にオブジェクトを渡すとき、そのオブジェクトにあるメソッドがある前提で扱うっていうのを極力避けることですかね。
例えばUserにfriendlistsっていう友達のリストを返すメソッドがあったとして、更にほかのlogic的なところでuserを受け取るメソッドがあるとすると、
package Notification; sub notify_friends_from_user { my ($self, $user) = @_; my $friends = $user->friendslist; for my $friend (@$friends) { $self->notify($friend); } }
みたいなことを出来るだけせずに、
package Notification; sub notify_users { my ($self, $users) = @_; for my $user (@$users) { $self->notify($user); } }
みたいに引数に与えられたオブジェクトは単純なデータのみとして扱うように出来るだけ書いています。あとはこのメソッドに$user->friendslistとかを入れるとかって感じですね。
これが良いのかはわかりませんが、こうしておくことで例えばfriendslistが急に変わっても対処できるし、逆にfriends以外のuserにnotificationしたくなっても、渡すリストを変えるだけで済んでる気がします。
以上。