关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » 程序人生 »程序员需要克服的10大障碍

    程序员需要克服的10大障碍

    2014-10-19 00:00:00 出处:吴止介 - 知乎
    分享

    软件开发中最艰巨的任务其实并不是代码。写代码是一种锻炼,一种逻辑思维上的锻炼,相比于开发人员在日常工作中要执行的其他任务,它可显得可爱多了。要是你觉得自己才刚刚跨入这个行业,只能算个业余程序员,那么为了确保能跻身专业领域,有些障碍你必须得克服……

    1.解释做了什么

    解释软件开发过程是很让人崩溃的一件事。那些不会写代码的家伙可能在这一行有所了解,但是正如定义所说的,他们不会写代码。在他们眼中,我们就是一群待在昏暗的房间中弓着背噼里啪啦敲键盘的程序猿。

    搞不好你的朋友家人还有同事,甚至有可能会有编码“不是正当职业”的想法呢,呵呵。

    2.可视化解决方案

    假设给定一组简单的——难听点说就是考虑不周的——需求,你需要制定数据存储库、代码结构、算法、通信协议,以及只要能解决业务问题就得去完成的各种技术内容。然后,还需要用一种通俗易懂,哪怕是外行人也能明白的方式解释出来,并在规定期限内交付给客户。

    很少有开发人员能真正做好这一点。

    3.预估交付时间

    这是每个开发人员的噩梦。试想一下,以前一点也没有接触过的任务,突然要你确定完成它所需要的时间,是不是有点天方夜谭呢?可能曾经也写过类似的代码,但是却并不是在有着相同问题和限制的同一个系统中,好吧!

    这个时候,那真的只能靠经验了。但是大多数程序员会低估时间,原因可能是因为他们只考虑了编码这部分而忽略了其他。

    4.借鉴别人的代码

    条条大路通罗马,解决方案也是。借鉴别人的代码可能意味着要花上很多时间去研究上千行代码以了解整个的思路。而且,要是恰巧原先的开发人员一点也不留注释和文档的话——甚至只是个半途而废的半成品项目——那就更加令人头大了!

    5.范围蠕变和你自认为神奇的功能

    敏捷开发会造成范围蠕变,这让人既沮丧又无奈——特别是当你突然心血来潮要加点什么愚不可及的功能的话,更甚。结果如何你自己心知肚明,你的团队也明白失败没商量。但是客户其实知道得更清楚,所以要是失败不可避免地降临时,那么就全都是你的责任,因为你居然不相信客户的眼光。

    6.优化不足和过度优化之间的平衡

    复杂的软件永远达不到完美的境界。我们不可能无限制地优化,这也是为什么软件项目从不在规定日期到来之前发布的原因。

    另一方面,很多人都会抱有“先就这样吧——以后再来改进”的心态。现在这些代码是可以好好工作,但是这些人也明白这会成为明日的烦恼和失败。当然,你不会再来修复和调试了,它们会被留给下一个可怜的开发人员。

    7.测试代码

    既可以自己编写单元测试,也可以组团通过软件来测试,不过不要妄想能发现所有bug……

    复杂的软件可能会包含成千上万行代码。系统可能有着数十亿种可能的相互作用和路径,想要全部测试是不可能的。 同样的,一个软件在不同的条件下,不同的系统里碰到的软件不同,其交互的结果也不尽相同。我们没办法测试所有可能的情况。 想要编写出好的单元测试是一件既繁琐又艰难的工作。在理想情况下,测试应该在软件开发项目开工之前就写好——但是要是我们先写这个的话,我们怎么向客户解释四个星期过去了为什么一点进程都没有? 单元测试不会突出显示每一个bug。虽然我们都希望能有一个专门的小组来编写测试然后积极去发现问题,但是由于现实条件的限制——成本控制和时间限制,这对于很多项目而言都是奢望,所以大都需要开发团队自己来编写测试。而他们在编写时总是会无意识地避免任何不妥当的边界情况。 程序员会用一种逻辑方式去解决问题,但是用户很少会这样做;所以有时候用户会帮我们找到一些我们自己察觉不出来或者根本想不到的问题。

    8.写代码文档

    写文档的确是费时又费力。很少有开发人员擅长并愿意花时间去写/阅读文档。

    9.处理硬件问题

    我们每天都需要处理各种技术问题,例如硬盘崩溃、驱动冲突、软件故障等等。虽然这并非是我们软件开发人员的工作,但是要是不解决这些的话,我们是没法继续工作的。

    可是很多人却会莫名其妙地认为,搞IT的就应该懂所有关于电脑的东西。当他们碰到问题,他们第一时间想的就是联系我们来解决,而且不管什么问题都这样,真心是让人无语又崩溃。

    当然这些中断时间不应该对交付进度产生影响或者增加成本,但是这可能吗?

    10.和人打交道

    上述任务通通可以总结为“如何与人打交道”。令人奇怪的是,非专业人士不会去指点飞行员应该如何驾驶飞机,也不会跑去和电工说我的房子需要重新布线等等,但是他们却非常喜欢在软件开发上面指手画脚,提供各种异想天开的点子。

    关于这一点,我还真提不出什么好的解决方法,所以,唉,各位,我们还是接受有一半的地球人他们的IQ低于平均值的事实吧!

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    67款移动应用存在违法违规收集使用个人信息情况

    高通、联发科、汇顶科技等“芯”助力,vivo X200 Ultra及X200s发布

    微软CTO凯文·斯科特:未来AI行业将涌现大量专业智能体

    《中国AIGC产业峰会——万物皆可AI》在北京圆满落幕

    威联通科技推出 16 颗硬盘 SAS 双主动控制器 ES1686dc R2 3U 机架式 NAS,具备 HA 及最佳存储效率

    当漏洞攻击遇上腾讯混元超能力:EdgeOne的Web安全赛博决斗

    上海外骨骼机器人亮相消博会,万元起售引关注,加速研发个人版

    深耕智能文档处理领域,合合信息《智能文档技术与应用白皮书》正式发布

    RootPhone:开启RWA代币化时代的Web3智能终端革命

    华为Mate 80系列全曝光:将出厂预装原生鸿蒙操作系统

    IT头条

    平替CUDA!摩尔线程发布MUSA 4性能分析工具

    00:43

    三起案件揭开侵犯个人信息犯罪的黑灰产业链

    13:59

    百度三年开放2.1万实习岗,全力培育AI领域未来领袖

    00:36

    工信部:一季度,电信业务总量同比增长7.7%,业务收入累计完成4469亿元

    23:42

    Gartner:2024年全球半导体营收6559亿美元,AI助力英伟达首登榜首

    18:04

    技术分享

    iOS 8 中如何集成 Touch ID 功能

    windows7系统中鼠标滑轮键(中键)的快捷应用

    MySQL数据库的23个特别注意的安全事项

    Kruskal 最小生成树算法

    Ubuntu 14.10上安装新的字体图文教程

    Ubuntu14更新后无法进入系统卡在光标界面解怎么办?

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。