【扣丁学堂】程序员如何提高工作效率?
2015-10-14 16:22
591 查看
更多:扣丁学堂
我们都会有过这种状态:当我走进办公室,到处闲逛,十秒钟就检查一次电邮,看网页,甚至干些不用脑子的事,比如支付美国运通的账单。但就是不会回到写代码的流程上来。
这样的低效症一发作一般都要持续一两天。但在我的职业生涯里,作为程序员,曾经好几次一连几个星期什么事都干不了。就像他们说的,我心不在焉,根本不在状态。
为什么会出现这种现象呢?面对这种情况我们应该如何应对。下面我们一起来分析解决这个问题。
首先,导致我们效率低下的原因可能会有以下方面:
1开放式房间布局
2程序员争论Django与.NET哪个好
3程序员笼统的争论
4同事过来问:“嘿,我的邮件你收到没?”
5嚼东西的声音。很明显我有恐音症
6对于我手上的问题还不理解
7怀疑这个项目
8手上有多个任务要完成,它们都是十万火急的
9有十万火急的事,其他事都别干了
10手机微博消息提示音
11电邮提示弹窗
12任何弹出窗口
13即时通信软件
14老婆问:“嘿,可以拿一分钟来帮我做件事吗?”
15build时间很长
16噪音
17办公桌前老有人走来走去
18公司集体活动
19维基百科(我是说真的,不要点任何链接)
20黑客新闻
总体来说,互联网都会影响效率
相对于以上这些因素,过去曾经这些事让我工作效率不错:
安静的环境
安静的办公室(个人专用办公室太少见了)
理解项目下一步我该干什么
对于问题有透彻的认识
没有打扰
我是认真的:没有打扰
远离微博
远离黑客新闻
硬件不出问题
热爱正在工作的项目
build和debug的时间不长
不要在网上争论政治
很明显,低效因素中有一半是我们自找的,但是有些不是,例如开放式办公室布局。
根本上讲,我们每个人都能控制造成我们低效的因素。我不会和平对抗。我要不就强硬表态,要不就坐着任由其他人在我身边走动。对此我真不擅长应对。所以,我在处理外部低效因素方面没有好建议,但是我知道这一条:控制我能控制的。意思是:
关闭我iPhone上的提示(还有个好处就增加了待机时间)
连续编码3小时就给我自己一个奖励(通常形式是“上网时间”,看看黑客新闻或是微博)
当真的真的有事要干才在家工作
投资一个性价比高的抑噪耳机
在日历上安排“无会”时间,向别人表明你在这些时间很忙,这是我的工作时间。
不要卷入办公室程序员的争论;人们有强烈的个人观点,而程序员的特性就是喜欢争论。如果真是有业务问题需要解决,让我们去会议室去,把每种方法的优缺点都摆出来。用数据说话,别只是争吵。
把办公桌摆在不会被过路人打扰的地方。
先看一遍问题,然后再请另一位程序员为我详细的解释一遍,这样我可以对要干的工作有更好的理解。这样做实现了两点:第一,这使我能掌握形势,使得我至少能对工作的要点有个基本了解。第二,它让我在求助时能问出更聪明的问题。
这些都是外部环境对工作效率的影响,除此之外,还有很多内部因素包括工作方式和运用的工具等因素也会影响到工作效率。善于有效运用工具可以提高工作效率。
熟练使用工具可以提高工作效率。
我们都会有过这种状态:当我走进办公室,到处闲逛,十秒钟就检查一次电邮,看网页,甚至干些不用脑子的事,比如支付美国运通的账单。但就是不会回到写代码的流程上来。
这样的低效症一发作一般都要持续一两天。但在我的职业生涯里,作为程序员,曾经好几次一连几个星期什么事都干不了。就像他们说的,我心不在焉,根本不在状态。
为什么会出现这种现象呢?面对这种情况我们应该如何应对。下面我们一起来分析解决这个问题。
首先,导致我们效率低下的原因可能会有以下方面:
1开放式房间布局
2程序员争论Django与.NET哪个好
3程序员笼统的争论
4同事过来问:“嘿,我的邮件你收到没?”
5嚼东西的声音。很明显我有恐音症
6对于我手上的问题还不理解
7怀疑这个项目
8手上有多个任务要完成,它们都是十万火急的
9有十万火急的事,其他事都别干了
10手机微博消息提示音
11电邮提示弹窗
12任何弹出窗口
13即时通信软件
14老婆问:“嘿,可以拿一分钟来帮我做件事吗?”
15build时间很长
16噪音
17办公桌前老有人走来走去
18公司集体活动
19维基百科(我是说真的,不要点任何链接)
20黑客新闻
总体来说,互联网都会影响效率
相对于以上这些因素,过去曾经这些事让我工作效率不错:
安静的环境
安静的办公室(个人专用办公室太少见了)
理解项目下一步我该干什么
对于问题有透彻的认识
没有打扰
我是认真的:没有打扰
远离微博
远离黑客新闻
硬件不出问题
热爱正在工作的项目
build和debug的时间不长
不要在网上争论政治
很明显,低效因素中有一半是我们自找的,但是有些不是,例如开放式办公室布局。
根本上讲,我们每个人都能控制造成我们低效的因素。我不会和平对抗。我要不就强硬表态,要不就坐着任由其他人在我身边走动。对此我真不擅长应对。所以,我在处理外部低效因素方面没有好建议,但是我知道这一条:控制我能控制的。意思是:
关闭我iPhone上的提示(还有个好处就增加了待机时间)
连续编码3小时就给我自己一个奖励(通常形式是“上网时间”,看看黑客新闻或是微博)
当真的真的有事要干才在家工作
投资一个性价比高的抑噪耳机
在日历上安排“无会”时间,向别人表明你在这些时间很忙,这是我的工作时间。
不要卷入办公室程序员的争论;人们有强烈的个人观点,而程序员的特性就是喜欢争论。如果真是有业务问题需要解决,让我们去会议室去,把每种方法的优缺点都摆出来。用数据说话,别只是争吵。
把办公桌摆在不会被过路人打扰的地方。
先看一遍问题,然后再请另一位程序员为我详细的解释一遍,这样我可以对要干的工作有更好的理解。这样做实现了两点:第一,这使我能掌握形势,使得我至少能对工作的要点有个基本了解。第二,它让我在求助时能问出更聪明的问题。
这些都是外部环境对工作效率的影响,除此之外,还有很多内部因素包括工作方式和运用的工具等因素也会影响到工作效率。善于有效运用工具可以提高工作效率。
熟练使用工具可以提高工作效率。
1.开发阶段,使用代码生成器。开发阶段的工作大多数就是对数据库的增删改查,我们可以用代码生成器生成大多数的简单逻辑的数据库操作。我相信80%的代码量 都是简单逻辑的,软件中的复杂逻辑的代码量只占20%。所以使用代码生成器生成好代码,粘贴到我们的程序中简单测试即可开发出大多数的代码了。国内的代码生成器推荐动软代码生成器,国外的产品推荐mygeneration和CodeSmith。这些生成器都可以自定义模版,比较灵活。
2.自测阶段,使用单元测试工具和仿真测试工具。大家没有没有这样的体会,为了测试一个很小的模块,登陆系统中要进行好多步骤的操作才能触发我们测试的模块,而且还要在界面上录入好多测试数据或是准备好多测试数据。时间和精力都消耗在这等无聊的重复劳动里了。
a)在编码过程中推荐使用单元测试工具。开源工具有Nunit,visualstudio中还有测试工程。原理很简单,就相当于一个main函数调用我们待测试的函数而已。使用也很简单,只要将准备数据写在代码中,运行单元测试功能,检查是否输出我们需要的结果就可以了。省掉了大量点鼠标的操作。
b)在开发完一个模块后需要使用仿真测试来验证模块的正确性。推荐使用工具loadrunner和Selenium。原理很简单,就是使用仿真测试工具录制我们测试的脚本,然后反复的使用工具对我们的功能进行验证。
3.系统上线后排除bug阶段。系统上线后客户会提出很多bug有些问题在开发环境中都无法复现;有些错误数据产生了,但是不知道客户是如何操作出来了的。这时就需要在开发过程中尽可能多的记录日志,这样在系统上线后,我们就可以顺着日志推断出代码的执行顺序,从而找出bug。推荐使用工具log4net和 Log2Console。注意这不是两个日志工具,而是两个搭配使用的工具。Log4net负责输出日志;Log2Console负责实时显示日志,而且 Log2Console可以对不同等级的日志分颜色显示。
写在最后,希望上述工具能够减轻大家的工作量,少加班。扣丁学堂总结出,纯手工敲出来的代码永远是最不值钱的,其次是那些使用工具的工匠,金字塔最顶层的是那些指挥工匠的BOOS。处理好外部环境的影响,同时熟练使用这些常用的工具,工作效率自然就会提高。
相关文章推荐
- 3-5年的PHPer常见的面试题
- .Net程序员面试 中级篇 (回答Scott Hanselman的问题)
- .Net程序员面试 每个人都应知道篇 (回答Scott Hanselman的问题)
- .Net 程序员面试 C# 语言篇 (回答Scott Hanselman的问题)
- 黑马程序员——Java基础---面向对象(封装、构造函数)(2)
- C#笔试面试宝典值得收藏1
- C#面试基础问题0
- webservice CXF 客户端调用报错
- 黑马程序员————java反射的简单应用
- 黑马程序员——Java基础语法---关键字、常量、变量、运算符
- 黑马程序员_java多线程
- 指针改变了吗?码农!
- 程序员必读经典书籍
- 优秀程序员的18大法则-兄弟连IT教育
- 一个测试工程师面试结束后想说的
- 黑马程序员-反射机制
- 面试总结hashmap
- 黑马程序员—main(String{} args)你不了解的细节
- J2EE经典面试题及答案
- 去哪儿测试工程师笔试面试总结