来源 | CSDN(ID:CSDNnews)

作者 | Ravi Shankar Rajan

译者 | 苏本如,责编 | 郭芮

以下为译文:

作为一个有着21岁编程年龄的中年程序员,我可以自豪地说,我成功地经历了软件行业这个充满变数的世界的高峰和低谷。这篇文章记录了迄今为止我在软件开发的职业生涯中所犯的错误,同时也是如何避免这些错误的一本指南。

1、乱花钱

你的职业生涯的轨迹在很大程度上取决于你如何安排你的薪水。你也许会很想把这些钱拿去换一辆更好的汽车,或者买一件新衣服,又或者是去更高档的餐厅。

虽然偶尔挥霍并没有错,但你更需要做的是,有计划地把钱花在获取知识上。这不仅能给你带来最大的投资回报,而且随着时间的推移还会持续给你带来好处。

2、让自己变得不可或缺

尽管让自己变成不可或缺听起来很诱人,但如果你一直这样做,最终会伤害到自己的成长。

永远记住,如果你想追求更高的目标,你需要培养并指导一个接班人来接替你,让自己从低的目标中解脱出来。

3、自断退路

即使你已经成为一个优秀的、举足轻重的、炙手可热的开发人员,你也不可以自断退路和挑起不必要的争斗。软件开发行业是一个小圈子,你现在自断退路,将来也许哪天会给你带来不必要的麻烦。

即使是和你不喜欢的人相处,你也要谦虚、诚恳并维持良好的关系。

4、不分享知识

根据我的经验,精通技术是赢得团队成员尊重的最可持续的方式。话虽如此,但是精通技术而不与团队成员分享知识,必然会给你带来灾难性的后果。

精通知识是成功的一半,而分享它则是成功的另一半。优秀的程序员会和新手程序员交流,并向他们展示解决问题的方法。他们不仅会告诉新人们如何解决问题,而且会解释为什么他们采用这种方式解决问题。

5、忽视“软”技能

程序员有时会忘记软件开发是一项团队运动。团队成员们必须并肩工作,互相支持,朝着一个共同的目标前进。

因此,如果一个程序员过于自大,对工作没有热情,或者不能有效地进行沟通,那么这不仅仅会对他自己的工作产生负面影响,而且还会拖慢整个项目进度或搞砸部分工作,从而对整个项目产生负面影响。因此,“软”技能是必不可少的。

6、拘泥于一种技术

软件行业永远不会停止发展。专业的软件开发人员应该随着行业的发展而不断提升自己,并且必须与行业保持同步,与时俱进,以确保不被行业抛弃。

你不需要对每项新技术都熟练掌握,你需要做的是要获取新的概念,并且学会以新的方式解决问题。优秀的程序员不仅仅会编写代码,而且还会不断学习一些新的关键概念,以帮助他们以新的方式解决问题,并找到最有效的解决方案。

7、偷工减料

不要偷工减料,也不要接受任何低质量的东西。

作为一名优秀的程序员,你的真正能力是在危机中体现的。如果在危机中你的表现和平时不一致,那么你就不能算是一名优秀的程序员。

8、不写软件文档

你的软件有多好并不是唯一重要的。因为如果软件文档不够好,人们也不会使用它。

不管最后期限是什么,不管工作量有多大,也不管不写文档的借口有多少,任何没有文档的软件都是一只死渡渡鸟。道理就是这么简单!!!

9、回避政治

我们经常听到技术人员说:“把我排除在政治斗争之外,我只想实现这项技术。”但这是行不通的。

哪里有技术,哪里就有改变。哪里有改变,就会有人将自己视为赢家或输家。那就是政治开始的地方。你需要管理好它,找到绕开它的方法,并且成为赢家。除此之外,别无它路。

10、编码前过度设计

在编码之前进行良好的设计是一件好事,但是如果花费太多时间在这上面,你会陷入“分析瘫痪”的境地。

不要试图找到一个完美的设计,它在编程世界中是不存在的。寻找一个足够好的设计,然后你就可以从它开始。一个好的设计就像一张地图,它应该进化,而不是一成不变。

11、低估“代码感知”的重要性

Robert Martin说过:“编写干净的代码需要有意识地使用无数的小技巧,并且通过痛苦地获得‘干净’的感知来应用这些技巧。这些小技巧统称为代码感知。”

“代码感知”不仅能够帮助我们区分好代码和坏代码,而且还能够帮助我们想办法将坏代码转换成好代码。

12、选择第一个解决方案

第一个解决方案,往往也是最容易想到的解决方案,它可能是一个简单的解决方案。但是,一旦你开始质疑你找到的所有解决方案时,通常就会发现第一个解决方案才是最好的解决方案。

