点一盏明灯,倒一杯甜茶,望一眼窗外清晰可见的月轮,回头看了看屏幕上的代码和未完成的测试。有感于这两年的经历,忽然想来谈一谈自己所做过的项目,不仅是一段路程的总结,也希望多少能给那些刚刚毕业踏入IT行业的同学一点小小的提醒。
浪漫之都,时尚大连,大连,位于辽东半岛的南端。由于靠近日韩,所以这里也受日韩文化影响浓厚,当然,这里的软件开发行业特点也是以对日开发为主。打开你手机上的“拉勾网”等招聘软件,然后把地点切换至大连,你会发现几乎90%的招聘信息都和对日开发挂钩,一半要求懂一些日语,三分之一甚至要求你去日本出差。我在走出大学校门第一个来的城市便是大连,自然我所进入的公司也是对日软件开发为主的,为了描述方便,接下来的内容我把我的公司称为D公司。
在进公司的第一天起,公司的主管就和我仔细的聊过在公司里的发展方向。首先不管自己的编程方面的技术能力如何,日语是一道硬坎,一定要过,否则连API文档可能都看不懂。不少公司还会给新人提供日语方面的培训,D公司就是其中之一,当然这里的培训是很简单的,能力只要达到可以看懂日语文档即可,如果想要继续深入学习就要靠自己的业余时间的努力。D公司要求员工进入公司后就一直保持日语的学习状态,而且要通过日语能力二级考试,这也是向日本派遣出差的要求,没有一定的语言能力去往异国他乡简直寸步难行。当然你的薪资水平也会因你是否具备日语能力而有很大的差距。
简单的日语培训通过后,公司会提供一些技术方面的培训,这和国内的公司都大同小异,需要什么就教你什么,而且多是教会你怎么用,原理方面不会涉及多少,甚至直接安排进项目组开始正式工作。不管是哪种方式,项目是锻炼能力的最好方式,计算机培训方面有个特别有名的老师叫马士兵,相信大家都看过他的教学视频。而我则对他的学习方式十分推崇,只有在项目里面真正做了一些东西后,才会对所学内容有所领悟,这个时候再回头去看一些原理性的教学内容,你就会有一种豁然开朗的感觉。譬如在学习Struts的时候,我在一开看学习资料的时候,并不理解为什么一个工程要这样分类,这样打出自己的层次结构,分出了诸如DAO,DAOImpl,Service等这些包类,但经历了项目实际操作后,就会发现这样分是有道理的,而且是最优的工程结构。
日本这个民族似乎天生的严谨,甚至到了让人认为死板的程度,这点在项目管理上面尤其淋漓尽致的体现出来。项目立项初期的调研阶段一般是花时间最久的时候,包括和客户的洽谈,分析需求,提出构想,规划人月等,所以在日本项目经理应该是最忙的人了。当这些都完成的时候你会看到项目经理给你发送一堆的报表,以及十分详细的工作进度表。对于工作进度的管理,日本人有着近乎较真的严苛,每天按计划完成多少,是否能够按期完成,完不成的理由是什么,还要沟通调整进度表。当你完成了自己负责程序的编写任务后,就是测试阶段,是否出错,出了什么错,出错的原因是什么,出错率是多少等都有严格的记录。所以对日开发一定要认真认真再认真,除非项目时间紧张,一般情况下安排的任务时间都是绰绰有余的,完全可以做到不加班就能按时完成的,那么就没有必要赶进度赶得那么厉害,唯独要求质量要高。不过日本软件开发有种很特别的地方就是在程序设计书方面,项目进行是这样的过程:首先由技术部的人构建好整体框架,以及程序的业务流程;然后技术部的人会把这些业务内容拆分成几个部分,分别送往不同的项目组中去,项目组长接到后和组内的SE(似乎只有对日开发才有这种职位)会对所分到的业务内容进行深入探讨,确定程序的运行流程;接着便是SE把这样的流程用文字写出来,甚至详尽到了某个数据从哪个表怎样抽出来都会明明白白体现,而最后写代码的人只要对着SE写的任务书逐字逐句的“翻译”为程序代码即可。
虽然说日本人这样管理项目可能失之刻板,但我依然觉得缺不失为国内项目开发一种借鉴方式。很多公司常年996,甚至更长,有的公司甚至在招聘的时候就给员工洗脑,公司默认会有多长的无偿加班,WTF!!这样的公司我只能奉劝早走早超生,程序员的996很多情况都是无能的公司管理造成的,而你还在莫名其妙的为他们的无能背锅。我相信管理层在项目的初期如果调研做的足够好足够详细,会给后续开发省下不少的人力物力,那种项目计划靠拍脑子的,能离多远就离多远吧。程序员的加班应当是有回报的,要么是薪资的回报,要么是技术的提升。为了数据和作为廉价劳动力的能避免就避免吧。
最后,我总结一下自己最近的几个项目中所常用的一些技术能力吧,在Java开发方面,如果有童鞋不知道自己该学什么东西的时候,不妨参照我下面所列的这些,虽然是对日项目中常用,但国内一样适用度很高。
基础方面:Java多线程,SQL语句语法,HTML,CSS,JavaScript,GitHub
进阶方面:SQL数据库检索优化,jQuery,bootstrap,springMVC框架,spring+Struts+hibernate整合框架,vb.net,linux操作系统
其他补充(国内要求但日本方面要求不多):NoSql,Python