卓越新闻
您所在的位置:首页 > 卓越新闻 > 程序员关于进阶的思考

程序员关于进阶的思考

来源:中软卓越 日期:2017-03-24 18:43 人气:
标签: 程序员  中软卓越 
中软国际教育集团Python+大数据课程入驻大武汉啦!!!
  程序员们每天都在做什么,作为一个职业程序员该有怎样的认知,如何进阶成更好的程序员,中软卓越java培训专家今天就为大家进行总结整理,和程序员一起回顾整理一下自己的职业生涯:
 
  如何定义『程序员』?
 
  按照Wikipedia的定义,程序员又称为计算机程序员(Computer Programmer)、开发者(Developer)、编码者(Coder)或计算机工程师(Computer Engineer),和网络上广泛流传的码农或程序猿同义。下面代码出自一位程序员之手——“程序员”的代码显示,姑且算作节日一乐。
 
  class Programmer : public Thinker {
 
  public:
 
  void design(System &);
 
  void model(Problem &);
 
  void code(ProgrammingLanguage &);
 
  void debug(Defect &);
 
  void refactor(Code &);
 
  void learn();
 
  void communicate();
 
  virtua voidl think(Logic &);
 
  private:
 
  vector_pls;
 
  }
 
  再说程序员的定义。程序员是彻头彻尾的脑力工作者(Mind Worker),怠于思考者绝对不能成为好的程序员。有鉴于此,类Programmer天生的就应该是Thinker的子类。就程序员所使用的思考技巧而言,Thinker的具体内涵包括逻辑(Logic)和数学(Mathematics)。作为程序员,不一定非要达到逻辑或数学领域的专业水准,而是必须具有逻辑和数学的基本素养。逻辑用来推理,数学用来培养逻辑。另外,数学还有助于程序员训练另外两项必不可少的思考的技能,分析和抽象。程序员的工具是编程语言,日常活动和主要工作包括设计(design)、建模(model)、编码(code)、调试(debug)、重构(refactor)、沟通(communicate)、学习(learn)和思考(think)。
 
  有关程序员有一个流传甚广的误解,认为做程序员门槛低,没什么技术含量。即使没有学过计算机的课程如离散数学、数据结构、算法等,也可以写程序。写几行程序当然算不得什么,但要修炼成有一定思想境界的一流程序员,却殊非易事。这就如同会做饭的人很多,但真正的烹饪大师却并不常见。所谓码农者,乃是程序员的自我吐槽,岂足深信耶?所以,作为程序员要有持续进阶的强烈的进取心,断不可妄自菲薄,自怨自艾。
 
  程序员工作日常自我认知——关于需求
 
  程序猿与产品汪的恩怨能写出一部书剑恩仇录,同意的程序员请默默点赞。程序员每天的工作都在处理需求编写代码中度过,程序员需要依据需求实现让公司让客户满意的东西,需要直接对结果负责,当结果与预期出现偏差,不论需求是否恰当且合理,程序员都不得不重新加班熬夜再虐一轮。
 
  因而,对于程序员来说,准确理解预判需求,和写得一手好代码,是同等重要的。那到底怎样的需求才是合理的需求,有资深开发者这样描述一个恰当的需求的制作过程:
 
  需要业务人员与程序员共同讨论,并且经过双方充分的沟通
 
  需要不断拆解、拆解、再拆解
 
  不断打磨,经得起推敲
 
  也许有的程序员认为制定需求与自己无关,其实不然。在大型组织中可能会有专门的业务分析师,他们的主要工作就是在将详细的需求规范传递给实现团队之前对其进行不断的完善。在理想情况下,这么做是完美无缺的,程序员只需坐在那儿编写代码就行,不过实际情况却并非如此。
 
  组织的规模越小,程序员需要处理的事情就越多。对于勤恳钻研的程序员来说可能阅读AngularJS 2.0的升级路径要比与客户讨论领域问题和需求更有趣。但现实是,你的技术、对框架或算法的理解只是你每天工作的一部分。因为对于所有开发工作来说,基础是“恰当的需求”。唯有参与其中,才能更有效地提升工作效率。
 
  程序员如何做让自己更资深?
 
  某新创公司CEO针对技术人员招聘困难的问题,总结了多条阻碍程序员职业生涯发展的行为,具体如下:
 
  1.直到特性“完成”的时候才会提交。(但永远都不会完成!)
 
  有些程序员没有足够的信心来承受团队中其他成员的批评和审查,因此会把自己的工作藏起来,直到“完成”状态才提交。这种开发者会损害团队中其他人员的生产力,因为团队看不到他每天的成果,而且他也不会在正常开发的过程中寻求帮助,这样就会造成很多“最后一分钟”的缺陷,从而让交付延迟。这时候程序员需要做的事,要清楚地知道,代码并不是他们自己,因此会把代码经常自信地呈现在其他团队成员的眼前,获得批评和建议。
 
  2.分析瘫痪(Analysis paralysis)
 
  分析瘫痪是指在程序开发初期进行系统分析,常因为太过执着于控制所有可能的变化和意外,而造成大量时间的浪费,裹足不前。这是一种很经典的问题,会影响很多一般的程序员。它通常是由过度分析造成的,不敢做出坏的决定。一般的程序员会担心犯错,只想一次成功。一个敢于拥抱机遇与挑战的程序员不会害怕,他们会编写很烂的代码,对其进行单元测试,如果认为无法达到目的,就会在45分钟之内把它抛弃。强大的程序员会积极地限制用来研究的时间,因为他们知道那是个陷阱——看起来是有效的,但经常都无效。
 
  3.不知道如何让其他程序员更容易使用你的代码
 
  在所有技术团队中,工作很重要的一部分就是人员的并行(human parallelism),也就是多个人能够同时对同一代码库工作的能力。但是对于团队来说,能够异步工作也很重要,当你不在的时候我可以修改你的代码,反之亦然。然而一般开发者对一项任务编写代码,认为他们会永远拥有这段代码。有经验的资深开发者会知道技术债务的说法,会试图通过设计代码来对其限制,让它尽可能可维护和自解释。编写可读的代码需要程序员改变他们的看法——你的代码要比你在组织中存在的时间长。
 
  4.不知道如何阅读其他人的代码
 
  当一位一般程序员看到用他所不熟悉的语言或框架编写的代码库时,就想立刻重写,而不考虑业务价值或者推向市场的时间。而强大的程序员会接受这样的观点,重写所导致的业务成本通常是不可接受的,所以应该避免这种行为。他们会试图坐在计算机前,理解、学习然后修改现有的代码。阅读代码要比编写代码还难,但是强大的程序员会投入时间来学习如何超越。
 
  5.不能从最终用户的角度编码(你考虑的范围太狭窄)
 
  作为程序员,你的工作不是解决技术问题,你之所以解决技术问题,是为了解决业务问题。一般的程序员会陷在技术问题之中,而不知道最初是为什么要解决这个问题。无法从头开始创建出具有业务价值的东西。当被要求基于简单的用户设计新特性的时候,死板地、照着字面对故事或者说明书做出解释,这样交付的产品用户根本无法使用。不考虑相关的用例;不考虑最终用户的体验;在做面向用户的内容时,设计会很笨重。这导致无法编写业务应用,只能做产品。有经验的程序员会从最终用户的角度来看他们的代码。我怎样才能让它更轻松地解决用户的问题呢?故事的文字内容之外有哪些方面会让这个特性给用户带来更多收益呢?
 
  6.无法判断任何编程任务的业务价值
 
  对选择如何投入时间做出很好的业务决定,应该问这样的问题:这是我现在应该做的最有价值的事情吗?我应该为之投入多少时间?离交付日期有两个星期,我现在能做什么,从而更容易满足那个日期呢?而反之拿着说明书,盲目地实现,直到结束,不关心他们的工作和公司的业务目标有什么关系,以及对其他团队和业务组会产生什么样的影响。这样做会在业务价值很低的技术任务上浪费大量开发时间。
 
  当然,还有最重要的一点不能忽略,就是不断的升级自己的技能。最快捷的了解行业最新趋势的方法,就是听这个行业的一线专家的指点。
 
  中软卓越根植于中软强大的软件基因和背景,服务于超一流互联网企业,掌握最前沿的IT技术(Java、UI设计、IOS、android、PHP、C语言、嵌入式、软件测试、大数据等),拥有实力雄厚、大型实战项目经验丰富的技术团队。坚持5R教学原则,以中软准员工的要求约束学员,用真实的工作体验让学员提前适应职场,4个月后直接走向工作岗位,避免工作后的水土不服。学习IT技术,就来中软卓越!

中软卓越是中软国际有限公司投资的大型人才服务机构,是中软国际人才战略的核心组成部分之一,承担集团发展过程中人才储备和培养的任务,是软件及外包业务快速发展的重要人才支撑平台,是集团保持高速增长动力之一。

中软国际教育集团专注IT教育36年,一直秉承“用良心做教育”的理念,是中国移动互联网研发人才一体化服务的开拓者,全力打造移动互联网研发人才服务优质平台。

公司总部位于武汉,目前已在深圳、上海、郑州、广州、大连、武汉、成都、西安、杭州、重庆、长沙、合肥、无锡、南宁、厦门、南京、南昌等全国22个省成立了60多家分公司。拥有全国的移动互联网教学就业保障团队,做到了毕业学员业内高薪水,成为学员信赖的IT培训机构。

营业执照 版权所有©Copyright 2008-2020,中软卓越科技有限公司 , All Rights Reserved. ICP备案号:15018648号-1

sitemap | 来校路线 | 分类导航 | 关于我们