记住,作为一个程序员,你的工作不仅仅是要找到问题的解决方案,而是要找到最简单、最优化的解决方案。

13、不知道什么时候不做某事

优秀的程序员能够确切地知道什么时候不做某事。他们知道,从头开始重写一个库只是为了使其更具可读性,或者从较旧的框架切换到最新的框架并非总是明智的选择。

代码的目的应该足够清楚,以便在几分钟甚至几秒钟内掌握。关键不是要规避风险,而是要谨慎地选择做正确的事。

14、不承认自己知识的欠缺

你可能是个技术天才,但即使是一个天才也不会完全掌握所有的技术。这几乎是不可能的。而另一方面,即使是办公室里最没有经验的程序员也可能会想出一个可持续的、高效的解决方案来解决当前的问题。

优秀的程序员不会把他们的解决方案强加于团队,相反,他们会建立一种民主制度,在这种制度中,最好的解决方案将获胜。

15、对压力低头

代码就像食物一样,它可以是快速、良好或廉价的。想同时具备其中任意两个特点并不难。但是,当受到截止日期或者一些承诺所压迫,一个糟糕的程序员可能会试图向团队施加压力,要求代码同时具备这三个特点,尽管他们非常清楚那是不可行的。

一个好的程序员要做的就是“弄清事实”,并以最快的方式向所有利益相关者传达这个事实。

16、不建立人际关系和信任关系

程序员可以孤军奋战,但是,优秀的程序员是那些精通人际关系的人。

建立信任和良好的人际关系的最简单的方法是帮助其他团队解决难题,这样他们就开始欠你的“人情”,你可以在适当的时候毫不犹豫地要求他们的帮助。自愿主动帮助别人,或尽可能多地帮助别人完成他们的工作,这不仅能够培养你的专业技能,而且还能在组织内建立你的影响力。

17、不看大局

作为一个程序员,如果你只是在做那些分配给你的工作,这没有什么不对的。但是如果你想从全局掌握整个项目,你需要花点时间去了解项目的全部内容。

最好和最简单的方法是得到一位导师的帮助,他可以帮助你更快地提高技能,让你坚定地站在更大的项目视角上。

18、重复造轮子

优秀的程序员不会重复造轮子,他们总是尽可能地重用和重构现有的功能。这不仅仅会节省时间,而且会在共享代码的开发人员之间建立起某种友谊。

对于你试图解决的问题,很可能已经有了现成的解决方案。因此,当你试图完成一项任务时,检查一下是否有其他人已经解决了这个问题。这样做,你不是在偷工减料,你是在减少工作量。

19、对业务规则不够了解

程序员们有时会低估业务规则的复杂性。如果我们不清楚业务规则,我们就不知道如何有效地实现解决方案。

请记住,在进行编程时,你需要采用业务思维,并以业务术语创建一个可行的解决方案,以实现其目标,而不是专注于一个强大的技术解决方案。

20、不与团队沟通

虽然对于沟通没有固定的规则,但在工作中获得一些和人相关的信息是必须的。事实上,在Limbo软件项目中,“人员”被称为资源。

了解其他程序员的能力和局限性,并了解他们的兴趣爱好,将能够让你以更好的方式规划开发。

21、不看重身体健康

身体是革命的本钱,身体健康是提升你的一切生活品质的基础,包括你的事业。它能提高你的创造力、活力和勇气,让你度过不可避免的难关。

永远把身体健康放在第一位,这不是一次性的工作,它需要你从日常生活的点滴抓起,健康饮食,规律作息,定期锻炼,放弃那些不利于身心健康的坏习惯。

22、结束语

任何职业都有起有落,这完全取决于你的态度。要么消极被打倒,要么积极去接受,并从中学习知识,获取经验,努力提升自己。

正如Carlton Fisk所说:

你职业生涯的高度,不是取决于你获得了什么,而是取决于你战胜了什么。


原文:https://levelup.gitconnected.com/21-bad-mistakes-in-my-21-year-programming-career-6d25c5b34908

本文为CSDN翻译文章,转载请注明出处。

