软件开发行业是当今发展快的行业之一,世界各地都有对软件开发人员的需求。同时,未来的工作也是个热门话题——一方面,人们寄希望于有机会让任何人,在任何地方,工作时间更短,工作量更少,能够获得更好的工具,等等。另一方面,提出许多问题,例如机器人是否会取代人类,人工智能是否会抛弃论理和道德,我们是否会更多地使用在线工具沟通,而工作和家庭中彼此之间的有效沟通更少等等。然而,由于刚性结
工行软件开发中心
软件开发行业是当今发展快的行业之一,世界各地都有对软件开发人员的需求。同时,未来的工作也是个热门话题——一方面,人们寄希望于有机会让任何人,在任何地方,工作时间更短,工作量更少,能够获得更好的工具,等等。另一方面,提出许多问题,例如机器人是否会取代人类,人工智能是否会抛弃论理和道德,我们是否会更多地使用在线工具沟通,而工作和家庭中彼此之间的有效沟通更少等等。然而,由于刚性结构和严格的控制特点,通常会导致项目的开发时间比较慢、成本比较昂贵。
我们确实对很多问题都没有。未来的工作将和今天大不相同,需要人们以不同的思维模式和技能来驾驭职业生涯。无论是好是坏都取决于我们所有人随着工作和思维方式发展的认知。
转变观念,技术思维到商业思维上大学时,我们崇尚的是去开发个操作系统,弄个数据库,要不整个编译器什么的,再次也得整个牛X的算法。结果毕业跑到企业后一看,哪需要你干这些事,这些事老美已经帮我们干得差不多了。相反,一些以前不屑一顾或不怎么会的因素,反而成了主流。比如,在学校时更多的是鼓励你独立去完成某项工作,但在工作中,沟通交流甚至比技术本身还重要。一般来说,外包项目报价的基础是开发人员的工资,而工资又是和工作年限、经验、水平等决定的。
有人对几十个失败的大中项目进行统计,发现几乎没有技术原因导致的失败。更多的原因在于:项目需求范围无法控制,项目结束时间遥遥无期;组织分工不清,多头指挥,无所适从;不同的部门之间相互角力,互不相让,弄不好也整个平安的打的事件;由于现在有比较多的工具可以从代码生成UML类图,甚至在大部分提倡使用CodeFirst的场景下,我们画UML类图的机会是越来越少了。和客户沟通不畅,总是有很多刁钻难缠的客户;员工离职率奇高......记住:技术很重要,但在很多情况下,技术并非决定性因素。客户要的是解决问题,而不是你的技术有多。
软件开发高手的一些经验之谈"
用户也是人。我们的产品和我们的失败都可能直接影响他们的生活,对你行为的后果要三思。人与人并不相同,人们的思维方式也不同:有时候我们认为困难的东西从商业人士角度看来可能很容易。这是我们必须解决而不是逃避的矛盾。勇于改变需要改变的,接受那些无法改变的,用智慧来分辨其中差异。但是好戏才刚刚开始,当你准备好好打磨这款产品时,就会发现许多奇怪的bug冒出来了,让人头疼不已。
软件开发者不“只是写代码”,而是参与开发过程。所以如果公司在使用敏捷(Agile),你必须对其认真对待,起码也要对其保有尊重。代码评审(Code review)是软件开发过程的重要组成部分。对代码评审有所疏忽就不能成为好的软件开发人员。
作为软件开发者,我们对自己部署的代码要负责。我们也负有道德上的责任,不要做不道德的事。有时候对开发人员来说不重要的事情却有极高的商业价值。商业是一个好的角度,不要逃避它。很少有公司关心你的个人成长。如果公司对你目前的水平不满意,他们一开始就不会聘用你。学会让人接受你的观点,或柔软身段去接受别人的观点,这都是对软件开发的重大挑战,很多情况下,并没有对错,记住:当你发现,与人斗其乐无穷的时候,你就真的长进了。
对截止时间(deadline)负责。如果在截止时间前完成不了,你必须重新沟通新的截止时间。任务有两种复杂性:内部和外部复杂性。内部复杂性不可避免,因为这是任务本身;外部复杂性来自重新架构系统过程中异常决定的后果。要格外注意外部复杂性超过内部复杂性的情况。如果开发者在写代码或架构系统时选择容易而不是好的解决办法,他欠下的技术债迟早有是要还的。需求分析的主要方法有结构化分析方法、数据流程图和数据字典等方法。
相信很多程序员都会有这样的疑问:“软件开发,为何总是计划赶不上变化?”好像他们的工作总是完不成,往往事倍功半,后只能半途而废呢?
其实,不是因为程序员们偷懒不够努力,而是因为祸不单行。有人这样形容软件开发:软件开发同徒步旅游一样,可能你初是计划在 10 天内走完 500 公里,但真走起来,你会发现路上碰到的问题层出不穷,每天走的里程数都在递减,团队士气也不太稳定,延期很多时候都是无可避免的。对于程序员来说,软件开发就像是在走山路。一开始,需要设计框架,给整个项目打基础,然后开发,几周或者几月之后,你完成了整个项目 80% 的工作,各种关键模块开始起作用了。但是好戏才刚刚开始,当你准备好好打磨这款产品时,就会发现许多奇怪的 bug 冒出来了,让人头疼不已!这个时候,如果管理层下令要尽快搞定收尾的话,开发团队就得丢车保帅,只求按期到达地点,临时抱佛脚,也许能够按期完工,但是这种办法并不明智!SVN是一个安全虚拟网络系统,它将系统整体的信息安全功能均衡合理地分布在不同的子系统中,使各子系统的功能得到大限度的发挥,子系统之间互相补充,系统整体性能大于各子系统功能之和,用均衡互补的原则解决了"木桶原理"的问题。
细节决定成败,其实何止是软件开发,做任何一款产品的历程大都如此。在细节中潜藏,要想做到尽善尽美,就要不断打怪升级,提升自己的耐力。所以,软件开发的众多工种里,难的其实是程序员,因为一不小心就有五十步笑百步的可能,只能在梦里想想柳暗花明又一村啦!
(作者: 来源:)