程序员最艰巨的任务跟编写代码没有多少关系

去年看到的文章,记在了EverNote中,今天做总结时又看了一下,贴在这里吧。

  程序员最艰巨的任务跟编写代码没有多少关系。编码是逻辑思路的一种实践,这跟程序员日常工作中的其它任务比起来相对简单。如果你认为自己还是一个水平一般的程序员,在你真正的能进入到高手行列前,请确保你已经克服了下列晋级的障碍。

   1. 解释你在干什么
  解释软件开发过程是一个很困难的事情。那些非程序员职业的人也许知道很多关于编程的事情,但很显然,他们不会编程。对于他们来说,我们的生活就是在一间黑暗的屋子里趴在键盘前消耗着咖啡。
  你会在你的朋友、家人和同事中遇到这样的人,他会认为编码不是一个正确的职业。
   2. 形象的说出软件解决方案
  根据一些简短的需求——通常是一知半解的,你需要设计出数据结构,软件架构,代码算法,通信协议,以及其它所有针对商业问题的解决方案各种组成部分。然后你需要用一种外行人听的懂的术语将它们表达出来,并需要在规定的时间里提交给客户。
  很少有程序员能做好这些。

   3. 评估工期
  这是程序员痛苦的根源。在开发任务没有完成之前,你是绝对没有可能确定完成这个任务需要的时间。也许程序跟以前写的很相似,但环境变了,问题变了,限制条件变了。
  经验会提供一定的判断力,但大部分的程序员都习惯于低估问题难度。这其中的原因是他们只考虑编码方面的因素,而忽略了这个任务清单上的其它事务。
   4. 维护他人的代码
  针对一个问题可能会有一万种解决方案,一万种写法。接手别人写的代码,意味着你要花无数的时间在成千上万的代码行里探索,理解当初作者的思路。而且,如果是一个不相信注释和文档的程序员留下的半个项目,麻烦就更大了。
   5. 软件边界的模糊蔓延和让人吐血的奇怪功能需求
  虽然敏捷开发方法给软件范围的膨胀提供了一定的预备空间,但这并没有起到任何的作用——尤其是当你遇到一些由一时兴起的怪念头产生的功能需求。你知道这样做必定会失败。你的团队知道这样做必定会失败。但客户觉得很好,而当失败不可避免的出现时,全是你的错,因为是你没有理解他们的真实意图。
   6. 在缺少优化和过度优化之间找到平衡点
  复杂的软件永远不会做到完美;总会有一些更好的方案。你完全可以没完没了的优化下去,这就是为什么软件项目从来都没有提前完工的。
  而另一面,"这样就行了——我以后会优化它的"这种心态也是常见的。代码今天好用,但你知道明天可能会出现麻烦或不能用。当然了,你是不需要去修改它的,它将会留给下一个倒霉蛋程序员。
   7. 测试你的代码
  单元测试你也写了,软件也提交了测试组,但bug依旧存在…
  软件是复杂的,可能包含成千上万行代码。系统中可能存在百万的各种交互和逻辑路径;你不可能完全测试它们。
  类似的,软件会在不同的条件下跟不同的平台上的不同的软件交互。你不可能所有的都测到。
  写出好的单元测试是一种枯燥且辛苦的工作。理想情况下,测试应该在着手开发前就已经写好——但你如何向客户解释为什么四个星期过去了仍然没有可用的软件?
  单元测试并不能覆盖每个问题点。在理想的世界里,应该有一个独立的团队来写测试并积极的去发现问题。不幸的是,对大多数项目来说,这样成本太高,时间不够,于是用开发团队来写测试程序。而开发团队潜意识的会避免很多极端的边界情况。
  程序员喜欢用符合逻辑的方式处理所有问题。但用户很少是这样的。他们会发现你永远意想不到的问题。
   8. 写软件文档
  给代码写文档是一项费力耗时的工作。很少有程序员擅长这个、喜欢这个的,并且很少有程序员会花时间去读它们。
   9. 处理IT问题
  你每天都在研究技术。你也许是一个HTML或PHP程序员,但你很可能会遇到一些例如硬盘损坏、驱动冲突或软件崩溃的问题。解决这些事情不是你的主要责任,但是,除非你解决了这些问题,否者你将无法继续你的开发工作。
  不幸的是,对于IT圈外的人来说,程序员应该是软硬件都精通的人。当他们遇到了问题,他们自己不花时间就解决,直接会找你。不论是遇到什么问题:你是用计算机的,你一定知道如何将预算表导入Sage,如何配置Oracle,或为何在他们的黑莓手机上发不出邮件。
  当然了,这些打搅绝对不能成为你完不成工作的理由,也没有报酬,不是吗?
   10. 处理人的问题
  上面的这些难题都可以总结为"人的问题"。很少有外行人会去建议一个飞行员如何开飞机或建议一个电器工程师如何布线。但很多人却会兴致勃勃的勇敢的建议如何开发软件。
  我相信对于这些人没有什么好办法。你需要接受这样的事实:这世界上有一半的智力是低于平均水平的!
原网页已经由ZAKER转码以便在移动设备上查看

程序员最艰巨的任务跟编写代码没有多少关系

时间: 2024-10-12 19:43:47

程序员最艰巨的任务跟编写代码没有多少关系的相关文章

程序员面试京东前端,现场JavaScript代码写出魔方特效

