読者です 読者をやめる 読者になる 読者になる

ビジネスチャットSync(シンク) 公式ブログ | Wantedly

無料で使えるビジネスチャットSyncの使い方や、仕事術・コミュニケーションに関する記事などを紹介します。

プログラミング歴25年のベテランが教える、アプリ開発で大事な2つのこと iOSエンジニア 杉上 洋平の仕事術

Wantedlyの仕事術

「部分最適=全体最適とは限らない。常に問題の本質を考えること」

久々の「Wantedlyの仕事術」の更新です。 第8回はプログラミング歴25年、iOSエンジニアの杉上です。 アプリケーション開発についてはもちろん、チームリーダーの側面からマネジメントの方法についても伺いました。 また、エンジニアとデザイナーにオススメのツールの紹介も! 開発者必見の内容です。

f:id:wantedly-dojo:20161024091022j:plain

マネジメントで大事なのは、気軽に質問してもらえる環境を作ること

-チームの仕事をうまく回す上で気をつけていることを教えてください。

うまく仕事を回していくために気をつけていることは、気軽に相談してもらえる環境を作ることです。30分考えてもわからない場合は、遠慮せずに質問してね、とメンバーには伝えています。1人で抱え込まず、チームで一緒に取り組むことで解決の迅速化と、課題の共有を図っています。相談は悩みを言語化して自分が客観的に問題を捉えなおすので、話しているうちに自己解決する場合も多いです。

ソフトウェア開発のプロジェクトマネジメントは不確定要素との戦いだと思っています。未来に発生しうる可能性のある仕様や技術的な課題を日々意識しつつ、認識した課題については優先度や影響範囲を鑑みながら、事前に対策が講じえないか考えます。とはいえすべての不確定要素を課題として見える化するのは難しいので、開発のフェーズによってスケジュールを考えてます。例えば、まだ見えていない課題が20%ぐらいありそうなので、バッファを◯日持とうなど、ということです。

タスクは常にそれぞれの優先度を意識しています。とくにユーザーへのインパクトの大きいものは優先度高く対応し、フィードバックを早く得られるよう心がけています。誰かのタスクを止めてしまう可能性がある問題は早めに対応してチームが円滑に開発できるよう務めています。

開発で大事なのは、ユーザーフィードバックを鵜呑みにせず、彼らの抱える本質的な悩みを捉えること

-iPhoneの日本上陸と、iOS開発歴が同じということで、これまでに数多くのアプリケーションを開発してきたと思いますが、開発の際に大事にしていたことは何ですか。

2つあって、1つ目は何のためにアプリを開発しているのかを明確にすること。目標をはっきりさせるということですね。ユーザーにどんな体験をしてもらいたいのかを特に大事にします。また、自分も1ユーザーとしての観点を忘れないように気をつけています。

2つ目はユーザーのフィードバックを大切にすること。開発して投げて終わりではなく、ユーザーがフィードバックしやすいような環境を整える。一方で、全てのフィードバックを鵜呑みにしないようにしています。ミクロで細々と対応していると、マクロな視点で見たときに使いにくくなっていることもあります。部分最適が全体最適であるとは限りません

Syncを例にとってみましょう。Syncの開発で、私たちが目指したのは、誰でも使いやすい、極限までシンプルで洗練されたチャットツールです。他のサービスと連携することで補える機能は極力入れないようにしています。例えば、よく意見としていただくのが、タスク管理機能の追加です。Syncでは、タスク管理をTrelloというツールと連携することで可能にしています。何故なら、ユーザーが求めているのは、Syncで一元化してタスク管理を行えることであって、Sync自体にタスク管理機能をつけることではないからです。それだけが唯一の解決策ではありません。Syncの設計を変えないと、本当にユーザーの悩みは解決できないのか、問題の本質は何なのか、ユーザーフィードバックを受けて機能改善をするときは、常にそういったことを考えるようにしています。

-エンジニアの方向けの質問になりますが、アプリ開発においてオススメのツールを教えてください。

f:id:wantedly-dojo:20161024091028j:plain

エンジニアに特化したものだと沢山あるので、デザイナーとエンジニアを仲介する上での便利なものを紹介したいと思います。

