邂逅Java是在2012年大一结束的那个暑假,当时的我还沉浸在全国计算机等级考试二级C语言程序设计考试折戟的挫折之中,由于大学学的是电子信息工程专业,默认学习的编程语言是C语言,早期并没有接触Java的机会。由于当时对编程的理解不够,第一学期的C语言期末考试就挂科了,虽然第二学期的补考顺利通过,但是却没有顺利通过全国计算机等级考试二级C语言程序设计考试,按照当时周围同学们的说法,我们这类专业至少要考个全国计算机等级考试二级证书以后找工作才有一定的优势,所以说,当时虽然知道后面还有很多的机会,但还是有一点点失望。然而转折总是在不经意间悄然出现,犹记得那是炎热的一天,我独自躺在竹椅上玩手机,脑子里突然冒出一个想法,我为什么非得跟大家一样去苦学C语言,然后去开发单片机程序呢?我去开发移动应用程序不行吗?开发单片机程序还需要购买硬件来做测试,而开发移动应用程序一台笔记本电脑足矣。加上当时正值iPhone 4S和三星Galaxy S3流行之时,我也一直对移动设备很感兴趣,这个想法是切实可行的,说干咱就干。于是我立马在淘宝上搜索相关的书籍,最后选择的是清华大学出版社出版的《智能手机跨平台开发高级教程》,这本书介绍了如何在当时市场上最流行的移动平台上开发应用程序,包括iPhone、Blackberry、Windows Mobile以及Android。当时的Android操作系统已经稳坐市场头把交椅,虽然我也考虑过开发iOS应用,但是开发iOS应用的成本和代价太大,于是我果断将Android开发作为今后的努力方向,同时购买了几本经典的Android开发书籍,直到这时我才知道Android应用程序是使用Java编程语言开发的,所以可以看出,我是先选择了Android进而自然而然地选择了Java。
当时市场上还不存在像Android Studio这样的智能开发环境,要想开发Android应用程序只能使用eclipse,eclipse的环境配置过程相当繁琐,配置过程中任何一个步骤出错都会导致程序无法编译,当时因为多次配置失败险些放弃。好在功夫不负有心人,一遍又一遍的尝试,总算把第一个“Hello World”应用程序编译成功。万事开头难,自从编译成功这第一个程序,后面就变得顺利多了,一口气学完了《Google Android SDK范例大全》,一个一个实例的去练习,享受每次程序运行成功时的喜悦,日积月累,开发经验越来越丰富,也开始去做一些小的项目。慢慢的问题出现了,由于之前掌握的Java知识都是在学习Android开发的过程中积累的,在开发一些较大的项目时,编程逻辑方面的能力存在明显的不足。于是我又下定决心重新学习Java语言,从字符串、数组、类、对象、接口、集合、I/O输入输出到多线程、网络通信、数据库操作、高级应用开发,一步一个脚印,不断地练习,在开发Android应用的过程中反复应用,对Java的理解以及开发实力都有了显著的进步。功夫不负有心人,我在2014年3月顺利通过了全国计算机等级考试二级Java语言程序设计考试,加上向来对网络技术也比较感兴趣,我也先后通过了全国计算机等级考试三级网络技术和四级网络工程师考试。后来还和班里的同学一起申请了学校的创新创业项目,开发实力得到进一步的提升。长时间默默的开发积累终于等来了机会,大四的时候我们学校的一位老师组建了一个开发团队准备开发一款服务全校师生的移动应用程序,凭借我这两年积累的开发经验,我成功加入该团队并与团队成员们通力合作,成功开发出了这款应用,最终凭借这款应用,我们团队代表学校参加多项国家级赛事并斩获多项大奖。
由于一直以来就对三星的智能手机和半导体技术比较感兴趣,一进大学我就将确定了自己的奋斗目标,大学毕业之后前往韩国名校成均馆大学攻读硕士学位。众所周知,成均馆大学背后的财团正是三星集团,三星对成均馆大学的手机设计专业和半导体学科等三星电子主要技术学科进行重点投资,而且该学科的毕业生在进入三星时也享有极大的优势。这里想说的是,其实在大二的时候我也经历过一段低谷期,有一段时间绩点很不理想,大三时坚定了自己的目标之后开始努力提高绩点。有趣的是,由于我们专业主要与硬件相关,大部分同学在毕业设计时选择的都是与单片机有关的课题,而我们院的一位导师那段时间刚好在研究移动应用,于是让我选到了一个与Android应用开发相关的课题,我最终也相对轻松地获得了“优秀”的评价,毕业设计的16个学分也让我的绩点稍稍提高了一点。后来凭借着不错的绩点以及国家级赛事获奖,我如愿被成均馆大学一般大学院(研究生院)录取。硕士期间,在学好相关课程、做好实验室项目的同时,我也不忘提高自己的开发能力,充分利用在学习Java的过程中积累的方法,不仅重学了C语言,还自学了Arduino编程、iOS应用程序开发以及三星Tizen应用程序开发,在Google提出今后将会以Kotlin替代Java作为Android应用开发的首选语言之后我又自学了Kotlin语言。此外,随着人工智能的兴起,我还自学了Python语言。2017年,由于我积极参与阿里云云栖社区“聚能聊”栏目的话题讨论,有幸获得了王坚博士的著作《在线》。在书中,王坚博士提到“App很好,Web更好“这一观点,深感赞同的同时我又去自学了HTML、CSS、JavaScript、PHP这些Web编程语言,并且开发了自己的个人网站。临近毕业时我还得到学长的推荐去到三星C-Lab创新实验室实习,为新创企业开发微信公众平台和网页应用。硕士两年,我与实验室成员们积极参加韩国政府部门以及三星、SK、现代等各大企业所举办的各项技术创新开发大赛,全部有所斩获。
2018年2月,我顺利从成均馆大学毕业并取得了工学硕士学位,之后就开始准备就业。我心仪的公司采用的是笔试-面试-实习-正式入职的招聘流程,实习所在的业务组开发了一个实时高清视频传输解决方案,他们想把这个解决方案与无人机结合在一起,将无人机拍摄的高清视频通过5G网络传输给控制中心,并且通过现有的解决方案去实时获取无人机的飞行参数并远程控制无人机的飞行。幸运的是这个解决方案的核心产品刚好是基于Android操作系统开发的,凭借长期积累的Android开发经验,我在不到两个月的实习时间里就成功的将两个系统相结合,突出的表现让我得以成功入职。
纵观过去,我所取得的一切成绩似乎都离不开当初选择Android、选择Java的那个决定。到今年为止,学习Java整整九年,有一些心得体会想跟大家分享一下。
- 编程语言也是语言
跟我们学习任何一门外语一样,首先我们需要培养兴趣,大家都知道学习外语的过程其实是相当枯燥的,要反复地背单词、学语法,学习编程语言也是一样,如果没有足够的兴趣是很难坚持下去的。对于开发小白,我有个小小的建议,大家不妨跟我一样,不要一开始就去学Java而是去学Android,在享受应用程序运行成功时的喜悦的同时再去深入研究编程语言本身。
- 多去参与项目,参加比赛
俗话说,实践出真知,很多人学编程只学理论却从来不去实践,到最后也只是知道字符串、数组这些基本的概念,这就像学英语能看懂论文却不会说不会写是一样的。根据我的经验,在做项目的过程中会遇到各种意想不到的问题,解决问题的过程远比学习编程语言本身有用得多。即便是经验丰富的开发人员,在实际的开发过程中也会遇到各种各样的问题,而在以往解决问题的过程中积累的各种经验,踩过的各种坎都可能帮助我们快速地解决这些问题,不断实现技术实力的飞跃,然后再学以致用。
- 多去总结,学会分析别人的代码
在开发过程中,我们或多或少会去接触一些开源的项目,比如利用GitHub上的一些源代码来实现自己想要实现的功能。如果想要不断提高自己,在使用开源代码完成自己项目的同时,也要花点时间去深入分析一下别人的代码,虽然别人的代码不一定是最好的,但我们可以取长补短,慢慢的,我们就可以不仅仅去借鉴别人的代码,还可以去改进别人的代码,提高代码的运行效率,做到精益求精。
以上仅仅是我的个人观点,比起那些Java大神,我还是个菜鸟,未来还有很长的路要走,但只要坚持下去,我相信未来的某一天我定会突破自己,变得更加全面。前不久,华为推出了开源的鸿蒙操作系统并且提供DevEco Studio供开发者开发鸿蒙应用程序,我下载试了一下,发现对于Java或者Android开发人员来说十分容易上手。这篇文章就写到这里,但我与Java的故事却远未结束。