程序员面试京东前端,现场JS代码写出魔方特效,成功搞定20K月薪 今天小编我逛论坛,看到了一位程序员小伙子,因为是有了两年工作经验,然后去京东面试前端岗,一面二面轻松就过了,到了技术面这一块,小伙干脆就直接用JavaScript写了一个魔方特效,最终通过了面试,试用期12K,转正20K的工资水平,这特效看的小编也服气,主要是脑洞大,所以我也COPY了一份源码,分享给头条上的小伙伴学习. 完成之后的效果图如图所示: 完整源码分享给大家: 想要更多项目源码拿来练练手的可以复制下方群号→ web前端/

程序员自我修练-提高写代码的能力(转)

首先让我们看一看刚入软件公司会出现的情况: 1. 你可能会常常发现,写了一段代码后,编译程序时是一大堆的出错 (原因:语法不熟) --别担心,这是每个程序员必须经历的事,这时候你就需要更大的耐心及细心, 对每一行代码进行仔细人阅读并改正,这个很重要,这可以培养你的理解代码能力,所以要常读程序,不要等到程序运行以后才知道你的程序的结果. --如何避免:在写代码以前,要认真的学习计算机语言的语法,如关键点,易错点,易忘点.同时要自已动手写自已的测试代码,而尽量不要抄别人的代码示例.即使抄,在学习阶段

三十岁的程序员,反思这五年的代码生涯

到昨天为止,做程序员,已经整整五年.最近半年来,我时常思考我走过这五年,反思我的职业工作,反思我的生活,我选择错了很多,也做错了很多.有些道理,到最近才幡然醒悟,遂决定谈谈我个人对软件工作的看法,以及一些生活的感悟. 苦苦攒钱的年轻人 我还在苦苦地攒钱,也许有人不信,我当初一万二的税后收入,每个月能存一万.我花钱不多,也有些克制自己的欲望,但这就导致我很多想做的事情不敢去做. 想学吉他,想报健身班,想去进修课程,想有段长时间的旅游等等.都没有去做,并不是没有钱去做,而是怕尝试太费钱,万一我只是三

一款程序员的杀手级应用:TabNine代码补全工具

近日,一位来自加拿大的大四学霸,开发了一款"Deep TabNine"代码补全工具,实现了这一大胆的想法. 它支持23种编程语言.5种编辑器,使用简单,效果惊艳. 不少使用过的网友说:TabNine是他们用过的最好的代码补全工具,这是属于程序员的杀手级应用. 在VS Code的扩展商店里,TabNine已经被下载1.3万次,获得全5星好评. Deep TabNine支持Java\Python\C++\Haskell 除以上几种语言之外,Deep TabNine还支持Java.C.PHP

最初程序员的思维“修炼”之二编写身边的程序

现在我已经是一名大二的学生,在这将近两年的打代码的生活里,有过平平淡淡的上课下课:有过打心底的想要打代码,想要完成目前的任务:有过想打代码,但是不是到做什么的那种煎熬的日子. 最近的一句话感触很深:如果把生活的每件事能用程序编写出来,那么你就真正入了门. 我有一个想法,把你的梦想,你的目标,你的每天的安排用程序显示出来. 当然,有人说,我有了日历不就行了吗,你是对的,这样可以. 你编写程序的目的是什么,当然除了有个相对较高的薪水,是为了实用,方便生活,还有乐趣. 以下是我的想法: 我学习的是C#

程序员你为何喜欢在深夜写代码编程?

如果你问我为什么喜欢在深夜写代码?我会说安静,效率高,没人打扰. 是的写代码的过程最害怕别人打扰自己.所以有人宁愿晚上熬夜写代码. 往往而言确实 夜晚比白天的效率高很多. 为何如此? 其实大脑疲倦的时候更能集中精力去干一件事.因为屏幕的光亮,时间慢慢的流逝 写代码虽好,可不好经常熬夜哦

程序员必须知道的几个Git代码托管平台

说到Git代码托管平台,首先推荐的是GitHub,好多好的开源项目都来自GitHub,但是GitHub只能新建公开的Git仓库,私有 仓库要收费,如果你做的是一个开源项目,可以首选GitHub.下面推荐几个比较好的Git代码托管平台,这里我不做过多的说明和评价,也好让大家多看 看,比较一下,找到自己的"真爱". 1.GitHub 关于GItHub相信大家都有耳闻,我就不详细介绍了.GitHub地址:https://github.com/,其首页如图: 2.Gitlab 对于有些人,提到

告诉你一段程序员哄女盆友开心的代码。

废话不多说,直接上代码 demo <!DOCTYPE html><html lang="zh-CN"><head> <meta charset="UTF-8"> <title>Title</title></head><body><script> var n=prompt("请输入n"); if(n=="gfname"){

【转】程序员必须知道的几个Git代码托管平台

 一.VS2013中克隆远程Git仓库和SSH的配置 1.VS2013中克隆远程项目  首先感谢园友的评论和补充,今日又仔细看了一下,VS2013中是可以克隆项目的,只是我一直用的GitHub来克隆的,所以没有注意到.我们打开VS2013,切换到团队资源管理器,如图: 点击连接到团队项目...,会看到如下图界面: 点击克隆,输入远程Git地址,然后点击克隆按钮,就会将远程仓库的项目克隆到本地,路径为下面文本框中的地址,我们也可以点击后面的...按钮进行修改或者手动输入. 2.SSH的配置 如果安