一、只会编程是不够的
只思考在哪种技术上投资是不够的。毕竟,技术只是一种商品,你不可能只掌握一种编程语言,或者只能够操作一种系统,然后把生意交给老板打理。如果他们只想找个懂代码的机器人,那不如到雇个国外廉价的程序员。如果你想站稳脚跟,必须要深入了解你所处的领域。
事实上,软件工程师不能只会开发软件,应该要成为这个业务领域的专家。在我之前工作过的一家公司,就有这么一个团队。我第一次见到这个公司数据库管理团队的时候有点震惊,因为这个团队里的成员都相当厌烦数据库技术,他们算不上出色,但这个团队有他们的特别之处。作为企业数据库的保存和维护人员,他们比起那些商业分析师更加了解这个行业。他们的知识和对这个行业的了解使他们成为数据库管理方面的抢手人才。我们这些愚人居然还看不起人家。他们做的工作正是他们的价值所在。
你的行业经历应该成为你的重要才能。如果你是搞音乐的,当你描述你的才能时,不能只说我能演奏某首曲子,而要说你真正了解这首曲子的内涵。商业领域的经验也是一样。比方说,如果你正在做一个医疗保健项目,你能区分出HIPAA835和HIPAA837这两种电子数据交换(EDI)协议有什么不同吗?同是软件开发人员,这个知识不就能决定谁更适合这个职位吗?
或许你只是一名程序员,但是如果你能用客户所处行业的专业语言与他们交流,那这就是一项非常重要的技能。就像如果与你工作的人都真正了解软件开发是怎么回事,你会不会觉得一切都会变得更加得心应手呢?你再也不用向他们解释为什么不能再web应用程序中的页面上返回30 000条记录,或者解释为什么他们不能向开发服务商发送链接。你的客户也有同感。换位思考一下,如果你是客户,为你服务的程序员了解你的行业,不用什么都由你来做决定,你也不用紧张担心那些小细节会出问题,你会不会觉得工作起来更容易呢?你从事的行业也是这样。
现在的软件开发界,java和.net大行其道。如果你会这两门技术,那就能在使用这两门技术的公司找到工作。选择商业领域也是同样的道理。在选择从事哪个行业的时候,你应该像选择掌握哪门技术一样谨慎。
鉴于行业选择是十分重要的,那么选择在哪个公司,哪个领域工作对你来说也是十分重要的。如果你还没有仔细考虑过这个问题,那么现在开始思考吧。机遇每天都在流逝,就像利息马上又要涨了,但你却把钱存在了一个低利率的死期账户里。把自身的发展限制在一个静止不前的行业里,可不是什么好地投资选择。
二、一些建议
第1:工作的重心在于沟通,软件开发的本质是沟通的技术。作为刚开始开发的新员工,一定要记得,有问题就问,而且要知道问问题的ルール、首先应该问身边的老员工,然后再问担当,最后向领导汇报,有效的将问题提出和解决,能够提高自己的工作效率和成果
第2:式样设计不是万能的,式样设计必然会有错误,在coding中间,要学会用质疑的眼光发现式样的问题,然后做好证据,去找式样确认,千万不要贪图自己一时爽快,把问题掩盖下去,等最后测试时发现问题的时候,问题就会变得不可收拾,当初只要花一个小时解决的,现在可能要花1天,1周
第3:coding的时候,要注意自己的式样里面是不是有共同的机能,这点,式样不会说明,但是自己要认识到,如果有共同的机能,就要抽出来写成共同函数,抽成共同函数能减低程序的耦合性,提高程序的结构,以后的再开发和改修都会有好处
第4:写程序的时候,请一定写注释,一个没有注释的程序就不是好程序,不要指望自己能永远记住自己的程序的含义,如果以后有其他人帮你对应bug的时候,你的注释就是他的引路灯,但是如果你没有注释,你的程序就是别人的恶梦
第5:所有的变量申明要在程序开始的地方写出来,变量的定义要符合规约,函数名也要,我在日本遇到过一个日本人写的帐票程序,因为没有式样书,所以我只能阅读程序,但是程序里面的函数名字是xxxx1,xxxxx2,xxxxx3这种样子的,导致的结果就是,一个4000行的程序,我看了整整3天,最后只能报告日本人,重写程序。如果是你遇到这种该死的source,你也一定会很不爽,所以,规约对自己和别人都有好处
第6:程序中经常出现bug的一个问题就是,数据的边界值,这也是测试中重点测试的问题。打个比方,前面一个程序,传一个[3,3]的数组给你,结果你在自己的程序里面,循环取每一个元素,取到了[3,4]这自然是会出错的,尤其在循环的条件判定上面,如果你是用到计算出来的判定值,那就更要小心计算的正确性
第7:程序中间经常出现bug的一个问题就是,数据类型的转换,比如在vb.net下面,有这么一段程序
dim x as integer = CINt(a) (其中a是前面传过来的string)
大家觉得这段程序怎么样?
其实有很大的问题,因为在a是空的情况下,这种条件转换就会抛出exception
所以正确的做法是
if (a = string.empty) then
x = 0 '具体赋什么值要看具体的式样
else then
x = Cint(a)
end
第8:checkin 和 checkout的时候,一定要小心,小心,再小心。一般不推荐,全体下新版本,很多时候服务器上面的版本不是稳定的,如果你下来之后,就会冲掉自己的环境。checkin的时候,如果发生冲突,千万,千万不要把人家的东西删掉,加上自己的东西,再上传。这是一种非常不负责的行为。
第9:做什么事情都最好在机器做个list,比如今天自己今天改了那几个配置文件,再source上面修改了几个case,这样如果以后有问题,可以按图索引,汇报进度的时候也好说清楚
第10:有时候工作的时候,会遇到老员工心情不好的时候,发脾气的时候,这个时候还是多体谅一下老员工吧。大家都是一个team,团结才能做好软件
三、行动:
(1)安排一次与业内人员的午餐,问问他们是如何工作的。交流中,思考如果你来做他们的工作,你会做什么改变或者你从他们身上学到了什么?询问他们日常工作中的细节。问问他们技术是如何帮助(或者阻碍)他们工作的。从他们的角度出发,思考你的工作。
(2)选择一本与你公司行业有关的杂志。你甚至都不用买,大多数公司都有些过期的行业杂志。试着阅读它们,虽然有些东西你可能不懂,但是要坚持。列出你可以向客户询问的问题。不要担心你的问题很傻,客户会大为欣赏你的学习态度。
(3)找一个你可以随时登录的行业网站。无论是浏览网站时,还是阅读杂志时,注意大事件和专题文章。你所处的行业正在做什么努力?现在的热门是什么?不管是什么,把他们介绍给你的客户。请他们说说观点看法。思考这些潮流是如何影响你的公司,你的部门,你的团队,以及自己的工作的。
快乐、思考、------------------------