[导读] 软件开发中最大的难题不是编写程序,写代码只是按照逻辑去实现功能,这相对于开发者需要做的其他事情来说简单直接多了。如果你还是一个不算资深的业余程序员,那你一定要在真正的走向职业道路前确保可以解决下面这些障碍。

软件开发中最大的难题不是编写程序,写代码只是按照逻辑去实现功能,这相对于开发者需要做的其他事情来说简单直接多了。如果你还是一个不算资深的业余程序员,那你一定要在真正的走向职业道路前确保可以解决下面这些障碍。

1.向外行解释你在做什么

向外行解释软件开发的过程是极其困难的。虽然很多人知道编程,但他们终究是不会写程序的人,在他们看来,程序员的生活就是整天在一间小黑屋里趴在键盘前,消耗着很多咖啡。你会从你的朋友,亲人,同事嘴中听到这些话,他们认为这不是一个恰当的职业。

2.形象的说出解决方案

你会经常接到一些简洁的,但通常表意不明的需求。比如现在有一个商业方面问题的需求,你就要根据它来设计数据结构,程序架构,算法,接口和一些其他 技术层面的东西来构造这个问题的解决方案。关键的是,你要用大家都可以理解的语言,并在有限的时间内把解决方案讲给客户,但事实是很多开发者都做不好这件事情。

3.评估工期

这恐怕是很多程序员的痛苦之源。对于程序员来说,去评估一项从未做过的项目所需要花费的时间是极其困难的。你可能写过相似的代码,但现在的环境,问 题和限制条件都发生了变化。虽然经验会有一些帮助,但大多数程序员还是低估了问题的难度,通常因为程序员只考虑了编程方面的问题,而忽略了其他相关的事 情。

4.借鉴他人的代码

有很多种方法可以得出解决方案,但是借鉴他人的代码,在这个基础上编程需要花很多精力和时间,因为你要去思考他们是如何构思的。而且,如果这些半成品的程序还没有留下注释和文档记录,你就会更困难了。

5.面对项目需求的渐变和奇异的功能

虽然敏捷开发在一定程度上允许了需求的渐变,但并不意味着需求变化是一件好事,如果再加上一些客户由于一时冲动提出的奇怪需求,你就更苦恼了。你知道这样做一定会失败,你的团队也知道,但这是客户的要求,而且错误的发生也是你的责任,因为你没有站在他们的角度看问题。

6.在缺乏优化和过度优化间找到平衡点

复杂的软件永远做不到绝对的完美,因为总有更优的方法去完善它。你可以无限制的不断优化你的代码,这也就是为什么项目不会提前完成。而另一方面,你 有时也会有“这样就行了,我以后再去优化它”的想法。这样的程序目前可以正常运行,但明天可能就会出现错误。当然了,你也可以不用管它,等着下一个用它的 程序员去优化。

7.测试

你也许自己进行了单元测试,也把软件交付给了测试组,但bug依然存在。原因如下:

软件通常是复杂的,包含了成千上万行代码,其中有数不清的交互接口和路径,把这些全都测试到是很困难的;

类似的,你的软件会在不同的环境下和不同的软件交互,所以也不可能测试到每一种可能性;

写好一个完善的单元测试是一项枯燥且困难的工作,理想情况下,测试程序的编写应该在软件开发前就进行,但是你要向你的客户解释清楚为什么一个月过去了却还是没有可用的软件;

单元测试不会发现所有的问题。理想条件下,一个项目应该有一个单独的测试团队,他们可以积极主动的,尽可能的去找程序中的问题,但这对大多数项目来说是一件需要很大花销并耗时的事情,所以就让开发人员同时负责测试的任务。但是,这样的测试是考虑不到很多边界和极端情况的;

程序员通常是在用理性的逻辑处理问题,但是客户通常不这样,他们会发现很多你意料之外的问题。

8.写开发文档

给项目写文档记录是一件费力耗时的工作, 几乎没有开发者喜欢或擅长它,不愿意花时间阅读它们。

9.处理各种IT问题

你每天都和技术打交道,你也许是一个HTML或PHP程序员,但你可能还要解决一些其他问题,比如硬盘损坏,驱动冲突或软件报错。这些虽然都不是你 的主要工作,但如果你不去解决这些问题,你就不能继续你的开发任务。不幸的是,在那些非IT领域的人的眼里,你什么都知道。当他们遇到IT方面的问题时, 他们不会花时间自己解决,而是去寻求你的帮助,而且不管什么问题,因为你是搞计算机的,比如如何将工资单导入Sage,如何配置Oracle,或者为什么 他们的蓝莓手机发送邮件失败。也许,这些干扰不会影响到你的日常工作,但真的不会吗?

10.与他人打交道

这些问题都可以归结为“与人打交道”的问题。没有外行人会指导飞行员如何开飞机,或给电工如何布线提建议,但是他们很愿意给软件开发“勇敢”地提出建议。现在可能还没有办法避免这样的事情发生,你只能接受这样的事实:世界上有一半人的智力是低于平均水平的!

