英文原文:Arg! The 9 hardest things programmers have to do

  那些非程序员认为软件开发是非常困难的,确实如此,但这种困难不像那些外行人理解的那样。最近在 Quora 上的一次讨论,程序员分享了他们认为工作中的最大困难,在这里为大家呈现出其中的 9 个。你可以看到,写代码并不是最难的事情,如果你也在从事软件开发,看看哪些内容你认为也是很难的。

  1.  设计解决方案

  任务描述:给你一系列的需求,你被要求设计和构造技术上的解决方案。这包括了设计数据结构,算法,逻辑上的封装等等,还要考虑到用户安全方面的因素。

  挑战:确保你的设计可以满足客户需求,让客户认为合理。当然还要在项目时间允许范围内。

  2.  写测试

  任务描述:写单元测试,确保代码中每一个小部分的功能正确。这样做可以让你尽早发现 bug,让你后续的回归测试变得更容易。一些开发的方法论甚至鼓励开发者在编写程序之前就可以写好测试程序。

  挑战:为每一部分进行测试是一件很枯燥乏味的事情,让人感觉是在做多余的事情。

  3.  编写文档

  任务描述:撰写文档,说明你代码的含义并解释应用的工作原理。这包括了独立的文档文件和代码注释,让更多的人理解你的代码。

  挑战:这是一件耗时的工作,如果没有人去读它们的话就是纯属浪费时间了。相比于写文档,程序员还是更爱写程序。

  4.  实现那些你不认可的功能

  任务描述:有时候你会不得不去实现一些功能和特征,它们不是你的本意,你觉得它们不应该出现在这个项目里,但是客户一定要坚持如此。

  挑战:你需要抛开一切个人的感觉和意见,把时间和精力专注于客户提出的功能需求。

  5.  维护他人的代码

  任务描述:有时候你需要维护和调试其他程序员的程序,或一部分代码。

  挑战:你需要用尽一切办法理解前任开发者的意图,他是如何设计的这些代码。特别是当这些代码写得很差,也没有注释和文档可以帮助到你时,那就很糟糕了。

  6.  与他人打交道

  任务描述:作为开发者,你要从客户那里得到需求,向经理提交报告,和测试人员一起工作,更要和其他工程师讨论项目。

  挑战:你需要向外行人解释技术上的事情,有时候你的工作会依赖于他人的认可或辅助。期间也会出现你和 QA 人员或其他工程师有不同意见的时候。

  7.  预估项目工期

  任务描述:项目一开始的时候,你要预估这个项目的完成需要多长时间。

  挑战:一般情况下你要预估的是一个你之前没有做过的项目,而且你只能基于那些模糊的需求,再给未来可能发生的问题分配些时间。

  8.  解释我的工作

  任务描述:向周围的非程序员朋友,家人,同学解释你的工作是在做什么,不做什么。

  挑战:你爱的那些人可能不理解你在做什么,而且你还不断的被问及计算机相关的一切问题。

  9.  程序中的命名

  任务描述:想出一些名字,为你程序中的变量、过程、函数、类、对象、数据库等命名。

  挑战:即使是很小的程序或应用都需要给很多东西命名,你要想出那些适合的,简洁的,可以表达正确含义的一些名字。

  译文:http://www.php100.com/html/it/focus/2014/1126/7908.html

http://news.cnblogs.com/n/509533/

转载于:https://www.cnblogs.com/softidea/p/4126208.html

