不如说有没有不断学习掌握新知识的心态和思想准备、体力准备更重要。给自己找准一个方向最重要。
从开发的角度上简单的说手机软件可以分成应用软件、用户界面、操作系统、底层与设备驱动以及通信协议等几个方面。测试是手机软件开发的另外一个重要领域,分为协议测试、白箱测试以及系统测试。
应用软件包括游戏、WAP浏览器,Web浏览器、e-mail信箱管理器、MP3播放器、MPEG播放器、Flash播放器、日程管理、电子辞典、语音录音、语音识别以及汉字输入等等。
用户界面包括待机界面、呼叫控制、MMS界面、短消息/EMS界面等等一切操作手机时所能够看到的、听到的和摸到的过程控制。开发用户界面涉及到对GUI和通信过程的理解。
每个手机里面都有一个嵌入式多任务操作系统,如Nucleus, AMX等等。这个系统不仅要管理好所有的任务,而且要提供纠错环境。
底层部分包含语音编解码、信令在无线接口上进行传输编解码、数据编解码等等内容。设备驱动指的是LCD驱动、Flash驱动、GPIO驱动、MIDI芯片驱动、通用串口驱动、USB驱动、电源管理单元驱动等等方面。
通信协议包含完成空中传输过程第2层、第3层协议、补充业务协议、数据传输协议、以及SIM/UIM协议等等。扩展一点,TCP/IP协议,WAP协议也可以归在这一类。
除此以外最新的手机还支持Java等应用环境的整合。
可以看得出整个手机的软件,涉及到一个巨大的知识系统。体现到代码上,最简单的手机,它的软件系统至少也需要40万行代码。一般的手机软件的代码规模,在100万行左右。
一个软件开发专业人员每年能够生产得代码量,在1万行左右。
以上所说的每一个方面都涉及到一个庞大的知识系统,不是念完大学课程、甚至博士课程就马上可以应付得了的。所以,重要的是选准一个自己最感兴趣的领域,瞄准这个领域切入,苦干3~5年,才能略有建树。
值得一提的是,国内厂商十分紧缺的是测试专家,尤其是空中接口协议测试专家。
不管怎样,手机软件开发最低的入门条件是:
1. 熟悉《数据结构》
2. 熟悉多任务操作系统
3. 精通C语言
4. 略知通信协议,比如ISDN协议中呼叫建立和呼叫拆除过程。