软件开发中的十大困难相关推荐

  1. 软件开发管理的十大工作任务(FROM 栾跃)

    1. 决定项目的启动 (Project Initiation) - 确定软件的目标:使用项目管理的范围管理中判断项目启动的指南来帮助判断和决定某个软件开发的项目是否需要进行.简言之,在明确了要开发的软 ...

  2. 项目难做,程序员难当,软件开发中的 9 大难题

    是什么让项目变糟?何时起我们下班回家时开始盘算:"见鬼,我得离开"?下面是我们程序员不时要面对的一个问题清单,这些问题让我们筋疲力尽.而通常我们又躲不掉,不得不设法去应付. 01 ...

  3. 2018年最好的软件开发、云计算、大数据分析和机器学习工具

    InfoWorld编辑和评论家评选出今年最好的软件开发,云计算,大数据分析和机器学习工具. 欢迎来到InfoWorld的年度技术奖,这是我们对信息技术领域中最好,最具创新性,最重要的产品的年度庆典. ...

  4. 软件开发中如何理解人机料法环

    黑色部分是百度百科定义,红色部分是个人理解. 人机料法环 人机料法环是对全面质量管理理论中的五个影响产品质量的主要因素的简称.人,指制造产品的人员:机,制造产品所用的设备:料,指制造产品所使用的原材料 ...

  5. 阿里研究员:缩短软件开发中的反馈弧

    简介:开发者写好了某个功能的代码,想知道这个功能是不是实现了,代码还需不需要再改,这就是一种反馈.在软件开发中,尤其是联调时,缩短反馈弧有助于及时发现问题.采取对策,提高开发效率.那么什么样的反馈弧才 ...

  6. 高级Java开发人员的十大书籍

    高级Java开发人员的十大书籍 Java是当今最流行的编程语言之一.有很多适合初学者的书籍.但对于那些使用Java编程一段时间的人来说,其中一些可能看起来多余.然而,高级Java书籍并不总是在眼前,不 ...

  7. 必读!Java开发人员的十大戒律

    以下是笔者列举的Java开发人员的十大戒律: 一. 在你的代码里加入注释 每个人都知道这点,但不知何故忘记了遵守.算一算有多少次你"忘记"了添加注释?这是事实:注释对程序在功能上没 ...

  8. 软件开发中的10个认知偏差

    最近,在和同事们讨论产品经理职责的时候,聊到了关于产品的定义,如果不能准确定义"产品"的时候,可以考虑其必要条件,即可没有用户的产品肯定是没有意义的.产品有了用户, 必然存在用户与 ...

  9. 软件开发中会使用到的图

    文章目录 软件开发中会用到的图 一.背景 二.图为了解决什么问题 三.不同流程中适合运用的图 四.实际的运用 五.结语 软件工程中的各种图 软件工程用的15种图 数据关系流图怎么画?这款软件教你轻松绘 ...

  10. 我的软件开发中经验教训

    作者:追梦1819 原文:https://blog.csdn.net/weixin_39759846/article/details/116780540 版权声明:本文为博主原创文章,转载请附上博文链 ...

最新文章

  1. 分布式文件系统研究-测试-文件下载测试
  2. 栈、队列 java代码实现
  3. 一些常见的光学标定板模式
  4. ASP基础教程:数据库查询语言(2)
  5. HelloDjango 第 06 篇:博客从“裸奔”到“有皮肤”
  6. python中shuffle是什么意思_选择vs.Shuffle,Python
  7. SpringBoot安装CLI(mac)
  8. clion小白使用技巧(持续更新中)
  9. 前后端api参考手册
  10. ubuntu 查看和关闭后台程序
  11. html网页两边有空隙,怎么让整个内容缩进?就是四周都有间隙。
  12. 如何正确选择注塑模具浇口位置?这下真的懂了
  13. 游记-NOI2019(hzy的退役日志)
  14. 解决华为手机InputMethodManager和GestureBoostManager的内存泄露的问题
  15. MATLAB-004 excel重命名默认sheet
  16. 建筑卫生陶瓷行业中国驰名商标新增10件
  17. 101 个 MySQL 的调节和优化的提示(转osc)
  18. pycharm导入第三方库的两种方法(永不报错)
  19. 谁的数据在说谎:天翼云71亿、浪潮云估值100亿、金山云亏了27亿?
  20. 基于APE物理引擎的管线容积率计算方法

热门文章

  1. 投资理财-基金基本术语概念整理
  2. YS13-3荧光管时钟设计
  3. 半闲居士视觉SLAM十四讲笔记(3)三维空间刚体运动 - part 3 旋转向量、欧拉角、四元数
  4. Ubuntu下查看文件、文件夹和磁盘空间的大小
  5. CSS基础--absolute与overflow
  6. 流媒体网络性能指标——抖动
  7. 从0到1-强化学习篇
  8. mysql 1114错误_mysql – ERROR 1114(HY000):表’XXX’已满
  9. 《单片机原理及应用(魏洪磊)》第七章第10题
  10. 技术人如何才能做好绩效管理提升团队绩效?