今年のざっくりとした忘備録
駄文。今年のざっくりとした忘備録
テーマや主張はない。殴り書きだ。
今年は大きく分けて2つのプロジェクトに関わった。
その際に自分の考え方が大きく変わったので、綴っておく。
上半期の私はMacBookを使ってWebシステムの開発をしていた。
納期はかなり緩くて、マシンもそれなりによいものが用意された。
不満があるとしたら、逆に得るものがないくらいと感じていたこと。
時間が余っていたので前々から気になっていたサイトを覗いていた。
最近ちらほら見かける、問題を解いて自分のコードを見てもらってスカウトが飛んでくるようなあれ。
時間があったので、問題を解いた*1
いくらか問題を解いていくと、コードを拝見したといってスカウトのメッセージが届いた。
転職活動も近いうちにしないといけないと思ったので、3社ほど足を運んでみた。
結果的に、それらの会社に入ることはなかった。*2
その頃は「とりあえずそろそろPHP以外の言語を触りたい。端末はMacしか使いたくない。自社でのサービスを持ってるところがいい」
こんな感じの希望をしていたと思う。*3
このとき思ったことが
「ネットではMacを使ってWebの開発は当たり前みたく言われているけど、私の周辺に限って言えばまだまだWinが多い。仮にMacだけ使う会社に入れても、ずっとそこの会社にいる保証もないし、Winは触れるに越したことはない(MacがWinよりWebの開発に向いている事自体の考えは変わらないけれど)」*4
そんな中、下半期になって配属されるプロジェクトが変わった。
使用する端末のスペックが落ちた。最初はそれでもMacだったのだが、
それも途中で壊れて起動しなくなり、さらに貧弱なWin8端末が支給されることになった。
まともにIDEすら動かないのでメインにするエディタを色々試していた。*5
まともなスペックのマシンを与えてくれる会社にいないのが悪い、くらいに思ってた自分がこんな状況になった。*8
最初の気分は最悪だったが、一ヶ月くらいすると意外と慣れてくるものだった。
このプロジェクトで使用した言語はPHPやjs(jQuery)といった、端末と揃って「なんてレガシーなプロジェクトなんだ。。。」と思っていたし、こんなプロジェクトから得られるものってあるのだろうかとすら考えていた。
ただ、Winに慣れるよい機会ではあった。
プロジェクトは新規のシステムで、上半期とうって変わって納期は厳しかった。
かつ明確な仕様がなかったので、プロトタイプ的なものを作って実物を見せてから細かい変更をしようというスタイルで進めていた。*6
端的に言うと、このプロジェクトは失敗した。少なくとも私の中では。
問題点は一つでないが、自分がうまく行かなった部分に関して言えば、
自分が思っていたよりも自分がコードが書けなかったことを痛感した。
オブジェクト指向がわかっていなかった。
モジュールを分割したり、処理を共有化したり、
あとは分かりやすいコードにしようとコメントを残したり、みたいなことはこれまで通りに行った。
露呈したことは、それでも頻繁に起こる機能修正の中、思っていた以上に修正がききづらかったこと。
それはおそらく適切にモジュールを分割できていなかったこと。
プログラムやオブジェクト自体に意識を囚われすぎていたこと。
おそらく大切なのはインターフェース(メッセージ)やデータへの着目。
リーナスも言ってるじゃん
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
悪いプログラマーはコードのことを考え、良いプログラマーはデータ構造とその関係性を考える
http://www.utali.io/entry/2016/12/05/184002
www.utali.iohttp://www.utali.io/entry/2016/12/05/184002
このプロジェクトのリーダーはかなりしっかりしたコードが書ける人で、
またその人も決していい端末を使っているわけではないのだけれど、今まで見た人の中でも1,2を争うほどにコードを書くのが早かった。それが自分にとって結構な衝撃だった。
また、その人がコードを書く際に意識することと、私が意識することには違いがあった。
振り返ってみてもリーダーの考え方が正しかったように今でも思う。
なるべくリーダーの思想を取り入れようとあれとこれと質問していた。
なんとかプロジェクト自体に区切りはついて、私もWinでの操作に抵抗がなくなった
(逆にMacの感覚をちょっと忘れ始めている)。
このプロジェクトはかなり辛かった。自信も喪失したし、プログラマを続けていくこと自体考えなおす状況にもなった。
なんだかんだまだ続けているが、続けていけるのか様子見な姿勢になってしまっている。
やめるなら早いほうがよいのだろうけど。
自分がコードを書く際に大切だと意識していたことのいくつかは、
実は他愛のないこだわりだったことだったと感じた。
正直続けていけるかよく分からなくなったけど、頑張ろうとは思っている。
そんなこと言いながらなんとか転職先が決まった。*9
今は、目新しい技術をちょっとつまんで、勉強した気になるよりは
PHP,Jsを使ってしっかりとしたコードを書けるようになりたいと願っている。
===========================
*1 アルゴリズムや数学の素養が足りてないと実感した。
*2あまりに質がバラバラで、あまりあてにならないのだけど、実際にコードを見て、コードの内容の話をしてくれたのは1社だった。
*3適当感が否めない。現に「どいういうキャリアで進めていきたい?」と言われても具体的によくわからなかったし、それ私が決めるのかとさえ思った」
*4 そう考えを改めた途端「うちはMacしか使わない!エンジニアならMacでしょ!」という会社にあたって撃沈したからうまくいかないものだなと思った。
MSでもMacを使ってる話を聞くと、MSはWinみたいなOS流行らせてくれた責任取ってくれよと感じざるを得ない。
*5 試したのはvim.、Sublime、Atom。最初にvimを試したが何故か保存が異様に遅いのでやめた。sublimeも作業しているとたびたび重くなったのでやめた。sublimeが遅いならAtomは地獄だろうと思ったが、思ったよりさくさく動いた。それでもたびたび謎のフリーズ(こいつがいつまで経っても収まらない)が発生してメインで使いながら常にもっといいのがないかと考えていた。結局vimの遅い原因を調べてあるプラグインが原因だったのでvimに舞い戻ってきた。emacsはダウンロードして開いた瞬間エラーが出たので諦めた。
*6 プロトタイプモデルっぽいが、その割に最初に完成させる画面の機能ががっちりとして複雑すぎた。その時点で危ない匂いがしていた。最初はスモールスタートの想定だったらしいが、想定の時点と作り込むシステムの形にズレが生じている。
*8 このプロジェクトからHHKBというキーボードを使い始めた。理由はMacとWinで共有して使えそうなキーボードだったため。
*9 上記で綴ったコード提出系の転職サイトは使っていない。Macも使うだろうけど、M上半期のように「Macだけ使いたい」と言っていれば多分落ちていたであろう。来年から行く予定。