1年たった
久々にヌバヌバの本拠地に来ております。一年たって色々と目まぐるしく変わりました。会社が買収されたり、ボスが変わったり、一時的にSEをやったり。なんとかかんとか、今でも開発職にとどまっております。今回Conferenceでもらったバッジにも「Software Engineering Lead Japan」とちゃんと書かれてました。
去年の2月1日にこんな記事 を書きました。
~~~~~~~
一年後、どうなっているべきかを5段階にまとめてみました。
5 (びっくりされる)
- 気が付いたらOpenSolarisに移植してる
- 2倍速くしてる
- 驚くべき新機能を作った
4 (トップエンジニアとして認められる)
- 実はFreeBSD8にMergeした
- 30%速くした
- えぐいトラブルのEscalationをいくつも解決
- 将来のデザインをする
- 昔から悩みの種だったBugを直した
- I18Nとテスト自動化完了
- 他社からのシームレス移行ツール
3 (こいつ、USで普通に働いてるレベルだな、と思われる)
- Bug 100個直す
- トラブルのEscalationを解決
- 仕様書を作る
- ソース全部読む
- プロジェクトの一員として働く
- 結構便利な新機能を作った
- xxxを xxx形式にしたりとか
2 (まあ、日本の金ならこういうやつがいてもいいか)
- Bug 50個直す
- 日本のお客さんは喜んでいるらしい
- たしかに、手の回らないところをやってくれて便利かもな
1 ( クビ )
- なんか、日本にもいるらしい
- 要望だけ多いやつだ
- こいつのコードレビューしてる時間がもったいない
順当に行くと1か2になるわけですが、ひとまずは3を目指してがんばるっす。一夜にしてスーパーエンジニアに生まれ変わったりする奇跡が起これば4か5を狙うわけですが、ま、地道に行かんとね。
~~~~~~~
1年たって、
・Bugは80個以上直した
・製品のメインラインと言ってよい機能を自分でsmall specを作ったうえで、いくつか実装した
・EscalationでPatchを出した
・PythonはなんとかよめるけどCは全然理解できてない
・アメリカからみると立ち位置がふわふわしている
ということで、2まではいったけど、3にはあと一歩、という感じでしょうか。あと一年続けて3になれるのかがポイントになりそうですが、割と今岐路に発っており、毎日考えることが多いです。
去年の2月1日にこんな記事 を書きました。
~~~~~~~
一年後、どうなっているべきかを5段階にまとめてみました。
5 (びっくりされる)
- 気が付いたらOpenSolarisに移植してる
- 2倍速くしてる
- 驚くべき新機能を作った
4 (トップエンジニアとして認められる)
- 実はFreeBSD8にMergeした
- 30%速くした
- えぐいトラブルのEscalationをいくつも解決
- 将来のデザインをする
- 昔から悩みの種だったBugを直した
- I18Nとテスト自動化完了
- 他社からのシームレス移行ツール
3 (こいつ、USで普通に働いてるレベルだな、と思われる)
- Bug 100個直す
- トラブルのEscalationを解決
- 仕様書を作る
- ソース全部読む
- プロジェクトの一員として働く
- 結構便利な新機能を作った
- xxxを xxx形式にしたりとか
2 (まあ、日本の金ならこういうやつがいてもいいか)
- Bug 50個直す
- 日本のお客さんは喜んでいるらしい
- たしかに、手の回らないところをやってくれて便利かもな
1 ( クビ )
- なんか、日本にもいるらしい
- 要望だけ多いやつだ
- こいつのコードレビューしてる時間がもったいない
順当に行くと1か2になるわけですが、ひとまずは3を目指してがんばるっす。一夜にしてスーパーエンジニアに生まれ変わったりする奇跡が起これば4か5を狙うわけですが、ま、地道に行かんとね。
~~~~~~~
1年たって、
・Bugは80個以上直した
・製品のメインラインと言ってよい機能を自分でsmall specを作ったうえで、いくつか実装した
・EscalationでPatchを出した
・PythonはなんとかよめるけどCは全然理解できてない
・アメリカからみると立ち位置がふわふわしている
ということで、2まではいったけど、3にはあと一歩、という感じでしょうか。あと一年続けて3になれるのかがポイントになりそうですが、割と今岐路に発っており、毎日考えることが多いです。
ひー。もう9月か
あのあと、「テンプレートワーク」プロジェクトをおおむね終わらせたあたりで、いろいろとSE的(サポート的?)な話が多くなり、32歳になったりとか、風邪ひいたりとか、いろいろあってあっという間に9月です。
日本もアメリカも、開発で中心になってゴリゴリ書いているのは20代。日本とアメリカの違いは、アメリカの場合その実力に応じて20代でも開発陣のトップとして認識されることですね。最近はinternet, blog , twitterの流れで日本でも個々のデベロッパーに注目が集まってきて、はてなの人がGREEに転職、みたいな話がニュースになっちゃうくらいなので、少し状況は変わってきたのかもしれませんが。
はなしずれましたが、要するに、年取ったなあ、ということです。。
さて、日ごろの超率直な意見(愚痴?)はtwitterに書いてるし、Devワークに時間をかけられてないし、これから出てくる新バージョンのことはなかなか書きづらいし、ちょいとネタとしては難しくなってきたなあ、というのが正直なところ。
最近ちらっと思ってるのは、会社の公式ブログにテクニカルな内容をかいてみようかなあ、ということですね。公式ブログって、マーケよりエンジニアが書いた方が絶対おもしろいと思うんです。いっそのことパートナーもお客さまも見込客も、NDA情報以外は全部ブログ見て、って感じになればいいなあって。ま、それはやりすぎかもしれないけど。
日本もアメリカも、開発で中心になってゴリゴリ書いているのは20代。日本とアメリカの違いは、アメリカの場合その実力に応じて20代でも開発陣のトップとして認識されることですね。最近はinternet, blog , twitterの流れで日本でも個々のデベロッパーに注目が集まってきて、はてなの人がGREEに転職、みたいな話がニュースになっちゃうくらいなので、少し状況は変わってきたのかもしれませんが。
はなしずれましたが、要するに、年取ったなあ、ということです。。
さて、日ごろの超率直な意見(愚痴?)はtwitterに書いてるし、Devワークに時間をかけられてないし、これから出てくる新バージョンのことはなかなか書きづらいし、ちょいとネタとしては難しくなってきたなあ、というのが正直なところ。
最近ちらっと思ってるのは、会社の公式ブログにテクニカルな内容をかいてみようかなあ、ということですね。公式ブログって、マーケよりエンジニアが書いた方が絶対おもしろいと思うんです。いっそのことパートナーもお客さまも見込客も、NDA情報以外は全部ブログ見て、って感じになればいいなあって。ま、それはやりすぎかもしれないけど。
tempita を使ってみる。
ちょいとpython内でテンプレートを使う必要があって、これを使え、とお上から提示されたtempitaというモジュールを使ってみました。
http://pythonpaste.org/tempita/
メモ:
portsの利用が限定されている(そしてunzipすらない)OS上でどうやってインストールするのかと悩んだが、
/usr/local/lib/python2.6/site-pachages の下に、tempitaディレクトリをつくり、 その中に __init__.py と _looper.py を置けば動く、と。
上記のページの言うとおりに使えば概ね動く。templateを展開するsubstituteの引数に(name='takka', job='se' .... ) と
列挙するのはとても大変。locals() を渡せばローカル変数のディレクトリを渡してくれるので楽ちん。
ただ、ローカル変数と、個別の変数を両方指定しようとすると、とたんに方法がわからない。ソースまで見てないけど、
もしかしたら実装されてないのかも。 tmpl.substitute(name='takka', locals()) みたいに指定出来たらいいのにな。
テンプレートの中にIF文やFor文を簡単に埋め込めるのがメリットの一つなんだけど、ちょっと癖がある。
{{if a.flag == 0}}
定型文
{{else}}
私は{{a.name}}です。
{{endif}}
みたいに指定した場合、a.flagが0の場合はa.nameが呼ばれることはないのだけれど、
a.nameが存在しないとテンプレートの展開でエラーとなる。つまり、ロジックはともかく全て
展開できないとだめ、ということで、ちょっと注意が必要。というか、ロジック側に無駄なコードが増えてちょいと残念な気持ちになる。
今開発中の機能、なんとか動きそう、というところまではみえてきたけど、あと3日間でできるかぎりのところまで完成度を上げたい。やっぱり明確なプロジェクトがあると仕事は楽しい。
http://pythonpaste.org/tempita/
メモ:
portsの利用が限定されている(そしてunzipすらない)OS上でどうやってインストールするのかと悩んだが、
/usr/local/lib/python2.6/site-pachages の下に、tempitaディレクトリをつくり、 その中に __init__.py と _looper.py を置けば動く、と。
上記のページの言うとおりに使えば概ね動く。templateを展開するsubstituteの引数に(name='takka', job='se' .... ) と
列挙するのはとても大変。locals() を渡せばローカル変数のディレクトリを渡してくれるので楽ちん。
ただ、ローカル変数と、個別の変数を両方指定しようとすると、とたんに方法がわからない。ソースまで見てないけど、
もしかしたら実装されてないのかも。 tmpl.substitute(name='takka', locals()) みたいに指定出来たらいいのにな。
テンプレートの中にIF文やFor文を簡単に埋め込めるのがメリットの一つなんだけど、ちょっと癖がある。
{{if a.flag == 0}}
定型文
{{else}}
私は{{a.name}}です。
{{endif}}
みたいに指定した場合、a.flagが0の場合はa.nameが呼ばれることはないのだけれど、
a.nameが存在しないとテンプレートの展開でエラーとなる。つまり、ロジックはともかく全て
展開できないとだめ、ということで、ちょっと注意が必要。というか、ロジック側に無駄なコードが増えてちょいと残念な気持ちになる。
今開発中の機能、なんとか動きそう、というところまではみえてきたけど、あと3日間でできるかぎりのところまで完成度を上げたい。やっぱり明確なプロジェクトがあると仕事は楽しい。
不思議なポジションだけど
自分で製品に新機能をいれたり、
BugをFixしたり、
製品のデザインに口を出したり、
開発者とやりとりしながらトラブル対応したり、
勝手にサポートドキュメント作ったり、
他の開発者から、日本のお客さんの要件を聞かれたり、
仕事内容を報告する明確な上司がいなかったり、
(無能な総務Mgrの代わりに)会議室のゴミ箱をきれいにしたり、
(無能な総務Mgrの代わりに)受付の電話をとったり、
新人のSEにきつめの仕事を振ったり、
理想的なラボの構築に励んだり、
お客さんと話したり、
イベントでたちんぼをしたり、
マーケティングのプレゼン資料に口を出したり、
同僚のおしりをたたいたり、
色々大変なことはありますが、このポジションは楽しいです。
BugをFixしたり、
製品のデザインに口を出したり、
開発者とやりとりしながらトラブル対応したり、
勝手にサポートドキュメント作ったり、
他の開発者から、日本のお客さんの要件を聞かれたり、
仕事内容を報告する明確な上司がいなかったり、
(無能な総務Mgrの代わりに)会議室のゴミ箱をきれいにしたり、
(無能な総務Mgrの代わりに)受付の電話をとったり、
新人のSEにきつめの仕事を振ったり、
理想的なラボの構築に励んだり、
お客さんと話したり、
イベントでたちんぼをしたり、
マーケティングのプレゼン資料に口を出したり、
同僚のおしりをたたいたり、
色々大変なことはありますが、このポジションは楽しいです。
50個到達
昨晩、製品コードへの修正コミットがようやく解禁になったため、これまでつくりだめていた
Bug Fixをばしばしとかけました。
100人規模で、なおかつみんな割と独立して開発をしているため、コードの修正時には、他の人が行った修正とバッティングしていたり、論理矛盾を起こしたりしないように、わりと気を使います。
で、数えてみたら、昨年11月に開発者を志し、最初のお勉強Fixを入れてから、これまでに自分がFixしたBugが、50個に到達しました。一つの区切りなので、なかなかうれしいです。
今年中に100個を目指すという道もありますが、がつんと価値があるものを提供できるように、書けるコードのレベルを上げていくというほうが、下半期の目標としては大事かな、と思ってます。
もう7月も終わり。もう1カ月はやくここまで来れるとよかったかな?もっとがんばろう。
Bug Fixをばしばしとかけました。
100人規模で、なおかつみんな割と独立して開発をしているため、コードの修正時には、他の人が行った修正とバッティングしていたり、論理矛盾を起こしたりしないように、わりと気を使います。
で、数えてみたら、昨年11月に開発者を志し、最初のお勉強Fixを入れてから、これまでに自分がFixしたBugが、50個に到達しました。一つの区切りなので、なかなかうれしいです。
今年中に100個を目指すという道もありますが、がつんと価値があるものを提供できるように、書けるコードのレベルを上げていくというほうが、下半期の目標としては大事かな、と思ってます。
もう7月も終わり。もう1カ月はやくここまで来れるとよかったかな?もっとがんばろう。
J1からメールが
いいかげん自分でもわすれそうになりますが、J1というのは、USで私の面倒をみてくれるという触れ込みだった(実際には、まあ、放置プレーな)エンジニアのことです。
アメリカからかえった後、自分なりにできそうなBug Fixや機能追加をやっていて、コードレビューだけは誰かにお願いしないといけないのでチームにメールしたりしてましたが、基本、やることは自分でみつけるっていうスタンスです。
今日、忘れたころにJ1からメールがありました。日本語に訳すとこんな感じ。
「あー、ごめんごめん。そういえば、なんか仕事アサインしたりしてよ、って3月に頼まれてたよね。一人でがんばってるみたいじゃん。あんがと。今後についてはScottUと相談してねんー」
と、内容はかなり投げやりですが、英文的には「You've done wonderful job yourself」とか、「Thank you so much!」とか、褒められているっぽいので、よしとします。
アメリカからかえった後、自分なりにできそうなBug Fixや機能追加をやっていて、コードレビューだけは誰かにお願いしないといけないのでチームにメールしたりしてましたが、基本、やることは自分でみつけるっていうスタンスです。
今日、忘れたころにJ1からメールがありました。日本語に訳すとこんな感じ。
「あー、ごめんごめん。そういえば、なんか仕事アサインしたりしてよ、って3月に頼まれてたよね。一人でがんばってるみたいじゃん。あんがと。今後についてはScottUと相談してねんー」
と、内容はかなり投げやりですが、英文的には「You've done wonderful job yourself」とか、「Thank you so much!」とか、褒められているっぽいので、よしとします。
開発者 in Summer
はい。夏です。スーツを着なくていいのが助かります。
ここ最近はコードフリーズのため、直した/作った機能を製品にCommitできないでいます。
コードフリーズとは、別に吹雪とか財政難のことではありません。製品開発の佳境に、一時的に新規のコードを製品に入れ込むのをやめることをいいます。その間、せこせことFixをため込んでいますが、CR(Code Review: 他の人によるソースのチェック)を受けるのに苦労するのは相変わらずです。時差もありますし、しょせんバーチャルメンバーですし(涙)
最近はアラート通知機能の改善とか、フロントパネルからリアのランプをつくようにしたりとか、Web管理ツールのほげらほげらとか、まあ、ちょこまかといろいろ作ってますが、実際に私のFixがお客様の手元に届くのには数ヵ月後になります。会社が大きくなると、たとえ個々のエンジニアの開発スピードはそのままでも、全体としての作ってから製品化までのスパンは長くなります。場合によっては今お客様が使っているバージョンの4世代先くらいを作ってたりします。それにともなってお客様の求めているものとのずれも出てきますので、そのずれをいかに埋めていくか。それは私のミッションの一つでもあります。
エンジニアリングに転向してから気付けばもう半年。自分のスキルレベルを率直に言うと、Pythonを読むことと簡単なFix/改良ならできるようになった、というレベルでしょうか。半年前も Pythonを読むことならなんとか、と言ってたような気がしますが、そのころとはレベルが違うので、少しは進歩しているかな?
そろそろ本格的にC言語のコードの領域に踏み込まないといけないきもするし、とりあえずPython部分でできることをやるべき、というきもするし、方向性については悩むところです。今はユーザインターフェース部分(Web, コマンドライン)が主ですが、プロトコルやファイルシステム側を志すという選択肢も(道は険しいですが)無くはありません。
どの道を選ぶにせよ、今年中になんらか結果を残さねば、とおもう今日この頃です。
ここ最近はコードフリーズのため、直した/作った機能を製品にCommitできないでいます。
コードフリーズとは、別に吹雪とか財政難のことではありません。製品開発の佳境に、一時的に新規のコードを製品に入れ込むのをやめることをいいます。その間、せこせことFixをため込んでいますが、CR(Code Review: 他の人によるソースのチェック)を受けるのに苦労するのは相変わらずです。時差もありますし、しょせんバーチャルメンバーですし(涙)
最近はアラート通知機能の改善とか、フロントパネルからリアのランプをつくようにしたりとか、Web管理ツールのほげらほげらとか、まあ、ちょこまかといろいろ作ってますが、実際に私のFixがお客様の手元に届くのには数ヵ月後になります。会社が大きくなると、たとえ個々のエンジニアの開発スピードはそのままでも、全体としての作ってから製品化までのスパンは長くなります。場合によっては今お客様が使っているバージョンの4世代先くらいを作ってたりします。それにともなってお客様の求めているものとのずれも出てきますので、そのずれをいかに埋めていくか。それは私のミッションの一つでもあります。
エンジニアリングに転向してから気付けばもう半年。自分のスキルレベルを率直に言うと、Pythonを読むことと簡単なFix/改良ならできるようになった、というレベルでしょうか。半年前も Pythonを読むことならなんとか、と言ってたような気がしますが、そのころとはレベルが違うので、少しは進歩しているかな?
そろそろ本格的にC言語のコードの領域に踏み込まないといけないきもするし、とりあえずPython部分でできることをやるべき、というきもするし、方向性については悩むところです。今はユーザインターフェース部分(Web, コマンドライン)が主ですが、プロトコルやファイルシステム側を志すという選択肢も(道は険しいですが)無くはありません。
どの道を選ぶにせよ、今年中になんらか結果を残さねば、とおもう今日この頃です。
丸一カ月
あきましたねー。 期間があいたのであって、Blogに飽きたわけじゃないです。
5月はいろんな事情でSEチームが崩壊したために代わりにSEワークをすることが多かったため、あまりDevワークのネタはありませんでした。
5月第1週: お休み!
5月第2週: 軽いBugを1つ直した以外は、顧客向けベンチマークテストの準備
5月第3週: ベンチマークテスト本番、トレーニング
5月第4週: 新製品検証、顧客対応、ほげほげBug Fix
こうやってみるとほとんど開発してない。。最後のほげほげBug Fixだけは久々にがっつりコーディングをしました。このBug Fixは予定外の仕事だったので始り方は微妙でしたが、まあ、人の役に立つことは重要です。
SEワークをしていると、自分と同じ速度と質でこれだけのワークをこなせる人間はそんなにいないだろうな、と思います。「自分と同じ速度と質でこれだけのコーディングができる人間はそんなにいないだろうな」と思える日は来るのだろうか。。ま、そこまでいかなくても一人前を目指して引き続きがんばります。
5月はいろんな事情でSEチームが崩壊したために代わりにSEワークをすることが多かったため、あまりDevワークのネタはありませんでした。
5月第1週: お休み!
5月第2週: 軽いBugを1つ直した以外は、顧客向けベンチマークテストの準備
5月第3週: ベンチマークテスト本番、トレーニング
5月第4週: 新製品検証、顧客対応、ほげほげBug Fix
こうやってみるとほとんど開発してない。。最後のほげほげBug Fixだけは久々にがっつりコーディングをしました。このBug Fixは予定外の仕事だったので始り方は微妙でしたが、まあ、人の役に立つことは重要です。
SEワークをしていると、自分と同じ速度と質でこれだけのワークをこなせる人間はそんなにいないだろうな、と思います。「自分と同じ速度と質でこれだけのコーディングができる人間はそんなにいないだろうな」と思える日は来るのだろうか。。ま、そこまでいかなくても一人前を目指して引き続きがんばります。
Application Engineer??
会社によって呼び方は違うかもしれませんが、ヌバヌバでApplication Engineerというと、サポートと開発のアイノコみたいな存在です。サポートで解決できない問題は開発者に回されるんですが、その過程で活躍します。。
最近、ソースコードを読んでプログラムの動作の理解を深めたりしていますが、開発者というよりは、Application Engineerへの道を進んでいる気が。。まあ、それはそれで立派な仕事ですが、私の方向性からはやや外れるので、本業をしっかりしないといけません。
本業のほうはというと、いくつかのBugをなおしつつ、今日久々に手が動いて、あるツールのプロトタイプを作ることができました。XMLを読み込んでコマンドをゴニョゴニョってするツールなんですが、いざ作ってみると、意味があるのかかなり微妙。。ま、pythonでXMLを扱うという意味では勉強になりました。
明日会社に行くとGWです。最初は30日を休んで、6・7は臨機応変に休もうかと思ってましたが、ヌバヌバ帝国では最近、「一週間前に休暇申請を取らねば死刑」という法律が施行されたため、しょうがないので11連休としました。
事前に長期間休みを押さえてその間の仕事を断るのが計画的で善、仕事をやりくりしてつかの間の休みをひねり出すのが無計画で悪、というのにはやや疑問ですが、お上の言うことに逆らってもいいことはありません。会社ではイエスマンで通っているタッカでした。(ほんとか?)
最近、ソースコードを読んでプログラムの動作の理解を深めたりしていますが、開発者というよりは、Application Engineerへの道を進んでいる気が。。まあ、それはそれで立派な仕事ですが、私の方向性からはやや外れるので、本業をしっかりしないといけません。
本業のほうはというと、いくつかのBugをなおしつつ、今日久々に手が動いて、あるツールのプロトタイプを作ることができました。XMLを読み込んでコマンドをゴニョゴニョってするツールなんですが、いざ作ってみると、意味があるのかかなり微妙。。ま、pythonでXMLを扱うという意味では勉強になりました。
明日会社に行くとGWです。最初は30日を休んで、6・7は臨機応変に休もうかと思ってましたが、ヌバヌバ帝国では最近、「一週間前に休暇申請を取らねば死刑」という法律が施行されたため、しょうがないので11連休としました。
事前に長期間休みを押さえてその間の仕事を断るのが計画的で善、仕事をやりくりしてつかの間の休みをひねり出すのが無計画で悪、というのにはやや疑問ですが、お上の言うことに逆らってもいいことはありません。会社ではイエスマンで通っているタッカでした。(ほんとか?)