文系プログラマによるTIPSブログ

文系プログラマ脳の私が開発現場で学んだ事やプログラミングのTIPSをまとめています。

低スペック環境とプログラマの関係

密接な関係です。
f:id:treeapps:20161022211353p:plain

いきなりですが、

プログラマに低スペックな環境を与えてはいけない

と私は考えています。

逆に、もしプログラマを苦しめたいなら、低スペックPCや貧弱なネット回線を与えると、簡単に苦しめる事ができます。

低スペック環境がもたらすこと

低スペック環境の定義

厳密な低スペックの定義など無いのですが、今回は仮に以下を低スペックと定義します。

  • ストレージがSSDではない。
  • メモリが16G以下である。
  • モニタが24インチ以下である。
  • ネットワークの回線が貧弱である。
  • 無線LANがプツプツ途切れる。
  • 机にパーティションが無い。

SSDでないことによる弊害

OSの起動やアプリケーションの起動などが非常に遅いので、「ま〜だ起動終わりませんかね〜?」と、「ボーッと画面を眺める時間が増える」ことになります。これが非常に勿体無い。

ボーッと眺めている間に別の作業をしたら?と考えると思いますが、別の作業をすることで更に負荷がかかり、トータルすると個別に処理が完了するのを待つ時間よりも多くの時間がかかってしまう事になりかねません。そうすると、すこしでも生産性を上げようとしたことが逆に生産性を下げる原因になってしまうことさえあります。

SSDの性能ですが、最近のSSDは昔のSSDのようにプチフリしたり寿命が極端に短い事も少ないし、読み込み・書き込み速度も飛躍的に向上しているので、快適になることは間違いありません。

メモリが16G以下であることの弊害

8Gで十分じゃない?という環境もあるかもしれませんが、8Gって結構ギリギリだと感じています。IDEやアプリケーションサーバに少し多くメモリを割り振ったら使い切ってしまうくらいの容量です。最低16Gあれば、プログラマが色々な事にチャレンジする事ができると思います。

例えば、ローカルでDockerやVagrantで仮想環境を構築しようとすると、それだけでドカッとメモリが奪われます。一番最悪なのは、「DockerやVagrantを使いたい。でもメモリが足りなくてそれができない。だから新規案件でもDockerやVagrantを採用しにくい。」という事が起きてしまう事です。

メモリが少ないという理由で生産性や利便性を向上するための手段が奪われ、可能性が潰されている。」というのは最悪極まりないですね。こういう状況に置かれている人って、結構いるのではないかと想像しています。声を上げないだけで、潜在的には沢山いそうに思えます。

他にも、macを使っている方で、ローカルでVirtualboxやVMWareFusionで、modern.IEの仮想イメージを使ってIEやEdgeで動作確認したい、でもメモリが足りなくてそれができない、という例もあります。
Free Virtual Machines from IE8 to MS Edge - Microsoft Edge Development
modern.IEは割り当てるメモリ容量が仮想環境上のOSのパフォーマンスにダイレクトに影響するので、2G程度の割当ではWin10の起動時間にかなり時間がかかってしまうので、最低4Gのメモリを割り当てたいところです。

モニタが24インチ以下であることの弊害

画面が狭いと表示できる情報が減るので、Control + tab等でのウインドウの切り替えの回数が増えます。一瞬で切り替わるじゃん?と考えると思いますが、問題なのはその回数です。塵も積もれば山となります。1回の動作が数秒だとしても、それが数千・数万回行われれば、それなりの時間の浪費になります。

また、ブラウザ+開発者ツール、タブ分割したターミナル、slackやhipchat等のチャットアプリ、など、ウインドウの切り替え無しで全ての情報が閲覧可能な状態にあると、生産性が向上しやすくなっています。

ネットワークの回線が貧弱であることの弊害

ファイルのダウンロード速度や、アップロード速度が低いと、やはり待ち時間が増えてしまうので、ボーッと眺める時間が増えます。

それが社内だけでの話で収まるならいいのですが、社外に及ぶと最悪です。例えば「社内にビルドサーバがあって、そこから本番環境やS3等にファイルをアップロードする」という場合は、社内からインターネットへのアップロード速度が遅いと、デプロイする時間に影響します。お客さんから「なんかデプロイ時間長くない?何にそんな時間かかってるの?」と言われてしまった時に、「いや〜、実は転送速度がくっそ遅くて、デプロイ時間の95%は転送時間なんですよね〜 hahaha !!」なんていったら大変なことになってしまうでしょう。

