‘壹’ 程序员怎么提高工作效率
程序员提高效率的一些建议
我是一个程序员、设计师和企业家,也是 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 倍提升。
‘贰’ 为什么有些程序员是三、四台电脑一起用的
计科专业毕业在软件行业混了几年,加上现在这份工作已经前前后后经历了四家公司,程序员基本的标配是一个台式机一个笔记本电脑,当然还有很多在桌子上多放几个显示器,程序员用多个电脑一起工作主要原因还是同事处理多个事情,干脆一个屏幕一件事情,这样大脑就可以根据的屏幕的信息进行切换。一般来讲编写代码的放在一个屏幕上,其余的事情放在一个屏幕上。就是为了减少思维模式的切换,减少干扰,至于说三四台电一起用的程序员倒不是很多见。
1.选择一个合适的键盘。从自身出发这点比较在意,有个合适的键盘使用起来明显的感觉不一样, 其实本身不追求什么机械键盘,就是喜欢自己已经使用习惯的,不在于贵贱主要是已经习惯了,其实这也是程序员很大的一个特性,用的顺手的东西很难去改变,如同现在编写代码无论是不是需要依赖linux环境,都要在linux下面编写代码,已经是多年养成的习惯。
毕竟已经在linux上面研究了好多年的编程习惯,里面的快捷键或者编程工具太熟悉了,通常来讲在上面写代码或者调试都变得十分自然,真要突然的改变会变得十分的不适应。
2.逛技术网站。几乎每天都会抽出一个小时时间来看看技术论坛,看看有什么新鲜的技术更新出来了,唯恐拉下什么新技术了,主要原因是近些年技术的更新速度太快了,稍不留神就拉下了,更加重要的是通过看技术网站能学到很多新的编程思维,毕竟技术性的东西,只靠闭门造车肯定很容易遇到瓶颈,通常更加喜欢技术交流。
现在开源社区发展迅猛,每隔一段时间就出现一个新的框架,能够解决当前很多棘手的问题,其实看技术文章最大的一个好处是可能某些你正在迫切需要解决的一些问题,高手已经通过框架的方式给解决掉了,你只需要拿出来去学习如何使用就可以了。
3.在网络上技术交流。程序员平时可能说话不多,但并不代表着没有交流的诉求,很多程序员都有自己的技术圈子,当然这种圈子多数是以网络性的技术交流多一些,探讨一些技术问题,或者讨论下技术生涯的各种不如意的地方,最主要探讨一些技术爱好方面的东西,更加喜欢虚拟世界的技术交流,所以很多人讲程序员比较闷骚,内心其实挺狂热,其实网络上的交流也算是释放的一种。
在刚毕业那会公司有个技术高手,平时标准的沉默寡言,有一次一起出差聊到如何开始做技术,经历了几家公司倒是勾起了他的一些往事和记忆,然后拉着我聊了半宿,我都快睡着了他还在滔滔不绝的讲,程序员并不是不喜欢讲话聊天,主要没有撬动开内心的世界,一旦打开一样也会滔滔不绝。
使用多个屏幕编程也算是程序员的一个嗜好吧,主要方便思维的切换,总体来讲还是为了提升工作效率,其实也算是一个特别的爱好,每个程序员更加讲求实际的效果,更加务实而已。
希望能帮到你。
同时用两三个显示器的我见过,同时使用三四台电脑的倒是真的很少见。
现在也不需要天天背着电脑上下班了,家里常用两台电脑:
两台电脑在单位,两台电脑在家,虽然看起来也是有着四台电脑,但是“一起使用”的时候几乎没有的。
主要是为了便捷,高效。
其实一般是两台电脑,三台的实际上很少人用,第一没必要第二太张扬,两台倒是很多,尤其是经常会一台显示器一台笔记本。
你想想如果你的办公位有三台电脑,而自己只是普通程序员,连小领导都不是,这样会不会怪怪的。所以我就见过的配三台的,他是技术总监。
现在很少用3.4个电脑做事了,那是以前很多工作室或者个人做复杂的工作用的方法,比如一个电脑做服务器和文档资料,一个电脑做大内存的工作( 游戏 ,渲染,绘图,大文件处理等),一个电脑做调试(写程序,上位机,串口,外接设备调试验证等),现在电脑配置很高了,可以一个电脑做N个系统,连接多个显示器和鼠标键盘,(类似网吧装的无盘系统),外置接口也可以是无限扩张根据不同的需求用不同系统。程序员三、四台电脑一起用主要是为了调试软件和硬件的兼容性,比如说你用VB或者易语言写了一个Windows程序,你都需要在95,2000,W7,W8,W10的系统中运行,测试运行的结果是否一致,有的系统可能因为兼容性问题根本就运行不了
游戏 行业是常事,我申请了4台电脑,平时主要用的是i9 64G内存,1080ti的显卡的台式,一台15存i9的macpro,需要用来开会和移动,家里放一台13寸的MacPro,临时有事在家解决的时候用。正版的Maya和unity,adobe套装很贵,公司一般不愿意员工装在自己私人电脑上,所以需要家用处理问题一般会提供额外电脑。最近因为需要出差,需要有独显的笔记本,又申请到一台17寸的1080的外星人
掐指一算家里合共6台电脑3台笔记本,最常用的只有两台,一台客厅PC一台卧室iMAC,客厅撸完代码checkin后,到卧室checkout继续撸,这样老婆就不会唠叨你不陪他了!
平时做项目时侯基本上一台显示器一台主机,如果跟着视频学习项目时侯是一台电脑配2台显示器,做过图片渲染时候会单独备一台电脑用,如果是搞 游戏 代练的估计会一个人用好多台电脑,对于一些股票经纪人可能会一台电脑配4,5台显示器,或者一些网络入侵的人也会同时用几台电脑!
我公司新开发多合一计算机终端,正是为了把多台电脑的功能集成到一台主机内,通常用于多网办公,或需要多台电脑进行开发测试等场景
作为多年的程序员,我负责任的说,这绝对不是为了装13,一台显示器大的电脑通常用来编写代码,一台电脑通常用来查看设备输出的log以及文档图纸之类的,还有一台电脑用来实时查看股票和回复邮件微信的,:-)
因为可以显得牛逼?
‘叁’ 程序员所有代码都是一个一个自己敲出来的吗
显然并不是,有的框架是原来就有的,他们只要往里面填充当时没有的代码和他们所需要的代码就可以了,可以有效的提高他们的工作效率。
安卓开发也是如此,就好比画画调用画图板的各种命令集一样。比如我想做一个音乐播放器。刚开始进入的是欢迎界面,我调用系统的UI界面库,把图片显示在界面上。然后进入登录界面,我调用网络请求库,把用户名、密码发送到服务器上面进行验证。最后进入播放页面,点击播放歌曲,我调用系统的多媒体库,把音乐播放出来。整个过程跟画画是十分类似的,只不过你是用鼠标触发然后调用画图板指令,而我是借助代码调用各种库函数。