日常工作中程序员最讨厌哪些工作事项?

日常工作中程序员最讨厌哪些工作事项?

任何工作都有好和坏的一面,每个领域和职业都有它的优点和缺点,大多数时候人们只谈论优点而忽视了缺点,有时候缺点都超过其优点。

软件开发作为一个职业在过去几年里呈现出爆发式发展,随着入门培训的普及和持续的跨行业渗透,现在确实是成为开发者的好时机。然而,在软件工程光鲜亮丽的背后有着不那么迷人的一面。如果你想像我一样进入软件开发行业,那么在投入大量时间、精力和金钱之前了解一些残酷的真相。

任何工作都有好和坏的一面,但是我想说的是如果你有70%以上的时间在享受你的工作,那么你就算有了一份很棒的工作。就我个人而言,我很喜欢开发工作,但我还是要指出那30%令人生厌的部分,那些反复出现的问题真的很让人崩溃。

随着时间的推移任何工作都会暴露出很多问题,但在软件开发领域有某些问题却总是在我的职业生涯里反复出现。接下来谈谈作为开发者最讨厌的5件事:

一、调试那些不在你掌控中的代码问题

找bug,bug隐藏于某一行代码中的某个逻辑,如跳过了一个步骤或者调错了一个方法。在所有类型的bug中,这种能通过上下文调试定位到具体位置的bug算是最好修复的,因为我们能找到他并且进行修复。然而那些从第三方库里引入的bug呢?

作为开发者调试那些你无法轻松访问的代码才是更具挑战和令人崩溃的。也许这是一个你亲手引入的库,但是由于库已经被压缩或者编译使得可读性极差。那么假如这个库是开源的,是否就值得庆幸呢?并非总是如此,而且开源库的bug往往是最难处理的。你需要花费额外的时间设计环境来隔离并单独复现这个bug,这样你才能将问题发送给开源库的所有者,并寄望于他们能够按照你的时间表进行修复。

许多团队都不得不面对这些问题,可以通过选择开源项目或者本土解决方案来缓解,但如果没有选择你只能硬着头皮上。

、维护一个没有任何资料的旧项目

假设你是一个训练有素、经验丰富的生存专家,决定参加一档类似荒野独居的真人秀节目。你已经在这个领域投入了数千小时,是此类工作的专家拥有许多成功经历。与以往不同的是这个赛季你将被随机选中并且被投放到一个你完全不了解的环境。按照经验要成功存活下来需要知道你要去的地点,那里是什么样的或许还有一些成功的方法;你需要知道为什么要带某些物品,它们如何使用,也许还要向一些有经验的伙伴取取经;你需要知道什么方法是有效的,什么是无效的,也许还有一些独一无二的交易技巧。但是,这次不一样,你无从了解上述信息,这将最大程度地挑战你的技能极限。

作为一名开发者接手一个新项目没有任何背景资料,没有任何可以提问的同事就与上面的荒野独居升级版非常相似。软件开发的问题在于解决问题的路径是多样的,人们之所以选择这套方案的原因是系统性的且经过深入探讨的。在一个没有任何背景资料或者求助人的项目中,你可能会遇到许多看似奇怪的设计,并且很难理解为何要这样设计。是因为开发者偷懒吗?还是为了赶工期而做的一种变通?或者是因为外部约束条件迫使这样设计和编码?不可能知道了,一切都像浮云一样飘散了。尽管如此作为开发者你想取得成绩就需要知道如何在这种情况下完成任务。

不幸的是这种项目会使许多开发者无所适从滋生厌恶情绪,这种项目起步缓慢就像是在盲目地探索雷区。这就是为什么风格良好的代码和及时更新的文档如此重要的原因。如果你正在阅读本文不管你已经是开发者还是即将成为开发者,请尽量在你的代码中做好文档说明特别是那些奇特的逻辑,这样当下一个人接手时不管你还能不能提供解答他都会更容易理解一些。

三、不懂的人瞎指挥

软件团队的主要成员包括软件开发者、项目经理和产品负责人,有时候项目经理和产品负责人是同一个人,所以说到底总要有两类人一类负责编码实现一类负责构思他们想要的产品。在大多数情况下,后者会召集利益相关者开会、制定时间计划表并将产品卖给其他人。

这两类人之间的关系对于项目的成功至关重要,有时开发者在团队中干得开心也很重要。大多数时候,开发者被视为"码农",需求不加思索地推给他们,没有过多的讨论,有时还有不切实际的deadline。这些将导致产品匆忙上线,无法达成预期,最终导致产品失败,因为它不像计划中那样顺畅地运行并且经常出故障。

对于开发者来说能够找到一个团队与项目经理或者产品负责人融洽合作,不仅对于产品的成功至关重要同时也增添了工作本身的乐趣。

四、经常被打断无法专注

有许多伟大的工作都需要开发者这个角色,大部分开发者也很珍视他们的工作。作为开发者最令人上瘾的部分就在于,可以将灵光闪现快速地通过编码转变为现实。另一个令人惊叹的部分可以形容为"心流",即深度工作状态,这是一个人在深入工作和思考过程中所体验到的一种完全沉浸式的感觉。在需要高度生产力和创新的环境中这很常见,同样的,许多开发者想要高效编码也需要这种状态。

然而,在当代工作中时间很容易被临时安排的会议或者全天不间断的咨询/疑惑信息所打断。想要进入深度工作状态很难但是被打断却很容易。

此外,软件开发是一项高度个人主义的工作,这意味着你被指派任务和期望指标之后,其他事项都由你安排。然而,由于持续不断的消息和会议打扰,你很难找到足够的时间进入并保持工作状态以完成手头上的任务。这里的关键是你一天中不被打断的时间,因为即使是一些小事导致你切换工作内容也会造成损耗影响工作效率。

