我的移动开发史:一位从业10多年的程序员的职业回顾

最近看到很多坚持在移动领域发展的程序员,都取得了事业上长足进步,以及持久化金钱收入,有点十分的艳羡。


回想起自己从事互联网软件开发的近十年,完美的错过了这波红利,究其原因现在回想起来,有几点,第一没有长期坚持,第二没有想法以及目标。第三意识到短板,却刻意回避。

题图 from unsplash

最早完整接触移动互联网是在11年的时候,当时在一家垂直互联网电商,所在部门是移动事业部,公司看到了移动端兴起,发力移动端。而我呢就负责移动端的API,以及cms的开发,也就在那时候第一次看到真正的智能手机。


那是iPhone4,有种惊为天人的感觉,那种流畅,那种丝滑,有点德芙广告的感觉吧!才知道原来手机可以这样,完全靠滑动以及触摸去交互而且极为流畅。屏幕清晰明亮,色彩及其鲜艳丰富。外观设计也从没见过,机身玻璃加上钢制机身,完美融合在一起。感觉这不是一部手机,这是一件艺术品。


我们做的产品是香港milk杂志的的电子版,做出来的效果非常好,这个是塞班系统完全无法呈现的效果,完全继承了iOS平台的优势,流畅丝滑,就像看纸质杂志一样,随意的翻页滑动。由于我一直对新语言有所偏好,也是出于好奇,就想看看它什么语言开发的,去找同事聊,结果得知是一种叫oc的编程语言,而且也了解到想用这门语言开发app,必须要在苹果机上。


作为刚上班一年多的我,半年前刚找同学借了一千多,买了自己人生中第一个笔记本惠普康柏,花费4200。一问当时苹果电脑的的价格,倒吸一口凉气,mac系列 一万多,mini六千多。瞬间心中那点小火苗就被浇灭了,对移动互联网开发也就持观望态度,心思都花在了学python上了。


转眼间到了13年,经不住内心追求对Mac渴望,买了人生第一台Mac电脑。器有了,可以善其事了,这个时候又发挥了,我爱买书这个毛病了。一股脑的买了一堆的iOS开发的书籍,各种翻看学习,却迟迟没有下手写,为嘛,没有思路、想法、与目标,也无法像python一样,在工作中得以应用,就干学,结果就是一腔热情,慢慢消散。转眼14年苹果公司出了自己的新语言,语法跟oc比起来,简直脱胎换骨。觉得蛮有意思,想着尝试一下,但是也仅限于,写了编程学习的经典案例,界面上输出了一行“hello world”。至于一些布局以及交互觉得太繁琐,没有后端写逻辑来的简单舒爽,选择了放弃,但并没有放弃对swift的学习。


说到移动端,不得不提现在称霸江湖的android平台,其实接触它要更早,可以追溯到09年底的时候,当时还是1.5的时候,我同学兼好友当时刚来北京,由于他做Java开发,通过javaeye得知了android,就买了一台三星的手机,顺带了解了下安卓开发。那时的虚拟机还是有软键盘的,sdk里面有greedy snake的demo,我们学习时候还改变了贪吃蛇的图片,总体觉得这玩意挺卡挺糙的,开发起来挺费劲了,没有iOS平台那种畅爽,加上当时工作不好找就搁置了。


在遇到iPhone的半年后,也就是2011年的下半年,换了人生第一台智能手机,没错就是一台搭载了2.2系统的Motorola defy手机。虽然这款手机花了2700多,是我当时近一个月的工资。但是我却从此告别了功能机,用上了微信,从此投入了移动互联网的怀抱,一去不复返。


有时候我还跟老婆聊起说,我们能够使用智能手机,既要感谢iPhone,也要感谢Android。iPhone开创了智能手机,android普及了智能手机。


真正接触Android的开发一直到了15年,彼时它也是已经非常流畅,市场占有率已经超过了iPhone,自身也已切入Java开发几年了,感觉可以去做个尝试了。


几经尝试最终也是做出来一个图片展示的app,学习的途径是按照Android官方的教程来的,算是晃晃悠悠的可以跑起来。当然这个时候也学会了安卓的基本开发流程,什么是activity,什么是service,什么是broadcast等等,做了一定了解,学会了gradle的基本命令,以及了解了user interface与controller的reference。


17年时候另外一个同学兼好友,有一个需求,如何在数码相机拍照的时候,可以实时的拍照的图片传输到云端。要知道相机是可以连接Wi-Fi的,但是在拍照的时候不能够同时连接Wi-Fi。行业的通用做法是,用一个小盒子作为媒介,相机的USB连接盒子,盒子可以连接Wi-Fi,进行传输。


这个时候我突然想起,买三星的那位好友曾经给我展示过otg的数据线,就是可以让USB线连入手机。正好可以满足这个需求,这次我没有坐以待毙,而是选择了行动。有安卓手机,也有数码相机,还有otg的线,更有多年的程序开发经验,but 界面布局依然是我的短板。


经过一个多月的奋战,界面是丑了点,而且还找了同事做了些帮助,这款app的基本功能算是完善了。首先当相机接入手机,它会做一个mount,相机会变成了手机的一个存储介质。点击手机上的开始按钮,它会不断的寻找指定的mount地址,一旦找到就将目录下的照片进行扫描,并压缩上传至七牛云端。


同时界面上会显示每张图片上传的进度,以及一个终止按钮。上传成功图片会被hash并被记录在sqlite里面,保证图片不重复上传。现在由于七牛不开发链接了,所以跑不起来,但是代码我本身有保留。


最终这款小工具app,也尘封在我的电脑磁盘里面,没有交付到同学手中。因为界面太丑,交互做的很差,没办法成为一个真正意义app,导致这款小的toy最后折戟沉沙。但是收获却不小,这款app算是我的,一个不完整意义上的全面移动开发。在学习开发过程中,慢慢理解了自己为什么做不好app。


其实简单总结下来,自己多年的职业技能都是围绕后端开发,注重逻辑、性能,而端的开发更注重产品交互逻辑,以及界面的美感,不是简单单能把逻辑编写出来。还要持续的迭代升级,不断满足用户的需求,以及审美要求。这两方面都是我所欠缺的,就算抓住了需求,但是并没有能够最后做出成型的产品,也正这些原因导致的。好在一路在成长一路在反思,总希望在机会到来的时候,不要让它轻易的溜走,毕竟机会是留给有准备的人的。

 -End- 

长按2秒,识别二维码,关注我


拓展阅读:

程序员的系统思考能

厉害的程序员都有自己的商业模式

一位从业三年多程序员的迷茫解惑

为什么很多大龄程序员说"技术不重要"

突破自己的技术思维

程序员的“能力陷阱”

如何从传统软件开发顺利过渡到互联网技术开发

一位资深传统型软件开发者的思考:传统软件企业危机四伏