最挑战程序员的9大任务,你都干过吗?

2023-11-02

  那些非程序员认为软件开发是非常困难的,确实如此,但这种困难不像那些外行人理解的那样。

  最近在 Quora 上的一次讨论,程序员分享了他们认为工作中的最大困难,在这里为大家精选出其中的 9 个。

  1.怎样才是最佳解决方案

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

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

  2.写测试

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

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

  3.编写文档

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

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

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

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

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

  5.维护他人的代码

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

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

  6.与他人打交道

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

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

  7.预估项目工期

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

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

  8.解释我的工作

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

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

  9.程序中的命名

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

最挑战程序员的9大任务,你都干过吗? 的相关文章

  • 嵌入式开发(S5PV210)——u-boot中如何确定启动方式

    1 嵌入式设备确认启动方式 设备确认启动方式分为硬件方式和软件方式 硬件方式是通过芯片某几个引脚的高低电平来决定启动方式 软件方式就是通过代码设置来决定启动方式 1 硬件方式 比如S5PV210芯片 通过拨码开关去设置芯片引脚的高低电平来设
  • 正则表达式判断字符串是否包含中文

    正则表达式通常被用来检索 替换那些符合某个模式 规则 的文本 Regex regex new Regex u4e00 u9fa5 string str 48445helloWorld regex IsMatch str ToString b

随机推荐

  • windows上的neo4j 数据迁移

    需求 把windowsA上的neo4j中graph库相关数据 同步到 windowsB上的neo4j 上 解答 步骤如下 1 首先把windowsA windowsB上的neo4j服务停掉 2 进入windowsA上的neo4j的data目
  • Python生成器generator之next和send运行流程

    http blog csdn net pfm685757 article details 49924099 运行流程 yield from iterable本质上等于for item in iterable yield item的缩写版 转
  • 安装visio64位,无法安装,需要卸载32位问题

    最近买了新电脑 在准备安装visio的时候出现了这个问题 只需要下载一个注册表自动清理器 链接 https pan baidu com s 1eNit u1dLAYC3BBL9u1auA 提取码 kho7 下载后直接打开 点击 一键解决此问
  • 创建docker容器时设置hosts内容

    方式1 在使用docker run运行一个新的容器的时候 通过参数 add host来添加域名和IP信息到容器的 etc hosts文件中 例如 docker run add host hostname 111 111 111 1 name
  • 在Mac OS中配置CMake的详细图文教程

    CMake是一个比make更高级的跨平台的安装 编译 配置工具 可以用简单的语句来描述所有平台的安装 编译过程 并根据不同平台 不同的编译器 生成相应的Makefile或者project文件 本文主要介绍在Mac OSX上安装配置CMake
  • 在html中如何使div在页面中居中显示

    在html中如何使div在页面中居中显示 最近无聊中又再温习了下html 发现好多东西都忘了 尝试着写了一个html网页 结果就连div如何在页面中居中显示都查了好久才弄出来 其实我不知道为什么这样可以实现 因为css还没仔细研究过 等我参
  • watermark前端js盲水印添加方法

    1 引入js 2 实例化对象
  • java获取一个文件的md5码

    什么是文件的MD5码 MD5信息摘要算法 英语 MD5 Message Digest Algorithm 一种被广泛使用的密码散列函数 可以产生出一个128位 16字节 的散列值 hash value 用于确保信息传输完整一致 每个文件对应
  • [知识蒸馏]

    知识蒸馏目的 需要关注的是上图的 attention transfer channel wise knowledge distillation for dense prediction ppt来源于 精读AI论文 知识蒸馏 哔哩哔哩 bil
  • 在计算机中安装Arch Linux

    Arch Linux是一个优秀的linux操作系统 其优点是滚动发行 软件包比较新 并且可以深度可定制 缺点是由于深度可定制 所以开始安装的时候只有命令行可用 对于linux新手来说会有一些难度 我也是练习安装了好多次 才逐渐从安装过程中学
  • Java比较器(Comparator接口)

    Comparator接口的使用 定制排序 1 当元素的类型没有实现java lang Comparable接口而又不方便修改代码 或者实现了java lang Comparable接口的排序规则不适合当前的操作 那么可以考虑使用 Compa
  • go语言中的读写锁以及协程通信

    0 需求分析 在一个读操作远大于写操作的时候 用读写锁 读写锁与互斥锁的运行时长相比 两个goroutine间的通信 写goroutine写完以后通过channel发一个消息给读goroutine 读goroutine收到以后开启200个并
  • Anaconda常用操作(亲测有效果)

    文章目录 Anaconda简绍 一 Anaconda下载安装 二 常用命令 1 创建自己的虚拟环境 2 查看所有的环境 3 切换环境 4 退出环境 5 卸载环境 总结 Anaconda简绍 Conda是一个开源的包 环境管理器 可以用于在同
  • CentOS下安装AMP

    1 安装mysql shell gt groupadd mysql shell gt useradd g mysql mysql shell gt tar zxvf mysql tar gz shell gt cd mysql VERSIO
  • GD32F4xx适配OpenHarmony问题踩坑记录

    1 时钟配置导致的串口乱码 现象描述 最新在适配GD32产品时 发现使用外部晶振时调试串口输出内容会出现乱码 使用内部晶振则不会出现这个问题 配置如下所示 后来研究了半天 发现GD32除了配置system gd32f4xx h中的时钟倍频宏
  • (已实测解决)Intel Optane(tm) Memory Pinning 无法加载DLLiaStorAfsServiceApi.dll:找不到指定模块。是怎么回事如何解决

    Intel Optane Memory Pinning 无法加载DLL iaStorAfsServiceApi dll 找不到指定模块 异常来自HRESULT 0x8007007E 更新windows10后 发现打开文件夹时总是弹出一个窗口
  • explicit和QObject的禁止拷贝

    常用的mainwindow h中对构造函数是这样声明的 explicit MainWindow QWidget parent 0 为什么有个explicit 其实是为了禁止构造函数的隐式转换 构造函数如果只有一个参数 那么存在一个隐式转换
  • 深度解析“区块链+物联网”与新基建

    根据国家发改委对 新基建 的界定 区块链属于新技术基础设施 物联网属于通信网络基础设施 同属于 新基建 的代表 区块链与物联网之间可能擦出什么样的火花 需要哪些软硬件支持 这是本文要讨论的问题 区块链 物联网 的核心问题 区块链兼有信息互联
  • 165. 比较版本号

    165 比较版本号 题目描述 给你两个版本号 version1 和 version2 请你比较它们 版本号由一个或多个修订号组成 各修订号由一个 连接 每个修订号由 多位数字 组成 可能包含 前导零 每个版本号至少包含一个字符 修订号从左到
  • 最挑战程序员的9大任务,你都干过吗?

    那些非程序员认为软件开发是非常困难的 确实如此 但这种困难不像那些外行人理解的那样 最近在 Quora 上的一次讨论 程序员分享了他们认为工作中的最大困难 在这里为大家精选出其中的 9 个 1 怎样才是最佳解决方案 任务描述 给你一系列的需