re:annkara

日々学んだことを書き留めておく。

幸せなシステム開発って何だろうって考えたこと。

大層なお題目をたててみたけども、単なる愚痴に落ち着くんじゃないかと最初に述べておく。

最近関わっている仕事で、幸せなシステム開発って何だろうと思うことが多くて、 自分が普段不満に感じていることと、じゃぁどうすればいいの??ってとこをまとめてみたいと思う。 自分の今の職場がメインフレーム相手に開発してるという前提でのお話となります。

ドキュメントやソースコードのバージョン管理がされていない

これは今に始まったことじゃないんだけど、バージョン管理っていう概念がない、とまでは言わないけど バージョン管理ツールを用いて管理するっていう考え方がない。 エクセルの仕様書はリネームしたり、もしくは修正ページだけ記載したり、色をつけたりで管理したりする。 ソースにいたっても同様で、差分をとれるのは前回との差分、もしくは本番ソースのみ。

だから、頻繁に修正なんか入ったりすると、いつ、誰が、何のために、どんな修正したのか ということを人力で判断しないといけない。

今ならgitやSubversionでも導入して、管理していければいいんじゃないかなって思う。 もちろん、Web系の開発をしているチームでは当然に行われているけど、 いわゆるホスト系(メインフレームでの開発)のチームでは行われていないのが現状。 というか、必要性を感じていないのかなぁ。そういう声全然聞いたことないし。

適切な設計に基づいてソースが書かれていない

これはWebとかホストとか全く関係ないとは思うんだけど、いかんせんソースコードがばかでかい。 ひとつの機能を果たすモジュールのはずなのに、最終アウトプットを出力するための中間処理とかも そのモジュールに組み込んでいて、何がどこでどのように行われているのか全然わからない。 そしてグローバルスコープ万歳の状態。

そういうプログラムに限って、非常に重要な機能を果たしているため、 ちょっと修正するだけでも戦々恐々しながら修正している。

これは何だろうなぁ、、、自分もたいしたスキルを持っている訳じゃないから たいした事は言えないけど、オブジェクト指向とかデザインパターンとかリーダブルコードとか 良い設計の仕方、良いソースコードの書き方とか学んで行くしかないのかなぁって思う。

結局は開発者のスキルを高めることが大事なのか。 そういう意味ではスキルとか高めていこうっていう風潮ないんだよなぁ... いや会社としてはそういうことを謳っているのではあるんだけど、実際に働いている人がなぁ...

納得感のない開発

プロダクトが実際のお客さんに喜ばれるかどうか、逆に喜ばれないんじゃないかと思う開発を実施すること。 そういうプロダクトに限って非常に複雑な仕組みの商品で、システムの実装も非常に苦労するし、 こういうの作っても本当にお客さんに喜ばれんの??って思いながら開発するのは本当につらい。

んーこれはある程度の規模の会社になったらしょうがないのかなって思う。 誰もが納得するプロダクトって難しいよね。

とまぁつらつらと書いたけど

結局は、プロダクトが自分の納得がいくもので、会社としてもこういう状況だからこのプロダクトが必要なんだ、
とちゃんと説明してくれて、開発レベルでいえば適切な開発フローと開発ツールが用意されていて、ソースが汚くても
ちょっとずつリファクタリングしていって、奇麗にしていこうみたいな心構えがあれば幸せなんかなぁって思う。

いやまぁ、そういう会社って少なくない??理想高くない??って思うけど、別に開発フローやツールは自分たちで用意していけばいいし、
そもそもリファクタリングなんてCIツールやテストの自動化が前提にあると思うから、やっぱり納得感のいく開発が
できることが幸せなシステム開発の根幹なのかなぁって思った。
あとはあれか。会社としてもそういうのを許してくれる会社か。お金出すの会社だもんね。

そういう意味では、正しいタイトルは「企業に勤めるうえでの幸せなシステム開発」か。

全然まとまってないけど、とりあえず自分の中で大事だろうなぁって思ったのでまとめた次第です。