那些非程序员认为软件开发是很是困难的,确实如此,但这种困难不像那些外行人理解的那样。最近在 Quora 上的一次讨论,程序员分享了他们认为工做中的最大困难,在这里为你们呈现出其中的 9 个。你能够看到,写代码并非最难的事情,若是你也在从事软件开发,看看哪些内容你认为也是很难的。程序员
任务描述:给你一系列的需求,你被要求设计和构造技术上的解决方案。这包括了设计数据结构,算法,逻辑上的封装等等,还要考虑到用户安全方面的因素。算法
挑战:确保你的设计能够知足客户需求,让客户认为合理。固然还要在项目时间容许范围内。数据库
任务描述:写单元测试,确保代码中每个小部分的功能正确。这样作可让你尽早发现 bug,让你后续的回归测试变得更容易。一些开发的方法论甚至鼓励开发者在编写程序以前就能够写好测试程序。安全
挑战:为每一部分进行测试是一件很枯燥乏味的事情,让人感受是在作多余的事情。数据结构
任务描述:撰写文档,说明你代码的含义并解释应用的工做原理。这包括了独立的文档文件和代码注释,让更多的人理解你的代码。函数
挑战:这是一件耗时的工做,若是没有人去读它们的话就是纯属浪费时间了。相比于写文档,程序员仍是更爱写程序。单元测试
任务描述:有时候你会不得不去实现一些功能和特征,它们不是你的本意,你以为它们不该该出如今这个项目里,可是客户必定要坚持如此。测试
挑战:你须要抛开一切我的的感受和意见,把时间和精力专一于客户提出的功能需求。设计
任务描述:有时候你须要维护和调试其余程序员的程序,或一部分代码。调试
挑战:你须要用尽一切办法理解前任开发者的意图,他是如何设计的这些代码。特别是当这些代码写得不好,也没有注释和文档能够帮助到你时,那就很糟糕了。
任务描述:做为开发者,你要从客户那里获得需求,向经理提交报告,和测试人员一块儿工做,更要和其余工程师讨论项目。
挑战:你须要向外行人解释技术上的事情,有时候你的工做会依赖于他人的承认或辅助。期间也会出现你和 QA 人员或其余工程师有不一样意见的时候。
任务描述:项目一开始的时候,你要预估这个项目的完成须要多长时间。
挑战:通常状况下你要预估的是一个你以前没有作过的项目,并且你只能基于那些模糊的需求,再给将来可能发生的问题分配些时间。
任务描述:向周围的非程序员朋友,家人,同窗解释你的工做是在作什么,不作什么。
挑战:你爱的那些人可能不理解你在作什么,并且你还不断的被问及计算机相关的一切问题。
任务描述:想出一些名字,为你程序中的变量、过程、函数、类、对象、数据库等命名。
挑战:即便是很小的程序或应用都须要给不少东西命名,你要想出那些适合的,简洁的,能够表达正确含义的一些名字。
via:程序师