不少程序员孜孜不倦地敲了很多年代码,然而写出来的程序确是不合格的;很多 的码农,并没有接受过培训班的系统教学,也没有师从名门,却出色地完成了一个又一个项目,为何?小编为大家总结了 程序员的必备素质,看看你还差哪几点?
01
必须要正视“写代码”这回事
虽然很多人做着敲代码的工作,但内心着实不耻,只是因为要想成功跨入互联网行业,作为技术人员,这是不可跨越的门槛,是入门的 标准。但凡有机会向前发展,就迫不及待摆脱。但是,这种想法是错的!每一个成功的程序员都十分正视写代码这件事,而非肤浅地认为写代码只是无聊的劳力。
程序员首先必须了解计算机的运行原理,然后需要把现实问题建模,并在计算机的世界里精确地还原出问题的解决方案。既然代码要交给功能强大的计算机去严格执行,程序员要担负的责任就相当大,因为代码的任何一点差异,都有可能影响程序最终的运行结果——因为程序的细小缺陷导致航天任务失败的例子已经有好几次了。
其实,鲜为人知的是,程序员的权力特别大,成为“合格程序员”的门槛也相当高,但这些可能被大部分的程序员都忽略了。前段时间有很多人叫嚷“我万事俱备,只差一个写代码的”,恰恰是因为他们把写程序看成简单机械的劳动,但以自己的聪明才智又学不会这种“简单机械”的劳动。这种矛盾,恰恰说明写程序是有门槛、有要求的。所以,要想成为称职的程序员,必须正视写代码。
02
有一些基本的书籍的阅读量
虽然学校也有编程语言的课程,但不会教学生怎样把程序写好。不少人对计算机的理解还停留在理论阶段,只要写的程序输出之后能用即可。然而如今与计算机相关的大量工作,重心已经转移到实践和工程意识的方面了。这也给我们程序员提了个醒,工作中更重要的是实践经验的积累,而非单纯的理论和算法,需注重把程序写好的补习。
其实市面上已经有一些教人“把程序写好”的书籍,认真读完这些书,认真落实其中的规范,至少能保证把程序写“合格”,不会有明显的缺陷,为将来把程序写好奠定坚实的基础。《代码大全》、《重构》、《编程珠玑》、《程序员修炼之道》这几本书都是很不错的,如果能耐心读完并认真思考,写程序的水平会有相当的保证。
03
保持好奇心,多借鉴其它项目的内部实现
我们时常开玩笑说,现在很多程序员的工作,就是从网上下载一些开源项目,然后改改参数。外行人看来可能会觉得是笑话,这工作也太机械。其实不然,这确是是很多程序员工作的真实写照。充其量,他们还要做一些穿针引线的工作,把这些项目粘合组装起来。
这看起来确实是简单机械的劳动,也不会给人多少提升。但事实并非如此。很多好的程序员就在这个过程中学会了把代码越写越好。因为他们保持了好奇心,去探究这些开源项目的内部实现,把应用的过程当成了学习的途径。在使用一个现成方案之前,先想想如果自己去解决要怎么办,再看看其他人的现成代码,确保自己懂得了这些代码蕴含的思维。甚至比较相类似的几个开源项目的源代码,分析其优劣,在自己的工作中注重借鉴其长处,避免其短处。久而久之,写程序的水平自然会有大的提升。
04
写程序时,懂得在工程与理论之间求得平衡
在谈到写程序时,经常有人引用奥卡姆剃刀原则,说“如无必要,勿增实体”;也有人引用爱因斯坦的话,“要足够简单,但不应该过于简单”。由此证明,好的程序应当是足够简单而且非常优雅的。在大方向上,这话没错,但到了具体问题,未必全对。编程与工程紧密相关,这就意味着大量的权衡、取舍。无论奥卡姆剃刀原则还是爱因斯坦的话,原本的主题都是针对理论的,所以两者并不能严格划等号。
实践中很多程序员都有处女座特点,过分追求表面的美感、简洁,甚至为了刻意追求那种严谨整齐的感觉而忽略了现实,也不懂得针对现实做出取舍,最终把自己套了进去。结果,用户明明需要的一亩菜地,他们交付的却是一份盆景,还振振有辞地指责用户不懂技术。这样的人,往往既当不好程序员,也成不了软件开发工程师。
05
坦然接受其他人对自己代码的批评
毫无悬念,CodeReview是提高代码质量的有效手段。但是在很多场合,CodeReview很难推行起来,原因之一就是程序员内心难以接受其他人对自己代码的批评。
这也是在情理之中,每个人心里对写代码都有自己的标准,在好与坏之间,大多数人也都可以达成共识。人们的潜意识里也确实很难区分“对我的工作的批评”和“对我的批评”。所以面对其他人对自己代码的批评,除非是来自上级,否则多少有些面子上过不去,天然有争辩的冲动。这种情况也不仅仅出现在程序员中间,每个岗位都会有类似的现象,毕竟每个人都有自己独立的思考。本来讨论理论和方案一切正常,只要涉及到“看某人的代码”,气氛就随之大变。
三人行,必有我师,其他人的批评,只要不是恶意的,总是能提供不一样的视角,帮助我们更深入或者更全面的认识问题,这是很好的成长机会,转变对待别人的批评建议的态度是关键。而且很多时候,所谓的丢脸,都是自己的虚荣心在作怪,其他人根本无感,自己跟自己过不去。为了怕“丢面子”而排斥其他人的批评,失去一次提高和成长的机会,实在是得不偿失。另一方面,领导的管理方式也很重要,要为团队营造一种敢于批评和自我批评的氛围,倡导“对事不对人”。这样,才能让更多的成员坦然接受对自己代码的批评。
06
程序员需要有对荣誉感的追求
说到底,人们会拼尽全力的在自己的岗位努力,争取一点一滴的成就,都是因为“荣誉感”这个东西作祟。对没有荣誉感的程序员来说,“把程序写好”只是被迫完成的机械性任务;而对于具有荣誉感的程序员来说,“把程序写好”是需要不断追求的目标。
小编认为,程序员的荣誉感主要体现在两个重要的方面。 是对质量的追求,好的程序员一定会对自己交付的程序的质量负责,力求做到没有缺陷,不会依赖CodeReview来发现代码的缺陷,也不会依赖测试来发现功能的缺陷……甚至要向上游扩展了解问题的起因和目的,向下游扩展了解程序运行的状态和行为——这已经是“全栈工程师”的雏形了。
第二是对“用技术更好解决问题”的不断思索和追求。程序与现实不完全相同,所以很多时候并不受现实的严格限制,程序能不能突破这些限制,如何突破这些限制,靠的就是程序员的荣誉感。虽然现实中“鱼与熊掌不可兼得”,但是在程序的世界里,某些情况鱼与熊掌是可能兼得的。好的程序员会把现实生活中不可能实现的变成现实,并且不止于此。例如,现实中“菜刀用来杀人”似乎是无解的,但在程序的世界里,有些菜刀就可以做到不能用来杀人。
我想说的是,程序员应当属于德鲁克说的“知识工作者”。对于知识工作者,我们就不能像对待机器和工人那样去严格约束工作的过程,只能要求结果,或者说“找到合适的人,提供合适的环境,期待美好的事情发生”,这也是很多程序员享受的方式。但是,如果程序员不在乎自我驱动和追求,把写程序当作不需要任何想象力和创造力简单重复劳动,那么“血汗工厂”的工作方式可能更能保证生产效率。
今日互动话题除了上文介绍,你认为 的程序员还需要具备哪些素质?
·END·
好程序员iOS、Android、HTML5高端培训
mer甲氧补骨脂素 xywy怎样治白癜风