欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

做为一个程序员,你需要的9大核心能力

来源:本站整理 作者:佚名 时间:2017-03-27 TAG: 我要投稿

今年是在IT行业里工作的第8个年头。到7月1日,就满9个年头了。日企,美企,欧企,大公司(世界500强),小公司(起步时不到10个人)都有过工作经历。现在也从之前的纯代码编写者,升级为项目管理者。写过多个行业的项目,用过多门编程语言。无论公司,项目,技术怎么变化,从事编程这份工作需要的核心能力却从来没有变过,大家可以去看看各大招聘网站上的招聘要求,多年如一日,核心的要求都是一样,唯一变化的是新添加了几个热门技术而已。
靠山山会倒,靠公司公司也会倒,人际关系和资源,你离开一家公司的时候未必能带走,自己的核心能力这是唯一自己确定能带走的东西。
1. 扎实的基础知识和广博的知识范围

图片来源自网络
哪些知识算是编程的基础?我个人认为,像数据结构,算法,网络知识,操作系统这些平时工作中虽不常用,但都是一个程序员的功底。可以说是武学中的心法,是思考的基础,也是你面试进入各大公司的敲门砖。无论准不准备换工作,多出去面试面试,了解自己和许多优秀人的差距,会提高更快。对于广博的知识范围,参加过工作的小朋友,大朋友都知道,公司不可能按照你掌握的技能来给你定制项目的。大部分的时候都是公司的项目需要什么样的技术,你正好掌握了这门技术,那很好,马上开工。如果你并没有这方面知识的储备,对不起,现学也得上。慢慢的差距就能显现出来了,你比别人知道的多了,相信我,你会有更多的机会。
有两件事情给我的印象特别深。第一件事,我们给甲方做一个互联网金融的项目。甲方对参与项目人员的一个很主要的要求是要有丰富的项目经验和知识背景。我们公司有不少很资深的员工,能力也很不错,但是入公司以来一直做的是同一个项目,来我们共色之前也没做过几个项目。公司推荐了7个人过去,甲方只选了两个。看看这两个人的简历,都是有多家公司工作的背景,经历了5个左右的项目的。
第二件事是我们现在正在做的一个项目,是关于医疗的,避免不了要和医疗设备打交道。于是,各种串口,连接口等等的硬件相关的知识,对于我们这些平常只做软件项目的人来说,并不是很好理解。但是我们项目组有一个同事,平常对这些知识有积累,客户一讲他就明白,自然也成了这个项目里面比较重要的人员。
2. 阅读别人代码的能力

图片来源自网络
一个软件的开发,从需求分析开始到最后的产品交付,都是多个人协同工作开发的结果。很多时候,你接触到的项目并不是一个新的项目,而是在一个已经成型的系统上进行功能添加或是原来功能的维护。你读不懂别人的代码,恕我直言,程序员这个行业并不适合你。更重要一点来说,阅读代码的能力,并不是泛泛的说你读懂了这段代码的含义,而是还能明白代码的结构是怎么样的,和其他系统模块之间有什么样的关联,我这次改动会不会影响其他的模块,风险有多大,能不能修改,我们要能从代码中读懂这些。
为什么要读懂这些?主要的用途有两个:第一,你要告诉测试,我改了哪个功能的代码,可能会关联影响的功能有哪些。测试要针对这些做全面的测试,这是保证代码质量很重要的手段。第二,我们要给客户正确的反馈,如果是牵一发而动全身的改动,一定要给客户说明白其中的厉害关系,给出我们专业的建议。这个就是话语权。
3. 分析并理解需求的能力

图片来源自网络
先说说什么是需求分析,这个词对我们来说并不陌生。需求是什么? 需求就是客户的要求。我们为什么要进行需求分析?是要了解客户的真正要求。很多时候客户表达了很多,但是并没有说到点子上,我们要根据这些表达一步一步跟进,挖出客户真正想要的东西。举个例子来说,客户说“这个棒棒糖真甜。” 从客户的这个表述中你能得到什么样的信息?
仔细想想这个含义比较多,客户有可能就是想表达一下自己的想法,并不要求我们做什么,换句话说,这句话对我们来说是句废话。另外,客户也可能想再要一颗棒棒糖。我们如何得知呢?我们根据谈话场景进行分析,分析后再和客户确认。这就是做需求分析的过程。发现问题,分析可能的答案,确认。直到需求明确为止。
工作了这么多年,接触到各种各样的行业。有零售行业的,金融行业的,医疗行业的。我们做项目之前都没有相关行业的行业知识。这就要根据我们做项目的经验,进行分析。客户说了一堆行业术语,到底在表达什么。面对这种情况,不要怕,要有耐心。仔细读需求文档,仔细听客户的讲解,做合理的判断。多和客户交流。正确的理解需求是软件开发的第一步。
4. 完成并优化代码的能力

图片来源自网络
先来界定什么是完成代码。这里所说的完成代码并不是说只要对应的功能实现就好。你的代码还要结构明确,条例清晰,让其他团队成员容易读懂。开发团队,一般是会有代码审核机制的。想想这个场景,你到新公司上班第一天,领导给你布置了一个任务,让你打印输出10遍Hello world。你觉得这个实在是太easy,写了10遍"System.out.println("Hello world")"。你提交代码给领导。请自行脑补你的领导会是什么反应。这个例子虽然极端,但是很能说明问题。简单的事情,你知道怎么优化,怎么正确优雅的写代码。那么,需求复杂的情况呢,你是否有足够的能力写出优雅的代码呢?

[1] [2]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载