找到一段不被打断的时间最好是3-4小时,在那里你可以完全进入状态并专注于你的工作。一天中挤满了各种会议或者更糟糕的是,会议时间间隔30-45分钟,这对许多开发者的生产效率都是有害的。

五、 冒名顶替综合症

对于许多程序员来说,他们迟早会在职业生涯中经历某种程度的冒名顶替综合症。也许是开始一个新项目加入一个新团队或者只是某天中突如其来的坏情绪,让你产生自我怀疑并影响你一整天的工作状态。

梅利姆·韦伯斯持将冒名顶替综合症定义为:一种心理状态,又称自我能力否定倾向具体是指“认为自己不配拥有已经取得的成功或成就,对自己的能力持怀疑态度,认为自己是个冒牌货”的状态。

 这是一种适得其反的心理状态,有些人经常经历且难以摆脱,有些人则从来没有。但好在软件社区里有许多人表示他们在职业生涯里都不同程度地经历过这种感觉,并且愿意为其他人提供帮助。

 软件工程是一个伟大的领域,对许多人来说风光无限,看起来很有趣并且拥有无穷无尽的机会。然而,每个领域和职业都有它的优点和缺点,大多数时候人们只谈论优点而忽视了缺点,说实话有时候缺点都超过其优点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 程序员可以通过以下工具和技术来辅助他们的工作: 1. 代码编辑器:提供语法高亮,自动补全和错误检查等功能。 2. 集成开发环境(IDE):包括代码编辑器,调试器,版本控制等功能。 3. 自动化构建工具:如Maven,Gradle和Ant,用于管理项目依赖关系和构建过程。 4. 版本控制系统:如Git,SVN和Mercurial,用于管理源代码版本。 5. 单元测试框架:如JUnit,TestNG等,用于编写和执行代码测试。 6. 项目管理工具:如JIRA,Trello等,用于管理项目任务和进度。 7. 数据库管理工具:如MySQL Workbench,SQL Server Management Studio等,用于管理数据库。 这些工具和技术可以帮助程序员提高工作效率,提高代码质量和管理项目。 ### 回答2: 程序员工作涉及到开发、测试、部署和维护软件系统,这些工作本身就是需要耗费大量时间和精力的。为了提高工作效率,辅助程序员的工具和技术可以帮助他们完成一些重复性、繁琐或需要高度专注和准确性的任务。 首先,自动化工具可以辅助程序员进行代码编写和生成。例如,代码自动完成工具可以根据已有的代码或函数名称提供可用的选项和建议,减少输入时间和错误。代码生成器可以根据指定的要求自动生成特定的代码片段或者整个函数,加快开发速度和减少错误。 其次,调试和测试工具可以辅助程序员进行代码调试和错误修复。例如,集成开发环境(IDE)通常集成了调试器,可以在代码的不同执行阶段插入断点,观察和分析程序的运行状态,帮助程序员定位和解决问题。除此之外,单元测试和自动化测试工具可以帮助程序员编写和执行测试用例,发现代码的错误和缺陷。 第三,版本控制工具可以辅助程序员进行代码管理和团队协作。版本控制系统可以追踪代码的变更历史,并提供合并冲突、分支管理等功能,确保团队成员之间的代码同步和协同开发。 此外,文档生成工具可以辅助程序员生成项目文档、API文档等。这些工具可以根据代码的注释和标记生成对应的文档,减少文档编写的工作量和错误。 最后,性能分析工具可以辅助程序员进行代码性能和资源利用的优化。这些工具可以监测和分析程序的运行时性能,提供性能瓶颈的定位和优化建议,帮助程序员改进代码的质量和效率。 总的来说,辅助程序员的工具和技术广泛应用于代码编写、测试、调试、版本管理、文档编写和性能优化等方面,帮助程序员提高工作效率和代码质量。 ### 回答3: 辅助程序员工作有很多,主要包括以下几个方面: 1. 编辑和开发环境:辅助程序员的一个重要工具是编辑器和开发环境。编辑器可以提供代码自动补全、语法高亮、代码格式化等功能,使得程序员编写代码更加高效准确。开发环境则提供了编译、调试、测试等工具,帮助程序员更好地完成项目开发。 2. 版本控制:版本控制系统(如Git)可以帮助程序员管理项目的代码版本,追踪代码变更历史,并能协作多人同时开发。通过版本控制系统,程序员可以轻松地合并代码、解决冲突,并能够回滚到之前的任意版本,提高版本管理和代码协作的效率。 3. 自动化构建和部署:自动化构建工具(如Maven、Gradle)可以帮助程序员自动编译、打包、测试和部署项目。通过配置构建脚本,程序员可以定义各种构建任务和依赖关系,简化繁琐的手动操作,提高构建和部署的效率。 4. 代码质量工具:代码质量工具(如FindBugs、Checkstyle、SonarQube)可以帮助程序员检测代码的潜在问题和违反规范的地方。这些工具可以查找代码的bug、代码冗余、性能问题等,并给出相应的修复建议,帮助程序员改善代码质量。 5. 文档和帮助系统:辅助程序员的工具还包括文档和帮助系统。良好的文档可以帮助程序员理解框架、库和API的用法,并提供示例代码和注意事项。帮助系统则提供了对工具和技术的详细说明和使用教程,帮助程序员解决问题和学习新的知识。 总之,辅助程序员的工具旨在提高开发效率、简化开发流程、改善代码质量和提供支持等,使得程序员能够更专注地进行编码和问题解决,从而提高开发工作的效率和质量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值