カンボジアで働いている人の備忘録

24歳、なんかカンボジアで起業したみたいです(他人事)

カンボジア人が作ったWEBサイトを修正してて感じたこと

ここ3ヶ月くらい、カンボジア人が作成したWEBサイト改修のお仕事にかかりっきり。その中で感じたことというか、文句をいくつか挙げていこうと思う。

f:id:wn_trinity:20160606190339j:plain

ユーザー目線でレイアウトできない

値段とか、写真とか、そういうクライアントが要求した項目は全て表示されているが、めっちゃ見辛いし使いにくい。

ボタンとボタンの感覚が異常に狭くて誤操作を招きやすかったり、テキストの装飾が少なすぎて読みにくかったり。

この辺はデザインセンスがなくても、「こーしたら使いやすいだろうな」っていうユーザー目線の考え方があれば上手くやれるだろと思った。

ちょくちょくサボった形跡がある

スマホ対応をしようとして諦めた形跡があったり、ネットから丸コピペしたせいでいらない処理もくっついてて激重になってたり、明らかなバグが放置されてたり。

スマホ対応に関しては、クライアントが最初から要求していたのにも関わらず実装されていなかった。

納期の問題だったのか、スキルレベルの問題だったのか、どっちだったんだろう。たぶん両方じゃなかろうか。

将来的なコストを考えていない

プログラミングにはDRYと呼ばれる原則がある。「Don't Repeat Yourself」、意訳すると「同じ記述を繰り返すんじゃねぇバカ」という意味だ。

例えば、1つの部品を100回コピペして100個に増やし、色んなところに組み込んで使いました。あとでその部品を修正する必要が出てきました。するとどうなるか?100箇所も修正し、影響が無かったか100箇所でテストする必要がある。こんな馬鹿げたことはない。

共通の部品を1つ作り、必要な箇所で呼び出す。こうすれば、修正があったとしても共通部品ひとつ手直しすれば済む。

コピペをするのは非常に楽で、開発自体は早くなるかもしれない。しかし問題点の方が多い。なぜかというと、何かしらの変更があった際、膨大なコストが掛かってしまうからだ。

こういう例は「技術的負債」と呼ばれる。システムが肥大化すればするほど、後のメンテナンスコストが倍々に膨れ上がり、手がつけられなくなってしまうからだ。

カンボジア国産のシステムがどれほど運用されているのかは知らないが、将来的に色んなところで問題が起こりそうだな、と思う。

クライアントの要求の意味を理解していない

WEBサイトには色んな情報や機能があって、その中にも優先順位がある。

「絶対に表示・機能させなければならない」「とりあえず表示しときたい」「あればいいけど、なくても構わない」という風に、各コンテンツや機能の振り分け作業を行うフェーズが必要だ。

その時に求められるのは「なぜ?」を考えるロジック。「なぜその情報を表示するのか?」「どうしてこういう機能が必要なのか? 」ということに関して、クライアントやユーザーにしっかりヒアリングし、取捨選択を行う。

絶対に必要なモノなのに「よく分かんないから省いていいか」となんとなく切り捨ててしまう。その結果、クライアントが求めるレベルのプロダクトが出来上がらない。

クライアントの要求の重みであったり、理由であったり、背景であったり。そういう部分を理解していれば「なんとなく」で済ませられないハズだと思うんだが...今のカンボジアの教育レベルだと、原因と結果を結びつけるロジック部分がどうしても弱いのかなと。

先を読む力が足りない

プログラミングに求められるのは、ここを修正するとA機能とB機能に影響が出るな...とか、そういう先を読む力だ。要するに、原因と結果を考えるロジカルシンキングが特に重要。

これが足りないままプログラミングすると、大抵は悲劇が待っている。

影響範囲を考えないまま、目の前の部品を修正する。実はその部品はシステム全体で使っているものだったため、他の箇所でバグが頻発。1のバグを叩いたら10のバグ発生、というにっちもさっちも行かない状況に。

共通部品の影響範囲を考慮しないで、目の前のバグだけ直したんじゃダメなんだよ...本当に。

さいごに

既存のコードをより良いものに書き換える作業をリファクタリングと言うのだけど、これは非常に良い経験。

「なんだこの作りは!許せん!」とムカつくことも多いけど、ムカついた回数だけ成長出来てるような気もするので、前向きにやってきたい。