细数被程序员吐糟的9大困难(转)相关推荐

  1. 程序员经常遇见的9大困难你造么?

    那些非程序员认为软件开发是非常困难的,确实如此,但这种困难不像那些外行人理解的那样.最近的一次讨论,程序员分享了他们认为工作中的最大困难,架构师米洛就在这里为大家呈现出其中的9个.你可以看到,写代码并 ...

  2. Java程序员必备的10个大数据框架

    当今IT开发人员面对的最大挑战就是复杂性,硬件越来越复杂,OS越来越复杂,编程语言和API越来越复杂,我们构建的应用也越来越复杂.根据外媒的一项调查报告,小千列出了Java程序员在过去12个月内一直使 ...

  3. 原创 | 2020年Java程序员应该学习的10大技术

    对于Java开发人员来说,最近几年的时间中,Java生态诞生了很多东西.每6个月更新一次Java版本,以及发布很多流行的框架,如Spring 5.Spring Security 5和Spring Bo ...

  4. 为什么程序员的脾气都很大_脾气暴躁的程序员的测试包:评论

    为什么程序员的脾气都很大 After having gotten some constructive feedback regarding my testing practices on the ba ...

  5. 2020年Java程序员不得不学习的10大技术

    对于Java开发人员来说,最近几年的时间中,Java生态诞生了很多东西.每6个月更新一次Java版本,以及发布很多流行的框架,如Spring 5.Spring Security 5和Spring Bo ...

  6. python免费开源工具推荐_年薪200万的程序员,推荐这10大Python免费开源工具!

    原标题:年薪200万的程序员,推荐这10大Python免费开源工具! 毫无疑问,Python是最流行的语言之一,其成功的原因之一是它为科学计算提供了广泛的报道. 在这里,我们仔细研究用于机器学习和数据 ...

  7. 2020年Java程序员应该学习的10大技术

    对于Java开发人员来说,最近几年的时间中,Java生态诞生了很多东西.每6个月更新一次Java版本,以及发布很多流行的框架,如Spring 5.Spring Security 5和Spring Bo ...

  8. 关于PHP程序员技术职业生涯规划--swool大神韩天峰

    关于PHP程序员技术职业生涯规划–swool大神韩天峰 看到很多PHP程序员职业规划的文章,都是直接上来就提Linux.PHP.MySQL.Nginx.Redis.Memcache.jQuery这些, ...

  9. 程序员和黑客的十大本质区别

    最近小编的大学室友老是给小编抱怨一些工作的事情,想让我帮他黑一个上司的电脑,把他的电脑数据缓存清除一下,满足一下他的报复心,我只能呵呵一笑,无奈的摊摊手.其实这也不是第一次身边的人请自己帮忙黑别人电脑 ...

最新文章

  1. SpringBoot+MDC实现全链路调用日志跟踪,这才叫优雅!
  2. Oracle RAC错误之--oifcfg错误案例
  3. 使用Codeception进行Yii2的单元测试(一)安装以及简介篇
  4. 如果检测指定的Windows服务是否启动
  5. SUN dataset图像数据集下载
  6. uniapp H5页面嵌入微信小程序 ios 下 video组件 播放视频 设置 border-radius overflow:hidden 不生效
  7. mysql查看系统可用字符集_MySQL查看所有可用的字符集
  8. sed 第n行后加入_【高新课堂】第一百三十九期Liunx运维17个实用技巧
  9. mybatis plus使用in查询
  10. 重置系统_WIN10系统如何创建密码重置盘
  11. Java数组排序的方法
  12. DSP2812 RAM不够用的解决方法【转载】
  13. Unity工具——SVN工具
  14. 如何在HTML中更改文本颜色?
  15. 测试内存条是否兼容软件,18款内存条兼容性测试
  16. helm install Error: timed out waiting for the condition
  17. 动软多数据库链接类实例
  18. 思科交换机配置:三层交换机技术
  19. 博主熬夜手写个SpringMVC框架
  20. 华为机试python3题解(17题 持续更新ing)

热门文章

  1. Linux内核同步方法(一)
  2. HttpComponents之httpclient基本使用方法
  3. DOS下文件操作命令
  4. DebugDiag调试工具
  5. java 二分查找算法
  6. 直接拿来用!超实用的Java数组技巧攻略
  7. SQL PASS西雅图之行——会议篇
  8. android监听自身被卸载的方法
  9. 数组多重筛选条件排序方法
  10. Hibernate使用createSqlQuery进行模糊查询时找不到数据