ぱすたけ日記

日記っぽいのを書きます。

エンジニアアルバイト振る舞いテクニック

今、Notaとはてなの2社でアルバイトしている中で学生パートタイムエンジニアとしてやっていく際の振る舞いについて最近意識的にやっていることがあるので書いてみます。はてなでマンガチームにおいて一応メンターという設定になっている*1ひとでくんさんの次の記事を読んでのアンサーソングのつもりですが、何年もNotaでアルバイトをし、はてなのエンジニアの人々とも長く交流があるからこそ出来る振る舞いなのではとも思っているので、真似してくれとかそういうの一切ないです。偶然参考になる人がいればと思って書きます。

  • とにかく何でもSlackとかGitHubとかグループウェアとかに書く
    • 困りごとはもちろん、設計のこと、コードのこと、サービスのことで気になってることとか何でも遠慮せずに書くようにしている
      • 自分の作業ペースや理解度とかを素早く把握してもらうため
        • 週に1日〜2日とかで出来ること知れることは多くないので、こういうペース感だというのは常に掴んでおいてもらって、コントロールの参考にしてもらえればと思ってる。早いので次のタスク考えておくかとか遅いので会話するかとか。次にも書くけど知らないことや追えてない話題は多くて当然だと思うのでドンドン聞いてキャッチアップできるようにしてもらう。
      • 情報のデフォルトスコープが狭い場合でもちゃんと「知りたい」と表明すれば適切にスコープが広がったり知っておいて良いことであることが増えたりするので、表明するようにしている。
      • これは自分がJavaScriptとその周辺に強い関心と興味とそこそこの自身があるからだけど、社員の人とかがシュッと何かをやろうとしているときとかも怪しそうだったらレビューでツッコミを入れたり、会話してみたりしている。
  • 自分の興味関心を明確に伝えておく
    • Notaは入社時に趣味でブラウザ拡張作ってますって言ってそのままGyazoのブラウザ拡張の大規模改善をやった
      • Gyazoのお絵かき機能周りをやったときにブラウザのパフォーマンスに関することを一通り調べてそれが強みになっているし、今はフロントエンド周りの諸々を整えたりリファクタリングを中心にやっている。
    • はてなはアルバイトする時に、マンガビューワーのJSをなんとかしたいということを強く伝えて、それ以降も1年以上JSしか書いていない
      • Perlというかサーバサイドが必要なものはひとでくんさんとかに用意してもらったり、簡単なものはシュッと書くこともあるが、基本は書いてない。Perl書いたの7行くらい?
    • 自分の最近のブランディングで一応JavaScriptとかブラウザ上でのパフォーマンス周りが得意ということにしているので、基本的に両社ともにその部分を活かしたタスクを用意してもらっている
      • 例えば、マンガビューワーに関してはServiceWorkerを用いたオフライン閲覧機能の実装でServiceWorker周りなどとガッツリ向き合わせてもらえたので感謝している
    • チームのDとかエンジニアリーダーとかがアイデアを練ったりアサインするときとかに「あーPasta-Kがいるから、フロントエンドでチャレンジ出来るな」とか「この部分もっとブラウザで頑張れるな」とか思ってもらえる状態で居たいと思っている。逆にそういう状態じゃない場合、粗雑にタスクが降ってくるみたいな状態において自分の価値をちゃんと発揮することに自信がない。
    • 以前はサーバサイド的なことでもドンドン掴むぜみたいなモチベーションがあったころもあったけど、今はあんまりそういうのない。それだったらパフォーマンス良くしたいし、JSの開発環境を改善させてくれって思う
    • 究極、興味関心とマッチすることが無くなったらアルバイトなんだしさっさと辞めて別の会社に行くとか就職するとかしたらええやんって思ってる
  • 腹案を持っておく
    • 大きいタスクとタスクの間の暇なときとかレビュー打ち返し中とかにできそうな改善アイデアとか実験したいことを隠し持ってる
    • 隠しておく必要はないんだけど、まぁこういうの試せると良いですよねみたいな感じで話してて、空き時間が見つかったらシュッとやってみて共有したりしている
    • 普段の暮らしでキャッチアップする技術を持って来れるので便利
      • 趣味ベースだと面白技術試す時にサンプルアプリケーション持ってきてゴニョゴニョしてみたいなの要るけど、実際のアプリケーションに触るバイトの中でそれが出来ると実サービスに入れることをゴールに試せるので、色々見つけられることも多いし、勢いよくいくとそのまま本番アプリケーションをそれで改善できる
    • 技術的挑戦とか改善は積極的にやっていこうという文化なのでこういうことをシュッとやっていけて助かる
  • 会話とペアプロも積極的にやる
    • なにか判断が必要なケース(例えば、技術要素の選択やタスクの優先度)などで必要な判断を勝手にやったりは出来ないし、やったところで上手くいく感じがしないので困ったらシュッと会話している。さっきの「何でも書く」と矛盾していそうだけど、ドンドン表現していこうということ。あととにかく悩み時間を減らしたいと思っている。悩み時間だいたい悩んでも解決することではなくて「決定」の問題なので、自分より上位の人と良い意味で決定の責任を分け合っていけば良いと思っている。
    • ↑の感じで自分が得意なことを他の人がやるときも積極的に会話に混ざったりペアプロをして伝授していく
  • ビジネス的な責任が大きくないことを利用する
    • 社員の人はチーム全体の「今期の目標」とかによって明確な達成目標があることがあって、それが時期によっては社員の時間や技量やパフォーマンスに制約を与えることがある
    • 締切ドリブンでドンドン完成させないといけなかったり、そのために他のことに手を回せなかったり
    • アルバイトはそういう意味では(表現として正しくないかもしれないが)無責任でいれる
    • 例えばMTGが少なかったり、締切があってここまでに出来てないとヤバいみたいなが少ない
      • 極稀になくはないが、これがめっちゃ多かったら普通にやばい会社だと思うと思う
    • そのスキを使って、細かいバグフィックス的なタスクをやるのではなくて、大きいリファクタリングや機能開発、開発環境改善をやる
      • ここら辺に自由に大きな時間を避ける(自分の環境だけかもしれないが)という意味では、社員の人々よりも自由度が高く、それを利用して例えばgulp+browserify->webpackをやったり、設計方針を立ててある機能を書き換えたりみたいなのが出来るのは逆にパートタイムの特権ではと思ってる

こういうハックをして、パートタイムとして快適に且つ良い感じにちゃんと評価してもらったり周囲に理解してもらえるような成果を上げているという感じです。自分では良いと思っているけど、他の人がどう思っているかとか分かってないので、エゴを攻めすぎてミスっているかもしれない。

なんかあったら教えてください。

*1:記事にもあるように最近は良い感じに放置して貰ってるので、ベッタリメンターというよりは一旦ひとでくんさんに話して最適な会話先を探したりする足掛かりにしたり、僕が突飛なことをやるときに相談役というか他の人とのパイプをやってもらうという感じでになってきている気がする