ソフトウェアエンジニアは新しく何かを開発する際に、技術的に可能かどうか、どう実装すればいいか、みたいなのを先んじて考えがちな気がする。 そういうボトムアップ的な思考は技術を知っているが故に出る自然な思考なのだが、私の経験上そういう思考で作られたものは大体使いづらい、いわゆる gomi が出来上がる。 なぜか?それは UI を考える際に実現可能性や実装のしやすさを優先してしまうから。 ここでいう UI とは WEB サービスやネイティブアプリなどに限らず、ライブラリなどであれば API を指す。 私は数年前から UI → 実装という開発順序で開発をしていて、それは以下のような感じ。 まず実現可能性を窓から投げ捨てる 素晴らしいと思う UI を考える その素晴らしい UI を実現するための実装方法を考える こういう感じで進めると、ほとんどの場合、素晴らしい UI を実現するための方法がすご