如何成为一名优秀的软件工程师?

时间:2016-07-19 09:22:07    来源:信狮教育    已有人浏览
分享到:
导读:在决定对软件做出改变的时候,大多数工程师会马上行动。刚开始的时候,工作会很简单,但是随着项目的发展,对代码做出改变会变得越来越困难。

  一. 简洁性较少代码数量

  在决定对软件做出改变的时候,大多数工程师会马上行动。刚开始的时候,工作会很简单,但是随着项目的发展,对代码做出改变会变得越来越困难。究其原因,主要就是因为积累了太多代码,代码变得越来越复杂。随着软件的活动件越来越多,软件的维护就会越来越难,潜在的bug也越来越多,构建和测试的时间也会越来越长……在这样的代码上工作,无可避免的会加大工程师的工作难度。

  “我没有时间写短信,所以我就写了一封长的。”

  — Mark Twain

  使用更多的代码,通常是懒人的解决方式,而并非最优的解决方式。你应该用更多的时间去寻找更简单的解决方式,最好能让代码的数量变少。

  二. 经验减少代码数量

  我认为,一名软件工程师会经历一下三个阶段:

  1.在深渊中挣扎。我们都经历过这个阶段。尤其是在刚入行的时候,这个时候你要尽可能多的吸收知识。你想要自己做出正确的事情,但是由于缺少经验,以及由于时间上的压力,你很难写出高质量的软件。你会犯很多的错误,而这些错误正是你学习的手段。最理想的情况下,你身边会有很多经验丰富的工程师,他们能给你提供支持和指导。

  2.自以为是阶段。在这个阶段,你会觉得自己已经掌握了软件的堆栈、语言或是框架。你在这个时候能够做出不多的软件,而且倾向于编写大量的代码,而且里面有大量的“神奇代码”,或是与一般的编程方式背向而驰的代码,因为你会觉得“我的代码编写方式更好”。或许每一个开发人员都曾经犯过这样的错误,我们甚至会觉得自己已经不再需要继续学习新东西了。反正我自己就曾经很多次的犯过这样的错误。

  3.成熟阶段。当你在回顾以前所写的代码的时候,如果你有这样的想法:“我怎么会把代码写的这么复杂?完全没有必要啊。”或者“我之前怎么没去查查其他人都怎么解决这个问题呢?”,那么这意味着你已经理解了软件工程师都会犯的那些错误,度过这个阶段,你就能够做出更好的解决方案了。

  “程序是给人写的,要让人能读懂;能被机器运行,只是程序的附加属性。”

  在我看来,人们对于软件工程最大的误解在于,很多人将软件工程师视为代码机器。他们认为写代码是我们最重要的工作。人们给软件工程师抛来一个问题,我们能够写下解决这个问题的代码。但是这种理解并不正确。我们的工作是解决软件问题,让软件达到一定的质量和可靠性,让它可以满足工作环境的需要。而这个过程中,写代码并不是我们唯一要做的事情。代码编写其实像是一个粘合剂,将我们的经验和知识连接在一起,但是它并不是我们所关注的最重要的事情。

  三. 深刻的理解减少代码数量

  

 

  在编写和维护软件的过程中,最糟糕的副产品是什么?大多数人会说是“技术债务(technical debt)”。技术债务有很多种表现形式,但是其中最主要的,与源代码有关。我想要强调,不仅仅是那些写的不够好的源代码会产生技术债务。标准、框架、甚至是语言,都有可能随着时间的推移出现变化。那些在某一个时间段下写的非常好的代码,在过了几年之后,也很有可能变得不可用,或是兼容程度不够高,从而需要软件工程师对其进行大规模的重构。

  如果你有着几年的编程经验,你一定有过类似的经验,在回头看自己几年前写的代码时,你会发现这些当时写的非常好的代码,如今需要你重写。对于许多软件工程师来说,寻找最佳的技术解决方案是我们的天性,也是我们热爱这一行的原因。几年前的你对于技术和代码认识还不够深刻,而几年之后,随着你的理解逐渐加深,在解决同样的问题的时候,你将会写出更好、更简单的代码。

  改写代码从来就不是一件容易的事情,无论是在代码编写的过程中,还是在代码已经完成之后。即使那些写的最好的代码,到了未来的某一个时段,它都会变成技术债务。在代码写完几年之后,未来的工程师(甚至是你自己),在理解这段代码的时候都有可能遇到困难。

  沟通是关键。不仅仅是工程师和非技术人员之间的沟通,还包括工程师之间的沟通。如果你能找到一种可以解决同样的问题,但是对代码数量需求更少的解决方式,那它就是更好的解决方式。

  总结

  从某种意义上看,人们对于软件工程师的要求,就是要打破自己的直觉和自然反应。也许吧,但是作为一名软件工程师,最重要的东西,就是“KISS(Keep It Simple, Stupid)。

  我知道我在这篇文章中说的可能有些夸张了。对于一名软件工程师来说,很难在每天的工作中只写少量的代码,但是请记住,代码数量少,出错的可能性就更小,而且未来的维护工作也会更少。

  • 人生无处不套路,比如就业面试,大家可能就中了不少HR的套路,有时候一天面试好几家公司,自我感觉良好,HR总是叫你回家等消息,可是左等右

  •   在电脑技术兴盛的今天,JAVA语言得到了最广泛的应用,从网站建设、电子商务、游戏开发、移动互联网等,JAVA语言技术在其中所站的开发份

  •   对于高中毕业生来说,刚刚走出校园大门,学历不高且没有工作经验,想找份赚钱多的工作,该怎么做呢?2017年高中毕业不上大学,学什么专业

  • 怎么成为一个软件开发者?电脑编程技术为何让90后宅男疯迷?软件开发电脑编程技术成90后高薪就业技术。我们知道如今软件工程师非常抢手,尤

  • 作为职业教育学校,在人才培养上,不只是进行简单的教学,更应侧重学生的动手实践、创新发展。尤其在新时代,企业对人才的要求更高。北大青

  •   随着软件测试行业的逐渐发展,性能测试也变得火热起来。从各大测试论坛和测试交流群的交流主题的热门程度来看,性能测试已经成为大家非

  • 随着电子时代的来临,电脑早已成为人们生活、学习、工作、娱乐不可或缺的工具。电脑办公、手机上网、聊天娱乐、网上购物、用网银办理各种付

  •       就业作为一个老生常谈的问题,已经不算新鲜,但是每一年还是在毕业季大量毕业生涌入人才市场寻找工作时成为一时热门话题。人们

  • 深圳有什么好的JAVA培训学校?教JAVA 技术的机构有很多,如何知道这些培训学校好不好呢?我们先来分析下,目前IT行业比较突出的问题是实战型精英人才的缺乏,面对琳琅满目的JAVA培训学校

  • 安卓开发新手容易陷入的误区都有哪些?Android平台是一个新手最广为人知的平台。它不仅是一个廉价的工具,而且有着良好的开发社区,以及从

  • 陈*东:梦想照进现实,奋力前行

    姓名:陈*东班级:JT29班学历:大专年龄:23就业企业:云奥贸易就业岗位:开发工程师就业薪资:8000我,曾是一个刚离开校园的毕业生,怀揣

  • 李*同学:一技在身,实现人生的翻转

    中专毕业后,追求发展的我,便在各个行业中辗转,发现社会上、生活中太多残酷的现实,远没以前上学那会儿想得那么理想。我学历不高、没有一技之长,生存都有些不容易,更别谈发展。出

  • 陈*喜:很庆幸我选择的是北大青鸟

    高中毕业后我就想着学个技术,很庆幸我选择的是深圳信狮学校学软件工程师技术。感谢老师对我的支持与鼓励,以及长期以来的帮助,让我在信狮学校度过了一段非常充实而有意义的学习生活

  • 石柱:走好每一步,干好每一件事情

    姓名:石柱年龄:19岁学历:大专就职企业:深圳市网合科技有限公司就职岗位:Java软件工程师就业薪资:4000元公司简介:深圳市网合科技股份

  • 万*:青春,就是用来奔跑的

    来信狮前,我的情况是高中毕业,IT技能零基础,在工厂做了3年普工,拿着每月的血汗钱工资,听着周边同事的各种抱怨、各种对生活的失望、或

热点专题 更多 >
热门标签 更多 >
拔河比赛 课外活动 闹元宵 精英 大会 华强 大东 课程 视频 宣传片 电影 教学 C 媒体报道 权威 网站 就业问题 企业 研究生 前途