1つ目は、zeplin。デザインのレイアウト指示書の作成が不要になるツールです。これを使うと、デザイナーとのコミュニケーションにおけるコストが大幅に削減されます。Sketchで作成したデザインを流し込むだけで、コンポーネントの位置、サイズ、カラーなどを取得。さらに、デザイン上に直接コメントを残すことができます。

zeplin.io

2つ目は、Prott。これは、複数の画像をつなぎ合わせ、アニメーションを指定することで、簡単にアプリの画面遷移を疑似体験することができるサービスです。それだけでなく、画面遷移図を自動生成してくれます。これまでは、keynoteに遷移図を書いてもらっていましたが、開発中に遷移図が当初と変わってしまうと、その度に書く必要があり、レイアウト指示書と同様、やはりデザイナーの負担に。Prottのおかげで、途中で遷移図が変わってもすぐに修正できるので、以前より素早いプロダクト開発が可能になりました。

prottapp.com

プログラミングを続けるコツは、概念理解よりも、パターンを覚えること

-杉上さんは、小学3年生頃にプログラミングを始めたそうですが、始めたきっかけはなんだったのでしょうか。

きっかけは図書館にありました。父が仕事で使うために買ってきたパソコンがホコリをかぶった状態で自分の部屋に置いてあったんですね。パソコンでゲームができることは知ってたので、なんとか自分で作れないかと思い、図書館でゲームのコードが書いてある本を探したんです。そしたら、1,000行くらいのコードを書けばゲームが作れることがわかった。なので、ひたすら1行目から写して、ゲームを作ってを繰り返していました。自分が好きなことをしたかったから、その手段としてプログラミングを始めたって感じですね。

-好きなことのためよりも、仕事で役に立つからとか、英語のようにこれから必須スキルだからという理由でプログラミングを始める人もいますが、挫折せずに続けるコツがあったら教えてください。

理論を理解することも大事ですが、コードを書く体験も大事にすることプログラミングの最初の挫折って、概念がわからないからという理由が多い気がしています。なまじ勉強ができる人は、プログラミングの参考書の理論を全部わかってから、となりがちなのですが、プログラミングは抽象度が高い概念。1から全部裏側まで理解しようとしたり、基礎をマスターしてからとかやっていると、かなり大変です。

だから、始めはパターンを覚えるだけでいい。ツギハギでもいので、自分が動かしたい動きがエラーなく稼働するように、いろんなパターンを引っ張ってくっつけてみる。それを繰り返すうちに、どんなコードを書けば、どんな動きをするのか体験としてわかってきます。英会話が実際に話してみないと、上達することが難しいように、初めのうちは理論の理解はほどほどに、コードをとりあえず書いてみる。

あとは、自分が欲しい動きを目標にやることですね。こんな動きができるように書いてみましょうというより、自分が作りたい形を目指す方がモチベーションを保ちやすいですから。プログラミングは最初の壁を乗り越えると、どんどん勉強するのが楽しくなってくるので、その壁を乗り越えられるように、頑張ってみてください。

何をやるかより誰とするかが大事なワケ

-最後に、仕事を楽しんで行うために、杉上さんが大切にしていることを教えてください。

何をやるかも大事ですが、誰とやるかも大切にしています。前提として、自分の能力を活かせる分野の仕事を選ぶことも大切なため、難しいところではありますが、何かが悪くても、一緒に働く誰かがよければ、その何かは良くなっていく可能性があります。逆に、何かが良くても、一緒に働く人が自分と合わないと、何かは次第に劣化していく。

働く前にどんな人と一緒に仕事をするのかを判断するのは難しい。そこのしこりを解消するサービスとして、手前味噌ですがWantedlyを使う人が増えたり、長期でインターンをできる会社がもっと増えていくと、仕事を楽しめる人がもっと増えていくのではないかな、と思います。

f:id:wantedly-dojo:20161024091025j:plain

まとめ

  • マネジメントは相談、情報共有しやすい環境づくりがキモ

  • ユーザーフィードバックを鵜呑みにせず、問題の本質を考えること

  • プログラミングの最初の壁を乗り越えるには、理解はほどほどに書いて、動かしてみること

ユーザーの問題の本質を考えることは、エンジニアリングだけでなく、様々な状況に対応できる考え方ですね。小手先で目の前の課題を解決するのではなく、少し時間がかかっても大局的な問題を解消することを意識すれば、より満足度の高いアウトプットに繋がるはず。是非、皆さんも実践してみてください!