在成为Android开发程序员的这几年时间内,从一个什么都不懂的菜鸟,成长成为一名资深的Android开发程序员。
创新互联建站客户idc服务中心,提供服务器主机托管、成都服务器、成都主机托管、成都双线服务器等业务的一站式服务。通过各地的服务中心,我们向成都用户提供优质廉价的产品以及开放、透明、稳定、高性价比的服务,资深网络工程师在机房提供7*24小时标准级技术保障。
虽然这一路感触很多很辛苦,但是我依然热爱这个行业。
第一就是技术要扎实在从事这个行业之前我参加过Android软件开发培训,在北大青鸟学习了一段时间,虽然之前没有接触过,但是在这一段时间内学会了很多的知识。
每天学习到很晚,教室里依然有老师的陪伴,这一段时间的学习为我之后的工作,打下了很好的基础。
所以无论是在哪个行业,扎实的技术首先是排在第一位的。
如果之前在学校里面已经接触过这一块的知识,那么在今后的工作中你也会受到这段时间学习的帮助。
第二你要有计算机思维在it行业工作肯定是要有计算机思维的,这也是亘古不变的道理。
很多时候当事情非常的乱,这时候你需要有计算机思维。
它会帮助你快速的解决当前的问题,恢复正常的工作。
这个思维要在你的头脑里固化,以后遇到事情就可以快速解决。
第三思维的跳跃性当你每天都在面对枯燥的代码时,难免会产生负面的情绪。
这时你需要思维的跳跃性,缓解当时的情绪,以便更好的工作。
在遇到问题时依旧是如此,跳跃的思维会给你带来意想不到的收获。
IT培训认为当你一直在坚持这几件事情的时候,你会发现自己已经成为了一名专业的Android开发程序员。
IDC最近一份关于移动应用开发的调查报告显示,Androdid开发者对谷歌的移动操作系统平台的兴趣正在下降。
尽管依然有79%的开发者表示对Android“非常感兴趣”,但IDC的调查报告显示,一些迹象表明在2012到2013年间,Android将随着遇到的问题,市场份额会出现大的变化。
解决这些问题,对于谷歌如何维持Android生态系统的活力来说意义重大。
同样,独立开发者也要意识到这些问题将给自己的商业计划带来困难。
1、Android的碎裂化问题现如今,用户手中的Android系统版本各异。
相信你已经看到过有很多关于开发者如何为最低通用版本编码的文章(现在可能是2.3版本了)。
但是,不止在操作系统方面存在Android版本碎裂化这个问题。
在SDK开发工具上,也没有统一的标准。
你可能要为六种尺寸的屏幕编码,不同的按钮、键盘,有的可能根本就没有按钮??好吧,你可以在一个代码分支上为所有的这些设备编码(这种方案即笨拙又不容易实现),或者开发多个版本(听起来就很糟糕)。
当然,如果回报还不错的话,这么做也未尝不可,可事实上并非如此。
2、投资的回报这似乎是既定的法则:Android应用的利润一般都比iOS应用的利润少。
这可能是因为人们在买手机时更关注它的功能而不是应用的质量,但是这意味着开发者将获得较少的利润。
如果开发者拥有的时间和资源有限,在需要选择平台时,平台已经建立的基础将变得不再重要,他们更关心的将会只是:“我能否赚到钱?”3、克隆应用的数量让我们先假设你有一款优秀的应用,它能做一些与众不同的工作,可能是能够联机到社交网络上、处理PIM数据,或者能提供一种新的游戏玩法。
然后你有办法让你的应用从成千上万个应用里脱颖而出。
但是,接下来就会有数不清的开发者开发出克隆版本,从而拉低你的应用的价格,和你展开竞争。
Android商店几乎是一个无法无天的社会。
如果不解决这一问题,让开发者面对不公平的竞争,还有多少开发者愿意在里面做应用推广呢?4、选择哪家商店销售你的应用?GooglePlay商店、亚马逊的Android商店、BarnesandNoble’sNookApps??有很多地方你可以选择用来销售你的应用。
这是市场方面的碎裂化问题,而且,有时候它也会让设备型号变得纷乱繁杂。
这就意味着要建立更多的版本、协议等等,这些都会是令你头痛的工作。
与此相反的是,iOS和Windows手机就没有这么多繁杂的工作要做。
像EA和Ubisoft这样的公司或许可以应付这些问题,但是那些个人开发者是不可能把他们所有的时间都花在应用商店的管理上的。
有时候,电脑培训认为当平台已经不再处于快速发展阶段时,开放和免费并不是做好的选择。
作一个真正合格的程序员,或者说就是可以真正合格完成一些代码工作的程序员,应该具有的素质。
1:团队精神和协作能力把它作为基本素质,并不是不重要,恰恰相反,这是程序员应该具备的最基本的,也是最重要的安身立命之本。把高水平程序员说成独行侠的都是在呓语,任何个人的力量都是有限的,即便如linus这样的天才,也需要通过组成强大的团队来创造奇迹,那些遍布全球的为linux写核心的高手们,没有协作精神是不可想象的。独行侠可以作一些赚钱的小软件发点小财,但是一旦进入一些大系统的研发团队,进入商业化和产品化的开发任务,缺乏这种素质的人就完全不合格了。
2:文档习惯说高水平程序员从来不写文档的肯定是乳臭未干的毛孩子,良好的文档是正规研发流程中非常重要的环节,作为代码程序员,30%的工作时间写技术文档是很正常的,而作为高级程序员和系统分析员,这个比例还要高很多。缺乏文档,一个软件系统就缺乏生命力,在未来的查错,升级以及模块的复用时就都会遇到极大的麻烦。
3:规范化,标准化的代码编写习惯作为一些外国知名软件公司的规矩,代码的变量命名,代码内注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。
有些coding fans叫嚣高水平程序员写的代码旁人从来看不懂,这种叫嚣只能证明他们自己压根不配自称程序员。代码具有良好的可读性,是程序员基本的素质需求。
再看看整个linux的搭建,没有规范化和标准化的代码习惯,全球的研发协作是绝对不可想象的。
4:需求理解能力程序员需要理解一个模块的需求,很多小朋友写程序往往只关注一个功能需求,他们把性能指标全部归结到硬件,操作系统和开发环境上,而忽视了本身代码的性能考虑,有人曾经放言说写一个广告交换程序很简单,这种人从来不知道在百万甚至千万数量级的访问情况下的性能指标是如何实现的,对于这样的程序员,给他深蓝那套系统,也做不出太极链的并访能力。性能需求指标中,稳定性,并访支撑能力以及安全性都很重要,作为程序员需要评估该模块在系统运营中所处的环境,将要受到的负荷压力以及各种潜在的危险和恶意攻击的可能性。就这一点,一个成熟的程序员至少需要2到3年的项目研发和跟踪经验才有可能有心得。
5:复用性,模块化思维能力经常可以听到一些程序员有这样的抱怨,写了几年程序,变成了熟练工,每天都是重复写一些没有任何新意的代码,这其实是中国软件人才最大浪费的地方,一些重复性工作变成了熟练程序员的主要工作,而这些,其实是完全可以避免的。
复用性设计,模块化思维就是要程序员在完成任何一个功能模块或函数的时候,要多想一些,不要局限在完成当前任务的简单思路上,想想看该模块是否可以脱离这个系统存在,是否可以通过简单的修改参数的方式在其他系统和应用环境下直接引用,这样就能极大避免重复性的开发工作,如果一个软件研发单位和工作组能够在每一次研发过程中都考虑到这些问题,那么程序员就不会在重复性的工作中耽误太多时间,就会有更多时间和精力投入到创新的代码工作中去。
一些好的程序模块代码,即便是70年代写成的,拿到现在放到一些系统里面作为功能模块都能适合的很好,而现在我看到的是,很多小公司软件一升级或改进就动辄全部代码重写,大部分重复性工作无谓的浪费了时间和精力。
6:测试习惯作为一些商业化正规化的开发而言,专职的测试工程师是不可少的,但是并不是说有了专职的测试工程师程序员就可以不进行自测.
这个可以从2个方面去规划,一方面是技术,一方面是公司。
首先,在技术方面,作为Android程序员的基本能力肯定是要有的,随着工作时间越来越长,这些技术肯定是掌握得非常好了,这个时候就可以考虑更加“全栈”一些,比如多学习一些服务端的开发技术和前端开发技术,毕竟原生的AndroidAPP是通过Java语言开发的,对于有工作经验的Android程序员来说,学Java服务端开发还是容易很多,通过学习服务端开发,既可以进一步提升Android开发能力,又可以让自己更“全栈”,当然,有些人是技术宅,那还可以考虑学习AndroidFramework,各大手机厂商都很需要这样的人才,例如华为、小米等等这些大厂商。
然后,在公司方面,如果一开始没有进入很好的公司,是要慎重的选择跳槽的,原因其实很简单,也许进入一个公司的时候,只是个初级程序员,经过1年或更长时间的工作,技术能力已经更高了,甚至已经是中级程序员或者以上的水准了,但是,老板会不会给加薪呢?不好说,因为对于老板来说,可能只需要是一个初级程序员就可以了,复杂的、难度高的任务,有其他人可以完成,既然的岗位不会创造更高的价值,老板也就不会给出与能力相符的待遇了,而且,一直在小公司里,可能也没有机会接触大项目,个人的业务能力会一直卡在一个瓶颈,无法提高,所以,是需要慎重选择跳槽的,之所以说慎重选择,是不能随便选择,很多公司也会认为频繁跳槽的员工是不靠谱的员工,特别是大公司,本身可以给员工很好的待遇的同时,还能给员工很多锻炼机会,他们不希望员工经过高质量的培养和历练后又再次跳槽走了,所以,很多大公司都有“每份工作至少做了2年以上”这类的要求。