1. 程序员怎么提高工作效率
程序员提高效率的一些建议
我是一个程序员、设计师和企业家,也是 Asana 的联合创始人。许多知名公司(如:Uber,Pinterest,Dropbox)都在使用这款提升团队生产力的软件。我在 Facebook 做开发经理时,设计过一个用于提升团队生产力的工具,Facebook 至今仍在使用该工具。
改善环境
避开所有打扰
“多任务处理”使人感到更有效率,但研究表明,它使我们变得更加低效。我们经常去查看邮件,这种频繁的打断使我们思维变得迟缓 ,我们需要花费比预期更多的时间回到原来事情上。所以当你需要集中注意力时:
将手机设置为勿扰模式。在 iPhone 上:从屏幕的底部向上滑动,然后点击月亮图标。
关掉所有与当前任务不相关的网页。
如果你的工作需要写邮件,写邮件时不要看到新邮件。在 Gmail 中的 Gmail 书签(过滤掉所有内容)可以实现这一点。
关掉计算机上的新邮件提醒。
退出聊天软件。
发现你的时间流
如果一天中你不断地被会议打断,你很难进入时间流、处理复杂任务的状态。
在日程表上标注自己有一个三个小时的“会议”,你是会议的唯一参与人员。这样同事们在安排会议时会避开这段时间,你可以在这段时间里不间断地将工作完成。
如果可以话,每周选择一天作为全公司的无会议日。在 Asana,我们设有“无会星期三”。
跟踪了解你一天中不同的活动的高效时间。在你的高效时间完成工作最难的部分。下图是我用来确定我的高效时间的方法,我的高效时间是上午 10 点到中午。相关阅读:寻找你的超人时间。
精通你使用的工具
如果你一整天都在使用电脑,每次你伸手去拿鼠标的时候,都会降低一点速度,阻碍你的时间流。你操作计算机的速度应该跟上你思维的速度。这样做你需要学习常用软件的快捷键。
每次需要使用鼠标时候,看看是否可以使用快捷键代替。通常你可以在菜单项中找到对应快捷键,或当你把你的鼠标光标放到按钮上会显示出快捷键提示。在 Mac 上:⌘ 是 Command,⌥ 是 Option,⇧ 是 Shift, ^ 是 Ctrl。
使用软件 SizeUp,可以迅速重新排列软件窗口,不需要使用鼠标。
优化思维
这方面我最喜欢的书籍之一是托尼·施瓦茨的《全心投入的威力:管理精力而非时间》。 仅仅是这本的书名就有很大启发性。
定时休息
通常我们以为,在工作上花费的时间越多,完成的任务也就越多。事实并非如此,人类不是机器,我们的大脑需要时间恢复。人类不是机器人。我们的头脑需要时间来充电。研究表明,工作 90 分钟,休息 15 分钟,有助于在更少的时间里完成更多的工作 。
冥想
照顾好自己的.身体
多喝水。 每天早上,我都会在办公桌上放 5 大杯水。我每天下班时,都已经把水喝完了。看到桌上放的这些水,会提醒我喝了多少水。
改善饮食。 碳水化合物过高的午餐会使你下午精力不足。
运动: 每周两次有氧运动可以帮助提高效率。
总之,使用的工作外的时间来修养身心,工作时会更加精力充沛。
直面困难、克服拖延
我们拖延,不是因为懒惰,而是因为任务的重要性会使我们感到焦虑。发生这种情况时,你应该做以下的事:
诚实面对你焦虑的原因。把导致焦虑的事情写下来,或者告诉你朋友。你为什么感到如此害怕?
寻找一个容易执行的下一步。
关于这方面,我写过一篇文章:《如何通过面对焦虑克服拖延》。
如果你现在没有精力去面对恐惧,那么至少做你的清单上的第二优先的事情,而不是去查看 Facebook。多产的斯坦福大学教授约翰·佩里把这种做法称为“结构化的拖延症”。在网站 StructuredProcrastination.com 上,他把自己的成功归结于这种做法。
优化流程
设定清晰的计划。许多低效源于没有分清事情的轻重缓急。你没有搞清楚哪些事情有助于实现你的目标、什么是最高优先级的事情。
在下一步计划没有完全明确,并且整个团队达成一致之前,不要开始行动。
先思考这些事情:我们的目标是什么?我们为什么想要达成该目标?达成该目标需要哪些步骤?每一个步的负责人是谁?这些步骤的顺序是怎样的?什么是所有去实现它所需的步骤?每一步骤由谁负责?这些步骤将按照什么顺序执行?
团队合作
有些人喜欢独自工作,但是,处理复杂任务时,我一般觉得困难、容易分心。
找一个愿意合作的队友。有时候,花费我两天的任务可以在 2 小时内与合适的伙伴完成。 “结对编程”是软件行业很常见,但它其实适用于任何领域。
或者,你可以进行自我对话,问问自己那些问题是重要的,然后把问题和答案写到文本编辑器或者笔记本里。我在电脑上以随意的形式写过一些长篇的对话,这些对话都是富有策略性的,有成效的。
公开声明最后期限
将同伴的压力转化为你的优势。如果一项重要任务没有固定的最后期限,我会自信地告诉别人:“我会在周五下班时送给你一份作业副本”。我不想在同事面前表现得很可笑,所以我会努力确保事情在周五完成。
使用软件来跟踪你的工作
毫无疑问,我认为 Asana 在这方面是最好的。它不仅为维护你的待办事项清单;它同时还管理整个团队的工作流程,所以你们不需要无休止的会议来保持同步。Asana 让大家在工作的地点面对面的交流,这样你就不需要一直通过电子邮件去获取信息。
花点时间反省
每一天结束用几分钟考虑一下:什么地方做的好,什么地方做的不好。你的整个工作流程是否有可以改进的地方?如果你每天都可以提升 1% 的效率,一年后你的效率将有 15 倍提升。
2. 程序员提高软件开发效率的5个经验
现在网上常看到很多的文章,是写关于程序员怎样提高工作效率的。有些看看还是有用的,但有些还是不要盲目学的好,事后在想,我也可以写点这方面的内容,以自己的成功经验为案例,希望可以帮到大家,当然,我也不想浪费太多的时间来说和让大家学着做,而且北大青鸟认为所写的这几个观点对我个人还是有效的,但不一定对大家也一样有效,如果也一样对某些人有效,那么,很高兴就够帮到你。
1.不要犹豫,有时断一下网是很有必要的。
说实话,再也没有比这个更好的了,而且效果非常明显,因为,如果你想要好好的静下心来工作,那么,把网断了,手机最好也静音,要使用的编程语言和编程工具用离线版本的就好了,真要是有什么确实解决不了的难题用手机搜就好了,不过我也知道这时用电脑更快捷些,但对于那些不自觉,只要上网就停不下来人来说,还是不要用电脑搜的好。
2.目标要明确
如果同时有几个项目要完成,你是不是就觉得不知道要从那里入手了,我要说的是,不要自己乱了,先从中做个排序,把几个项目从重到轻例个表出来,然后再一个一个的完成。毕冲所以大家不要想着你可以一次都能做完,这样可能会导致于最后一事无成,一定要明确规划好目标。
3.休息和睡眠要充足
不是一定要不停的工作才会出高效率,适当的休息后再工作可能会效率更高,因为长时间的工作可能会出现疲倦感,这样会让你很难集中精力好好工作,这时你可以停下手上的工作做些别的事情,可以闭目养神,也可以听听音乐,站起来望下窗外,随你喜欢,做些什么都是可以的,另一个就是,到了晚上该睡觉的时候是一定要睡觉的,不然你的程序员生涯就不长了。
4.做好提前计划
这个绝对是实践后得到的好结果,我试过在当天的工作都完成后,为第二天的工作做了个计划,结果到了第二天发现效果太棒了,当你坐下来打开电脑就能很快的进入到工作的进程中,因为前一天的计划已经让你的脑子很清楚先做什么后做什么。如果当天有些工作没完成就更应该记录下来,特别是在周五的时候,因为我总是在周一上班时脑袋是蒙的,有一小段时间是手灶歼不知道自己该做什么,所以提前记录当天没完成的工作是对下次工作很好的交代,做好提前计划也是对第二天工作的一个很好的开展。这样你的工作效率会大大的提高是显而易见的。
5.如果有时间,可以来点下午茶或是咖啡什么的。
有时,不管是来点茶还是咖辩渣啡都有可以提高我们的工作效率,不过这也不是绝对的,还是要因人而异,又或者是来些其他的小零食也是不错的选择。
3. 怎样做一名高效率程序员
1、理解编程语言的原理
三流的人才懂应用,二流的人才懂开发,一流的人才懂原理。各种语言之间存在着相似的地方,掌握语言的原理是必不可少的。最重要的,让语言去适应项目,反之亦然。
2、向优秀程序员学习
你有一个苹果,我也有一个苹果,我们交换苹果,你我还是有一个苹果;你有一种思想,我也有一种思想,我们交换思想,你我就有了两种思想。
与优秀的程序员为伍,你将吸收的最实用的经验,这远比你一个人自学、死磕编程来的快一些。有一句话说到好,与臭棋佬下棋,棋会越下越臭。不可否认这样一个事实:和什么样的人在一起,就有什么样的格局,就会有什么样的人生。
3、了解数据结构和算法
如果你要成为一个高效的开发者,就必须学会快速排序、学会辨认O(n2)程序、学会编写递归函数。
学会多种语言,你便会更清楚不同的框架是相同问题的是如何解决的。尽可能去了解底层命令(plumbing),以便能够作出明智的决定(Web框架是怎么存储session状态的?Cookie到底是什么?)。
4、精通一个编辑器
高效开发者通常是用IDE编辑器吗?其实不是的,他们更常用的文本编辑器,因为这样更会学到东西。
如果使用编辑器选择通用的Emacs或Vim,自然是最好的。其次,挑选你的首选平台最支持的。使用宏,不断地写代码;使用Visual Studio或SublimeText的自动补齐功能。
5、整洁的代码胜过巧妙的代码
如果想让别人可以轻松读懂你编写的代码,请尽量使用最少的代码来完成任务。在编写代码过程中,遵循DRY(Don’t repeat yourself)的原则,使用明确定义的对象和库,将任务分解成小而简单的代码段。
6、掌握代码调试技巧
现如今市场和需求变化相当快,项目的周期有时就会缩短。一个月的工作计划,会缩短到2个星期。项目的压力难免会导致程序员的代码质量会有所下降!
因此,调试技巧在这样的环境下就显得尤为重要。高级程序员会在函数的开始和结束输出Log,把所有的参数和返回值打印到日志系统,便于追踪。在解决问题的过程中,使用开发工具一行一行进行调试,实时观看参数的变化。
7、重新回顾代码
重新去回顾和审视自己写过的代码,通常会有两种体验,一种是我怎么写了这么烂的代码;另外一种则是对自己写过的代码充满了成就感。回顾代码有时可以触发我们新的想法,甚至还能对编码有一个更深层次的思考。
4. 对于程序员,提高软件开发的质量和效率该从那些方面努力
1.提高代码的规范性。编码规范 可以提高代码的可读性,并且在代码修改的时候很容易。
2.对功能进行分类,并拆分。分析出几种处理逻辑。编写代码时,部分代码可以。可以提编码速度。
3.对功能进行分类,并合并。提出共通类。
4.不同的package对应不同的功能。
简单的说,每天写几百行代码。坚持半年或者1年,就知道什么方式是适合你的了。 不写代码,光想,十年也还是那个水平。每个人的逻辑思维是不一样的,写代码的方式也是不一样的。有时间问,还不如多写写。或者,自己模拟现实个场景(或公司管理制度之类的),然后实现。写几个,很自然的就知道自己该怎么写了。
5. 澶у﹀叚绉岖▼搴忓憳瀹炵敤绠楁硶鎺ㄨ崘
绋嫔簭锻桦疄鐢ㄧ畻娉曟湁鐢ㄦ帹钻
绠楁硶涓: 蹇阃熸帓搴忕畻娉
蹇阃熸帓搴忔槸鐢变笢灏悸烽湇灏旀墍鍙戝𪾢镄勪竴绉嶆帓搴忕畻娉曘傚湪骞冲潎鐘跺喌涓嬶纴鎺掑簭 n 涓椤圭洰瑕丱(nlog n)娆℃瘆杈冦傚湪链鍧忕姸鍐典笅鍒欓渶瑕丱(n2)娆℃瘆杈冿纴浣呜繖绉岖姸鍐靛苟涓嶅父瑙併备簨瀹炰笂锛屽揩阃熸帓搴忛氩父鏄庢樉姣斿叾浠朞(n log n) 绠楁硶镟村揩锛屽洜涓哄畠镄勫唴閮ㄥ惊鐜 (inner loop)鍙浠ュ湪澶ч儴鍒嗙殑鏋舵瀯涓婂緢链夋晥鐜囧湴琚瀹炵幇鍑烘潵銆
蹇阃熸帓搴忎娇鐢ㄥ垎娌绘硶绛栫暐𨱒ユ妸涓涓涓茶(list)鍒嗕负涓や釜瀛愪覆琛(sub-lists)銆
绠楁硶浜: 鍫嗘帓搴忕畻娉
鍫嗘帓搴(Heapsort)鏄鎸囧埄鐢ㄥ爢杩欑嶆暟鎹缁撴瀯镓璁捐$殑涓绉嶆帓搴忕畻娉曘傚爢绉鏄涓涓杩戜技瀹屽叏浜屽弶镙戠殑缁撴瀯锛屽苟钖屾椂婊¤冻鍫嗙Н镄勬ц川:鍗冲瓙缁撶偣镄勯敭鍊兼垨绱㈠紩镐绘槸灏忎簬(鎴栬呭ぇ浜)瀹幂殑鐖惰妭镣广
鍫嗘帓搴忕殑骞冲潎镞堕棿澶嶆潅搴︿负O(nlogn)
绠楁硶涓: 褰掑苟鎺掑簭
褰掑苟鎺掑簭(Merge sort锛屽彴婀捐疟浣:钖埚苟鎺掑簭)鏄寤虹珛鍦ㄥ綊婢′綔涓婄殑涓绉嶆湁鏁堢殑鎺掑簭绠楁硶銆傝ョ畻娉曟槸閲囩敤鍒嗘不娉(Divide andConquer)镄勪竴涓闱炲父鍏稿瀷镄勫簲鐢ㄣ
绠楁硶锲:浜屽垎镆ユ垒绠楁硶
浜屽垎镆ユ垒绠楁硶鏄涓绉嶅湪链夊簭鏁扮粍涓镆ユ垒镆愪竴鐗瑰畾鍏幂礌镄勬悳绱㈢畻娉曘傛悳绱犺繃绋嬩粠鏁扮粍镄勪腑闂村厓绱犲紑濮嬶纴濡傛灉涓闂村厓绱犳eソ鏄瑕佹煡镓剧殑鍏幂礌锛屽垯鎼灭礌杩囩▼缁撴潫:濡傛灉镆愪竴鐗 瀹氩厓绱犲ぇ骞叉垨钥呭皬骞蹭腑闂村厓绱狅纴鍒椤湪鏁扮粍澶т簬鎴栧皬骞蹭腑闂村厓绱犵殑闾d竴鍗娄腑镆ユ垒锛岃屼笖璺熷紑濮嬩竴镙蜂粠涓闂村厓绱犲紑濮嬫瘆杈冦傚傛灉鍦ㄦ煇涓姝ラゆ暟缁勪负绌猴纴鍒欎唬琛ㄦ垒涓嶅埌銆傝繖 绉嶆悳绱㈢畻娉曟疮涓娆℃瘆杈冮兘浣挎悳绱㈣寖锲寸缉灏忎竴鍗娿傛姌鍗婃悳绱㈡疮娆℃妸鎼灭储鍖哄烟鍑忓皯涓鍗婏纴镞堕棿澶嶆潅搴︿负O(logn) 銆
绠楁硶浜: BFPRT(绾挎ф煡镓剧畻娉)
BFPRT绠楁硶瑙e喅镄勯梾棰桦崄鍒嗙粡鍏革纴鍗充粠镆恘涓鍏幂礌镄勫簭鍒椾腑阃夊嚭绗琸澶(绗琸灏)镄勫厓绱狅纴阃氲繃宸у欑殑鍒嗘瀽锛孊FPRT鍙浠ヤ缭璇佸湪链鍧忔儏鍐典笅浠崭负绾挎ф椂闂村嶆潅搴︺傝ョ畻 娉旷殑镐濇兂涓庡揩阃熸帓搴忔濇兂鐩镐技锛屽綋铹讹纴涓轰娇寰楃畻娉曞湪链鍧忔儏鍐典笅锛屼緷铹惰兘杈惧埌o(n)镄勬椂闂村嶆潅搴︼纴浜斾綅绠楁硶浣滆呭仛浜嗙簿濡欑殑澶勭悊銆
绠楁硶鍏: BFS(骞垮害浼桦厛鎼灭储)
骞垮害浼桦厛鎼灭储绠楁硶(Breadth-First-Search)锛屾槸涓绉嶅浘褰㈡悳绱㈢畻娉曘傜亩鍗旷殑璇碆FS鏄浠庢牴鑺傜偣寮濮嬶纴娲荤潃镙(锲)镄勫藉害阆嶅巻镙(锲)镄勮妭镣广傚傛灉镓链夎妭镣瑰潎琚璁块梾锛屽垯绠楁硶涓姝銆侭FS钖屾牱灞炰簬鐩茬洰鎼灭储銆备竴鑸鐢ㄩ槦鍒楁暟鎹缁撴瀯𨱒ヨ緟锷╁疄鐜痫FS绠楁硶銆
6. 程序员如何提高自己的工作效率
程序员如何提高自己的工作效率?程序员要在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,introce的快捷键真是好用到爆,掌握了这些快捷键可以说对代码进行任何重构都不费除灰之力,我们的注意力也从手动修改代码转移到如何发现坏味道了。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)这样时间长了,集众人之所长,你自然也成为效率达人了。
7. 程序员是如何提高工作效率的
提高工作效率其实是我们大家每一个人都希望的事情,同时呢也是公司上司希望大家可以办到的,专业技能、专业知识、创造力、经验都是程序员该必备的东西。当然,还有工作态度、工作效率和工作质量更尤为重要。那么问题来了,程序员又是如何提到自己的工作效率的呢!
对于程序员来说,他们的工作没有效率,那就意味着他们所投入的时间和精力是没有效果的。
我个人感觉,还有一个很重要的就是大家无论干什么都要学会持之以恒,我感觉只要坚持那么总会有成效的。尤其呢,作为程序员来说,编程是一项磨练程序员韧劲和耐性的工作。所以一切都是贵在坚持的!