1 基础设施
程序最基本的处理就是数据IO以及为了并行计算所做的操作,它们通常会作为程序的底层框架,供上层使用。
2 交互
从PC到现在的移动设备还有VR,人机交互中的输入设备在不断自然化,可是展示界面的元素仍然还是这几种:静态文本、按钮、列表、输入框、选择菜单、进度提示、滚动条、标签页。每种UI框架都提供这些基本组件,可以说掌握它们就等于对这个框架入门了。高级的交互会跨越窗口、跨越程序,并能更智能化地响应输入。
3 硬件设备
PC上的硬件大都需要通过统一的接口来操作,开发者需要做好繁复的参数设置才能正确使用。移动系统则对很多硬件做了封装,为开发者提供定制的简单API。有时候开发者并不需要直接操控硬件,但需要获取硬件的信息,根据可用的资源数来执行不同的策略。
4 程序设计
现在的程序流行快速迭代,没过几天就发布一个新版本。新的app还要越快上线越好,尽早占据制高点。如此匆忙的节奏,让传统软件的架构设计退居二线,程序往往都是技术债务多到影响开发速度或新功能才执行大的重构优化。不过我们至少可以提前根据功能分出一些模块,让后面的重构稍微轻松些。
5 后勤
如果说需求开发是前线,那么产品经理无暇关心的东西都算后勤了。这部分工作需要技术经理主导来开展。对程序员来说这部分工作可能没那么刺激,但却是深入学习系统和各种工具原理的好机会。
6 其它
关于编程语言、开发工具、操作系统的总结在这:
http://blog.csdn.net/hursing/article/details/45603483
7 一些感想
客户端开发有界面,能图形化反馈编程结果,所以比服务器端开发更“刺激”一些。因为和操作系统紧密结合,知识具有针对性,所以即使是做UI也比做前端的难度大些。
现在做移动开发其实和当年做Windows程序并没有差别,只是系统比较新且更新快,文档多数是英文的又少有中文图书积累,所以门槛稍高。再过几年当供过于求,应该会回归编程平台这一基础属性,不再带有什么光环。
客户端开发的尽头就是熟悉了所有的API,然后API是在演变的,所以要跟随。Windows的API多到没人能完全记住或用过,但以前iOS是可以的。现在也不行了,苹果在不断的增加。而看Android,到现在已经演化了24个版本,很难去跟踪了。
无论哪种系统,不断有API被标记为Deprecated,也有部分在新操作系统上不可用,需要在代码里判断操作系统版本或SDK的版本。这些历史,对新手来说直接就是不知道。随着人员也跟着更新换代,更多人就忘了,于是文档成了这种混乱的救命稻草。
如果让我编制一个学习路径,应该是这样的:
- 编程语言,代码规范,格式化工具
- IDE环境,快捷键
- UI框架
- 网络、磁盘等IO
- 更多系统SDK的模块
- 调试技巧
- 工程文件组织,命令行操作
- 流行的第三方库
- 打包,自动化
- 测试方法、工具、自动化
- 优化方法
- 学习系统原理
- 反编译,hack
- 发布渠道和流程
- 官方:Google Play、Apple Store
- 厂商:小米、华为、魅族、vivo、oppo……
- 第三方商店: 豌豆荚、PP助手、安卓市场……
- 渠道:友盟+……
- 写博客总结。像这样 http://blog.csdn.net/hursing
有空再写写调试和优化总结吧。