無線LANがプツプツ途切れることの弊害

これはストレス溜まりますね。

気持ちよく開発しているかと思ったら、プツッ。

無線LANがプツッっと途切れると、プログラマの集中もそこでプツッと途切れます。

有線LAN最強説を唱えたいところですが、ケーブルに足を引っ掛けたりする可能性が無いとはいえないし、物理的にモノが減った方が管理するモノが減って皆嬉しくなるように思えます。

机にパーティションが無いことの弊害

よく「パーティションが無い方が周りとコミュニケーションが取りやすい」と言う方がいますが、私の個人的な意見を言うと、「左右にパーティションは無くてもいいけど、正面にはあって欲しい」と思っています。正面の人や斜めの人達と視線があったりする事が非常に嫌だし、想像以上に集中力に影響を与えます。左右はなかなか視線が合うものでもないし、隣の人とは体の向きを変えて直接口頭で話す機会は沢山ありますね。

例えば、↓この環境で1,2の人達が3,4の人達と話そうとするのではなく、

人1 人2
人3 人4

↓3,4の人は5,6の人と話す事になるような座席にすると、視線云々で集中力が途切れる事も減りそうなんですが、どうですかね。

人1 人2

////////////////// ← パーティション

人3 人4

 

人5 人6

////////////////// ← パーティション

人7 人8

確証は無いのですが、ネット上にはパーティションが無い職場は生産性が落ちる傾向がある、といった情報を沢山見るし、私自身も前の席の人達と視線が合うと嫌ですね。今の環境がパーティションが無くて、どうしてもパーティションが作れない場合は27インチディスプレイ等をパーティションの代用とするしかなさそうです。

どうやって低スペックを見分けるか

簡単です。ボーッと画面を眺めて止まっている時間が長いかどうかで見極める事ができます。

例えば、「いや〜、負荷で画面がフリーズしちゃって、今操作受け付けないんですよ〜♪♪♪」等と、奴隷の鎖自慢のような自虐を言い始めたら危険です。

他にも、「いや〜、APサーバの起動に時間がかかるので、なるべく再起動しないよう工夫してるんです〜」等と、本質的な工夫ではない事を言い出してもアウトです。

プログラマの中にはこういった事を自虐的に喜々として語る人がいたりするので、笑ってないで解決に導くべきですね。

奴隷の鎖自慢、ダメ。ゼッタイ。自慢するのは凄いモノを開発できた時や、何か問題を解決できた時にしましょう。

雑感

この記事を書いた理由なのですが、以下の記事を読んだ事がきっかけとなっています。
togetter.com
この記事、とても面白いです。集中力が2倍に上がったことをどう判断してるんでしょうね。集中力が2倍になると、何故生産性が2倍になるんでしょうね。不思議な世界があるんですね。


↑これも面白いです。多分ちゃんと計算した事が無いのだと思います。。。

従業員が100人いたとすると、
人数が20%減る → 100 * 0.8 = 80
20%向上させる → 80 * 1.2 = 96

100%に戻ってませんね。こういう人は例えば株価に対しても「株価が50%減になってしまった。50%増にして元に戻そう!」とか言いそうで怖いです。

現在の株価を100円とすると、
50%減少 → 100 * 0.5 = 50円
50%増加 → 50 * 1.5 = 75円

50%減少したなら、現状から100%増えないと(2倍にならないと)元に戻りません。 この頭脳だと「50%増くらいなら現場の工夫で達成できる筈だ!」とか言いかねませんね。本人は50%増のつもりなのに、従業員は現在の2倍の成果を求められ、耐えかねた従業員が次々逃亡してしまう、と。その結果、「一体何故なんだ。何故目標が達成できないんだ。私についてこれる人間が中々いないという事か。フッ・・・」のように考え、それを延々と繰り返している例もありそうで怖いです。


話は戻りますが、もしプログラマの生産性を上げたいなら、給料を上げるよりも、単純に環境を向上させると上がりやすいと思います。従業員が全体的にスキルアップする事による生産性向上が理想ではありますが、それは時間がかかるし向上する保証がありません。環境の向上であれば、100%生産性が上がる保証が有るというわけではありませんが、少なくとも各人の能力に関係無く待ち時間を減らす事は確実にできます。

「集中力を2倍高めて生産性を2倍にする」と言っている人達や、算数ができない人達を雇うことやめれば、そういった費用の捻出もしやすいでしょうし、今一度本当に必要なものと必要でないものの整理が必要になりそうです。