【转载】编程生涯 21 载,那些我踩过的坑相关推荐

  1. 编程生涯 21 载,那些我踩过的坑

    作为一个有着21岁编程年龄的中年程序员,我可以自豪地说,我成功地经历了软件行业这个充满变数的世界的高峰和低谷. 这篇文章记录了迄今为止我在软件开发的职业生涯中所犯的错误,同时也是如何避免这些错误的一本 ...

  2. 学python就业要看哪些书-编程0基础自学Python,踩完这些坑,我才成功就业!

    " 0基础小白学Python的路程不易,但总有一些思路和方法值得借鉴,知道这些能让我们少走很多弯路. 今天我们就来分享2位前辈的学习经验和方法. 零基础学编程的方法 回忆一下我自己学习计算机 ...

  3. 21年编程,那些我踩过的坑!

    "作为一个有着21岁编程年龄的中年程序员,我可以自豪地说,我成功地经历了软件行业这个充满变数的世界的高峰和低谷.这篇文章记录了迄今为止我在软件开发的职业生涯中所犯的错误,同时也是如何避免这些 ...

  4. 【转载】Redis 21问,你接得住不?

    转载自Redis 21问,你接得住不? 1.什么是redis? Redis 是一个基于内存的高性能key-value数据库. 2.Reids的特点 Redis本质上是一个Key-Value类型的内存数 ...

  5. 程序员:开始编程生涯的5个建议

    程序员:开始编程生涯的5个建议 ugmbbc发布于 2010-10-18 13:14:21| 感谢GG的投递 如果想成为一名程序员,你需要通过一些有创造性的方式来获取经验并且并推销自己.本文作者分享了 ...

  6. JavaScript初学者编程题(21)

    JavaScript初学者编程题(21) 题目:求1+2!+3!+-+20!的和 JavaScript部分 function get(num) {//sum总和var sum = 0;for(var ...

  7. C/C++ 踩过的坑和防御式编程

    相信你或多或少地用过或者了解过 C/C++,尽管今天越来越少地人直接使用它,但今天软件世界大多数软件都构筑于它,包括编译器和操作系统.因此掌握一些 C/C++ 技能的重要性不言而喻. 这场 Chat ...

  8. 初学者应该如何开启自己的编程生涯?,nginx架构图

    后端.看不见的真相,未透露的故事.在过去,知道PHP足以自称为后端开发者,然后微软引入了ASP.NET.这两个就开始打架,直到Node.js冒出来把东西整理得井然有序.一些事件驱动开发的概念在Node ...

  9. justjavac:从辍学到成为Deno核心代码贡献者,我的十年编程生涯

    [CSDN 编者按]大学因学费而辍学,最困难时睡在公园长椅,有远见的母亲让他走上了编程之路,温柔智慧的妻子用爱与信任激励着他秉承初心.奋勇前行.编程十余年,他已在GitHub开源三百多个项目,项目总S ...

最新文章

  1. plotly可视化绘制共享坐标轴图
  2. 百度ueditor 拖文件或world 里面复制粘贴图片到编辑中 上传到第三方问题
  3. python调用有道词典_菜鸟上手Python最有野心的库Asyncio
  4. 消费扶贫谋定中国农民丰收节交易会 洛水山肴乡村振兴
  5. unix查询内存使用率_Elasticsearch高级调优方法论之——根治慢查询
  6. ASP.NET生成静态页面方法大全(1)
  7. python之穿越火线游戏代码_Python 大作业之五子棋游戏(附代码)
  8. 自然语言处理常用标识符<UNK>,<PAD>,<SOS>,<EOS>等
  9. 生成对抗网络 GAN 基本原理与发展历程
  10. 男女洗澡前后区别,太形象了!(文末送书)
  11. python爬取拉勾网职位信息_Python爬虫:拉勾网Python的职位信息爬取
  12. DES算法的加解密原理(详细算法+样例Demo)
  13. 狂热分子——码头工人的哲学沉思录
  14. 当下OA系统的使用缺陷以及相关解决方案
  15. 只需5步,新手小白如何创建实用的在线员工手册?
  16. 第二单元 用python学习微积分(十五)微分方程和分离变量法
  17. WRF主程序与WPS的编译与安装
  18. 使用matlab进行人工神经网络拟合
  19. 云计算具有哪些优势 如何快速系统学习云计算
  20. Http的各种请求方法(详解)

热门文章

  1. 《Windows核心编程》---剪贴板
  2. NOD32最新升级ID
  3. (三)系统与架构级低功耗设计
  4. ABB 机器人 压包指令PackRawBytes 解包指令UnpackRawBytes
  5. win10系统开不了机
  6. java applet 文本框_Java Applet 文本框 TextField 小例 | 学步园
  7. 什么叫做罗列式_项目起盘的时候,如何确定自己该做什么社群?
  8. linux 客户机中不支持 unity_婚姻中的不理解,来源于夫妻双方情感支持的不同
  9. js修改css样式属性_这个笔记《CSS样式的常见属性及值》,让菜鸟轻松学会包粽子...
  10. 命令点亮硬盘灯_macOS下移动硬盘无法挂载且硬盘灯一直闪烁的解决方法