
程序员如何提高自己的工作效率?程序员要在IT界混出个名堂,也要有高效的工作效率才行。下面我为大家整理了程序员提高工作效率的办法,欢迎大家阅读参考!
程序员如何提高工作效率
1)键戚兆盘功底要扎实
敲键盘时要使用标准指法。可能你认为这是程序员的基本功,可是我发现其实很多程序员都做不到这点。看着他们敲代码时那笨拙的指法我就心急。其实炼成标准指法不难,相当年我还是一指禅,打字极慢,痛定思定,在一周内我打字必用标准指法,再别扭也要坚持,一周后就适应了标准指法了。现在不说运指如飞也算是略有小成。练习指法和键盘速度可以给大家推荐一些网站:http://10fastfingers.com/typing-test/english,这个就是练习标准指法的,我可以轻松上60 WPM(每分钟60单词),有个外国同事可以达到130以上,那才叫恐怖。http://typing.io/lessons,专门供程序员练习敲代码的网站,融合了各种括号和标点,难度有点大。
2)要熟悉IDE的各种快捷键及特性
IDE基本上是码农们上班中使用时间最长的软件。首先要选择一个趁手的IDE,俗话说,工玉成其事,必先利其器嘛。如果是C#阵营的那肯定是最新版的Vistual Studio了,如果是Java阵营的话当然是Intellij了(eclipse作为开源IDE,真心比不过Intellij)。我现在使用Intellij可以在95%的情况下不用鼠标,全键盘完成开发过程中的大部分 *** 作。我觉得没有什稿唯么常用快捷键、不常用快捷键之分,只要你知道的快捷键就要拿来用。
尤其是各种重构快捷键必须要熟练掌握,当我看到码农修改变量名时不用重构快捷键,而是自己手动在引用的地方一个个改,然后编译查错时,真为他们捉急。还有各种inline,introduce的快捷键真是好用到爆,掌握了这些快捷键可以说对代码进行任何重构都不费除灰之力,我们的注意力也从手动修改代码转移到如何发现坏味道了。Vistual Studio中推荐安装ReSharper,其开发公司与Intellij开发公司是同一家。除了重构快捷键,还要掌握一些IDE的特性,比如调试时可以插入指定条件来命中断点等,这些就要平时的积累和学习,另外还有好奇心。我敢说你现在挨键仔培个看IDE菜单,至少有30%功能你从没用过或不知道是干什么用的,其实里面有些功能是非常实用的,只是你没尝试而已。
3)至少熟练掌握一种shell终端
作为程序员老用图形化界面咋行,要用那种古老的命令行界面才能显示出你的高深嘛!鼠标点界面谁都会,而命令行界面不是谁都能驾驭。有些功能在命令行下要比图形界面下高效N倍。比如我使用git提交文件时都是在命令行下查看哪些文件被修改了,哪些是新添加的,修改的部分是哪些等。
使用图形化界面要用鼠标点来点去,效率实在太低。Linux系统下的终端太多了,就不推荐了。Mac系统下推荐使用iTerm2这个壳,其比MAC自带的terminal多了不少实用的特性,也能方便切换自己喜欢的配色。Windows下当然首推Windows Power Shell了。Windows Power Shell本身集成了常用的实用工具,并且与.net framework无缝结合,这点是那些在Windows上的类Linux模拟器(比如Cygwin)是远远比不了的。
4)具有一定编写shell脚本的功底
光会用现有的`脚本还不行,还要会根据情况编写脚本来实现自己特定的一些目标。比如我使用MAC机上的终端时,经常需要在不同目录间跳来跳去,每次都打一串的cd …..很麻烦,后来我就自己写了一个小工具,可以给指定的目录起别名,想要跳到这个目录只要敲别名即可(参见 http://www.huangbowen.net/blog/2013/02/16/gtshell/)。
还有我在Windows系统上工作时,也经常编写一些Power Shell脚本,比如一个命令就启动指定的FTP服务器,一些小命令用来实现快速在不同项目源码间切换并执行构建命令等。这些命令编写起来都很简单,在提高工作效率方面很好帮助,因为一些常用的费时的 *** 作每天重复N次,让人很厌烦,如果能够使用脚本将其自动化起来,岂不是就把自己给解脱了?
5)多语言编程
在这个世界有太多太多的编程语言,但凡稍微流行的编程语言都有自己独特的优势,而我们要善于利用每种编程语言的特点,而不是整天吵闹那种语言更强大。我自己熟悉C#、java语言,也用JavaScript、Ruby、Python、Groovy做过一些东西,甚至为了理解函数式编程还专门学习了Haskell语言。这些语言都给我带来了实用的效果。比如我用Ruby写了一个插件,可以自动把我主站上的博客同步到博客园中的博客来。
我使用Groovy给我的Java代码写单元和集成测试,比使用Java语言编写要快很多。我用Python和WebDriver写了一个论坛灌水工具来刷积分。你掌握的语言越多,你的视野就越广,你对编程的理解就会越深入。当然我不赞成盲目的求多,至少你要有2到3门精通的语言,从语言语法、语言运行时、语言特性、语言API等方面都要有深入学习和见解,当你再学习其它语言时也不会浮于表面的了。
6)这是最重要的一点,时刻保持一颗好奇心,一颗坚定不移的提高工作效率的决心
很多人都抱着差不多态度,心想“我虽不是标准指法,敲键盘速度也差不多”,“我IDE快捷键用的不多,也没觉得那里影响到我开发”,“我只会C#一种语言,还不照样干到现在了吗?”之所以有这种想法,是是因为你没有见到真正高效的人。我曾看到某IT界牛人那出神入化的VIM *** 作,简直已经超越了指哪打哪的境界,已经达到了键随心动的境界。
我也看到某高级程序员使用IDE快捷键三下五除二就把一段丑陋的代码给收拾的服服帖帖。耳濡目染之下让我坚定了这个决心,不做差不多先生。所以平时我和同事一起工作时,就留心他们有哪些方法和工具来提高自己的工作效率。如果他们使用了一些好用的快捷键而我不知道,那我就会记下来下次自己用(快捷键熟练程度上我早已是我们项目组的number one)。
如果看到他们使用了一些好的工具我也会立马回去下载下来自己用。(比如前两天我看到同事使用SuperPutty来连接远程主机,其支持多tab方式,这正是我想要的功能。我回去立马下载下来,抛弃了以前的Putty)这样时间长了,集众人之所长,你自然也成为效率达人了。
一、不提升非技术技能
我们认为非技术技能是项目成功的主要因素。这些非技术技能也可以称之为“软技能”,总体上来说,它已经被公司证明为能够驾驭企业和客户之间的长期商业关系,因此也能决定公司的成长发展路径。一些关键的软技能指标包括:
a.纪律——这是最重要的特征之一,缺乏纪律,最终会让这个开发团队在开发能力上“缺乏自信”。解决这一问题的矫正方法就是每天制定详细的to-do清单:兑现你的承诺、完成你开始做的事情、避免多重任务,因为这些往往会让你的生活产生混乱。
b.顾客的声音——不把客户置于决策的核心地位只会跟你们业务的原始目的相冲突。如果客户不高兴,即使你拥有世界上一流的专业知识和资源也不会起什么作用。保持符合客户期望的解决方案、及时交付才能体现出项目的真正价值。
c.沟通——尤其是当客户和供应商并不在同一地点的时候,明确而及时的沟通是填补服务空白的极好措施。主要集中在这衡团三个方面你就能克服问题——进行主题讨论、清晰表达、干脆简洁。
d.了解需求——在整个开发生命周期过程中,决定成功和失败的之间的一个至关重要的区别将会给人留下深刻的印象。通过最初的头脑风暴法了解问题状态,以及后续的交货程序,这其中都要和客户完美配合。只有这样,客户才会赞赏你的工作,给你好评。
二、对编码不理智
古人云:善泅者溺,善骑者堕。但估计绝大多数的程序员都认为自己的编程技术绝对的牛。而同样真实的是,每一个代码,让不同的程序员去实现的话都会不可避免地发现它所存在的缺陷。所以说,只有通过在一个项目上的合作,程序员之间必然有的摩擦才能证明谁是最好的。健康的竞争是好事,但它不应该成为一个本来可以成功的项目的负担。
另一个创意阻碍是无法将预定义的模板使用在对你有利的开发项目里。几乎所有的编程语言有一个很好的在线/内置的代码片段存储库,可以咐闭橘修补代码,防止重新编程。然而,如果因为不理解需求或缺乏接触各种可用库/模板的话,这就意味着程序员最终会无意间将一开始就创建的代码付之东流。这不仅增加了开发时间,也提高了总体成本。另外一点就是,发布了的代码已经经过了质量检测,所以只有将它用作模板才能发挥它更大的价值。
三、不一定什么都要被理解
如果你是刚调到这个团队来的编程人员,对于手头的工作并不是很熟悉,那该怎么办?肯定是先看一些前任留下来的工作计划,要是他写的详细倒也没什么,如果写的不详细,估计会让你更加的挠头。
因此,推己及人,在需要交代的工作上,最好是把任务写的尽可能的详细。这么做也是非常现实的原因:能够把编程问题解决掉,最好是保证使用解释性的语言和英语发音来表示变量。一些基本的指针可以让你的程序更容易被理解,包括:
a.把所有参数、引用、方法和变量名称尽可能接近英语表达。保持文件名简短但有助于理解的功能。
b.使用++包装文字是一个好办法,能让代码和注释更加清晰。
c.将编写的程序保持在一个连续的流程上,尤其是在使用OOP基础上的语言:C、C和C++。
d.对于不同的代码块使用不同的描述名称。
四、不使用经过验证的工具和技术
程序员的好坏从他使用的编程工具和调试工具上就能看出。在异常情况的跟踪上,下面就是程序员经常会出现的常见错误。
对一些可能会对其它代码有影响的常见案例进行捕捉,处理这些比较常见的异常情况(而不是特殊的异常)意味着无意中除除掉了会抑制整个程序的残留部分,因此并不会影响他人的代码。
也许程序员可能带有恶意的意图来捕捉所有的异常情况,但即使是捕捉到了也不实施采取措施,这就是常说的“虚假安全阀”,这种异常处理手段是态轿对整个软件的稳定和安全的一种妥协方式。
五、较差的控制版本
在任何涉及多个团队的项目里,当谈到版本控制的时候不去介绍使用最佳实践都是一个十足的罪过。版本控制的目的是确保由一个人执行的编辑或修订不去影响另一个人的工作。
版本控制不仅有助于将由两个或两个以上的程序员的编辑工作合并到一起,还有助于跟踪程序的更改历史。所以说,任何开发团队都应该做一些好的改进措施以确保强大的版本控制,这其中就包括:
为每个解决方案创建一个“逻辑单元”
给解决方案制定描述性的名称
确保你所使用的都是最先进的文件
频繁的向团队分享你所做的各种改变
六、拥有最新信息的个人代表不了团队
一旦有新员工加入,就立刻强制安排他参加专业培训,让他知道他的角色是用来干什么的,尽早产生创造力。例如一个测试人与加入之后,就应该向他介绍编程的理念,之后将培训重点放到测试实践上,而不是继续阐述编程的重要性。
现阶段的技术的进化程度比以往任何时候都要快,,所以要记住,定期培训是必不可少的,这是在给团队创造价值。例如一个Web设计师需要知道响应式设计,提供给设计师大量的用户日常使用的移动设备的不断扩张的样品,希望他们能获得灵感。
七、不恰当的测试
测试作为整个系统开发生命周期(SystemsDevelopmentLifeCycle,简称SDLC)的重要一个要素,通常不需要开发团队给出太惊人的结果。但是如果在测试环节没有付出恰当的、相应的努力的话,这是说不过去的。下面的一些方法或许对你的测试团队有用,至少在你们交付产品的时候能够给用户一个好的交代。
单元测试
实物模型
综合测试
八、注意安全漏洞
有的时候在软件开发过程中,就会遇见如下这样的安全漏洞:
A、不同组件之间意想不到的交互作用:a、输入不正确的验证信息b、SQL资料隐码攻击c、跨网站指令码d、命令植入攻击e、跨站请求伪造(CSRF)
B、难以实施的资源管理,包括:a、不尊重可用内存缓冲区b、对外控制c、使用有潜在危险的功能
九、和客户交流
最初的合同签订后,开发公司通常会忘记每天与客户进行产品上的信息交互,以至于在交货的时候还需要进行升级。两大关键的交流点可以让你和客户保持更好的、更长的关系:
在客户开问之前,开发方应该和客户进行交流沟通。
和客户保持周期性的交流。
十、避免标准实践面临的迫在眉睫的最后期限
通常情况下项目都会遇到进度延误的现象。然而,这不是说你有理由去偷工减料或者是在开发或测试阶段耍花招,未经测试的模块绝对是一个隐患,会让你的开发团队名誉受损的。一个更好的方法来管理延迟是提前告知客户并且积极执行延迟计划。只要延期的理由是有效的,客户应该会理解,也会给你额外的时间来解决这个问题。
提高工作效率其实是我们大家每一个人都希望的事情,同时呢也是公司上司希望大家可以办到的,专业技能、专业知识、创造力、经验都是程序员该必备的东西。当然,还有工作态度、工作效率和工作质量更尤为重要。 那么问题来了,程序员又是如何提到自己的工作效率的呢!
对于程序员来说,他们的工作没有效率,那就意味着他们所投入的时间和精力是没有效果的。
专注于一个工作而不是同时处理多个任务:专注于某一个开发工作是很重要的。如果要同时处理几个任务,你不得不为此消耗精力,这样一来工作效率就会降低了。解决的方法是做好工作安排,把相似的工作放在一起,专心做好一个工作直到它完成了为止,再去做下一个工作。
建立一个有条理的工作系统:工作没有条理可以直接影响工作效率,制定一个井井有条的工作系统可以有助提高工作效率。
制定日常的工作程序:没有计划的工作会老扰迅打乱你的工作节奏,导致工作质量不一致,增加失误和犯错。所以要学会习惯性的制定一些计划与规划。
不要使用过多工具:在开发工作中,使用一些编程工具是有必要的,但更需要我们知道的是,如果使用过多,效果适得其反。
养成追踪工作结果的习惯:学会迅速果断地做出决定, 同时也要不能害怕犯错,但不会重复犯同样的错误。
要有足够的睡眠:每工作一段时间后应该停下来,长时间工作会令你的记忆力下降。所以,当你集中精力工作了一段李渣时间以后,建议适当的放松可以令你的身心得到调节,反而有助提高工作效率。
我个人感觉,还有一个很重要的就是大家无论干什么都要学会持之以恒,我感觉只要坚持那么总会有成效的。侍此尤其呢,作为程序员来说,编程是一项磨练程序员韧劲和耐性的工作。所以一切都是贵在坚持的!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)