从2013.6月中旬到2013.12月,连续参与设计和开发了两个产品(一个是掌拍,另一个是网球圈),并独立完成了这两个产品的 iOS 客户端开发,期间可谓获益良多,一番反省总结归纳,得益主要在『沟通』『产品设计』『技术』这三方面。
沟通
如何才能有效地沟通呢?
就事论事,理性讨论,拒绝个人情绪,特别是不良情绪。
以『发现问题,解决问题』为沟通目的。
坚决把讨论的问题限定在指定范围内,拒绝越界、跑题!
准备充分,准备好:『问题』、『论据』、『解决方案』(至少得清楚自己想讨论的是什么问题)。
以上就是我在参与第一个产品开发时,和负责人『吵架』n 次,失败 n 次后得到的经验和教训。此人是搞营销运维的,口头能力甚强,好几次和他讨论问题的时候,就被他用『偷换概念』+『跑题』这两招击败o(╯□╰)o;然后有几次是被他的市场经验打败(这招『扬长避短』甚是好用的,→_→)。。。
而最重要的教训就是发现一旦带着个人情绪进行讨论的时候,很容易擦枪走火,问题不但没解决,还让彼此都不爽。影响工作~~囧rz
产品设计
产品设计方面的感悟主要是:
从『问题』本身出发(由于想解决一个这么样的问题,所以才做了这么样的一个产品)。
做你需要的而不是做你想要的(focus on what you need rather than what you want)。
为产品设计一套完整的(最好是完善甚至是完美的)『游戏规则』。
如果规则模糊不清晰,一来会导致业务流程上产生 bug,二来不利于开发人员的开发。PS:
但是规则对用户而言应该是是友善的、简单可行的。
先确定业务,再确定功能,继而确定界面,最后根据业务、功能、界面UI等需求确定技术方案。
『和谐』
。产品(主要指客户端)应该有统一的风格,一是 UI 的风格一致,如 颜色、色调、背景图、指示器、文字字体等各种元素应该有一致的风格;二是交互方式的风格一致,如统一使用一种方式(点击或者滑动)来切换视图,各种交互语言(UI 中的文本语言以及提示用户操作、网络超时、任务失败等各种提示语)的风格要一致。『理所当然』
。让用户使用你的产品的时候会觉得『理所当然,就该如此』,像在网速快的时候,一些交互操作应该可以考虑不提示用户交互的进度吧?
技术
技术方面的收获主要是:
更清楚了解 MVC 架构。
对 CoreData 的设计和使用的认知有了质的提升,特别是对 CoreData 的 Relationships(关系)、Entity Inheritance(实体继承)、Multithreading(多线程)这三方面有了深入的认识。
模块化设计的意识有了长进,如网球圈客户端设计时,有意识地设计一个单独模块管理定位。
界面中需要经常更新的一些元素不要写或写死在 xib/storyboard 中,尽量使用 code 来控制,以及根据返回的数据逐步显示对应的界面元素。
其它反思
以史为鉴,从别人的错误中学习,防止跌入同一个陷阱。
像在做掌拍这个产品的时候,跟电信的领导有过接触,发现他们会由于知识的盲点而造成无知,继而提出乱七八糟的想法和需求。不过,想来,自己也常由于知识的盲点而造成无知,所以保持开阔视野,吸收学习新知识才是王道啊。
保持高工作效率的最好方法是:保持大脑和身体的活力性!
a. 每天开始工作前,定制好一天的工作目标和工作量。
b. 养成良好的工作规律,如 code 两小时,break 半小时,周而复始。
c. 拒绝非必要性的加班,坚拒长时间性的加班。
提升产品的价值需要整个团队的团结协助和坦诚,特别是队员们的坦诚:因为队员们在开发该产品的过程
中产生的有关该产品的感觉是很有讨论价值的,也特别有助于产品的改进。得知以及讨论他们的感觉认知后,才可
让他们认可产品(因为产品的设计从此也有了他们的身影所在),而只有队员们认可了产品,队员们才会有动力和激情做到极致。
2013-12-03于华工信元南区