技术无界
今天开始着手开发一个android项目。 我曾经有过几个android项目的经验, 但近些年一直在跟服务器相关的程序打交道, 开发客户端那一套技术都快忘记光了。
所幸, 我的脑子里对于android开发相关的细节还有淡淡的印象,加上参考我以前写的项目的代码, 整个app技术核心相关的结构已经快被我拼凑完成,接下来就是边看api文档边开发了。此时,假如把我电脑的网线给拔了, 我估计会什么也做不出来。
不知从何时开始, 我写代码越来越依赖api文档了。除了入行时开始用的.net和前端技术以外,使用任何其它技术都已经离不开互联网。通常使用这些技术解决问题的状态是写几行代码,然后打开浏览器查查API,接着再继续写,看起来就跟刚写代码没几天的新手一样。令人意外的是,即便如此,所有的问题也都让我解决了,而且貌似解决的还不错,很少有出漏子。
不知从何时开始,我写代码的特点是, 使用完全陌生的技术和使用玩的很熟的技术做项目花的时间差不了多少;而在项目开发完成后,测出来的BUG数量基本是在同一个量级,就好像根本就不是第一次用一样。
记得我开发的第一个android项目是一个外包项目, 当时我替人家做网站,网站做好以后, 甲方让我顺便把android的版本也给做了。有钱不赚是王八蛋,虽然当时对android开发完全没有概念, 我还是硬着头皮把项目接了下来。 那时候年轻,精力旺盛, 可以一天只睡五小时,加上有c#经验,写java可以无缝过渡。 剩下的就是一边查android api一边做,居然也让我神奇的在指定的时间前交付了,而且 app没出什么bug, 第一个版本就稳稳当当的运行了好久。
这有点反直觉, 按理说使用新的技术至少需要一个学习的阶段,这也是大学的编程课和培训班存在的意义,假如编程技术能拿来就用, 那岂不是说明根本没什么技术含量。
或者说能做到这样程度的人是个天才。
显然, 我不是什么天才,我甚至还是属于那种脑袋不怎么灵活的人。那为什么大部分编程技术我都能拿来就用呢?
其实吧,我是觉得,市面上五花八门的编程技术,在细节上, 不同的技术之间有很大一部分是相同的或者相似的,是共通的。
比如网站可以用.net、java、php或者python来做,表面上它们好像是完全不同的技术,让一个用.net写网站的程序员去写java网站,搞的好像要从零开始一样。 然而, 网站开发技术其实是一系列技术的集合, 要学会做网站起码需要掌握一门编程语言、数据库技术、http相关理论、html、JavaScript和其它一系列底层计算机技术。
看, 所谓的最重要的编程语言,并不是意味着全部, 它只是某项技术如网站开发技术其中之一的环节而已,只占了很小的一个比例, 要换掉他, 并不需要多少成本。
同样, 开发客户端的技术也是相通的。 了解控件机制、MVC、GUI程序开发技巧后, 可以在开发任何客户端程序之间低成本过渡,不管是windows客户端、android客户端、iOS客户端还是浏览器客户端。
就像我
学了c#,发现java也会用了
学了asp.net发现windows客户端也会做了
会了java和windows客户端开发后发现 android客户端也会做了
会了asp.net,发现jsp和php也会了
学了前端JavaScript,加上原本就会的服务器网站技术, 发现nodejs也会用了
会了nodejs,发现golang和python也可以轻松使用了
会了使用 c#开发windows客户端几乎,发现客户端还可以用managed c++开发,于是managed c++又会了
会managed c++,没费多少劲,居然又会用mfc开发windows客户端了
仿佛推到了多米诺骨牌,起到了不可思议的连锁反应。
反正写着写着,不知不觉间,世面上流行的大部分开发技术都能使用了。然而, 我真正耗费大量心思和精力学习的只有asp.net+c#和JavaScript而已。
所以啊, 编程技术之间是相通的这个道理不是空穴来风, 至少我深有体会,且得到了实践。至于会这么多技术有多少价值? 我说不上来, 不过我得到了满足, 精神上的, 因为这是我的兴趣, 就像写文章一样。
知乎:https://www.zhihu.com/people/aspwebchh
github:https://github.com/aspwebchh
email: aspwebchh@gmail.com