当前位置:首页 > 公众号精选 > 大鱼机器人
[导读]“作为一个有着21岁编程年龄的中年程序员,我可以自豪地说,我成功地经历了软件行业这个充满变数的世界的高峰和低谷。 这篇文章记录了迄今为止我在软件开发的职业生涯中所犯的错误,同时也 是如何避免这些错误的一本指 南。 ” 今天 对我来说是个大日子,因为

“作为一个有着21岁编程年龄的中年程序员,我可以自豪地说,我成功地经历了软件行业这个充满变数的世界的高峰和低谷。 这篇文章记录了迄今为止我在软件开发的职业生涯中所犯的错误,同时也 是如何避免这些错误的一本指 南。
今天 对我来说是个大日子,因为我的编程生涯终于已经走过了21年。
感觉一切就像发生在昨天一样。今天我在这里,作为一个有着21岁编程年龄的中年程序员,可以在博客上自豪地说,我成功地经历了软件行业这个充满变数的世界的高峰和低谷。是的,至少我可以说,今天对我来说是一个标志性的时刻。
俗话说,犯错是通向伟大的学习之路的一部分,快速而经常的失败是成功的标志。人们应该优先考虑的是:如何避免犯一次以上的同样的错误。
是的,从自己的经历中吸收经验和教训是最有效的学习方式,但是通过借鉴他人的经验而获得知识是一种更快,更聪明的方法,它可以减轻痛苦。毕竟,生命是短暂的,你不可能在一辈子的时间里犯下所有可能的错误。
从事一份软件开发工作是掌握你的技术之旅的开始。和任何领域一样,你会面临各种挑战,你有机会做正确的事,同样你也有可能做完全错误的事。这篇文章记录了迄今为止我在软件开发的职业生涯中所犯的错误,同时也是如何避免这些错误的一本指南。

不把薪水存起来,以备不时之需

你的职业生涯的轨迹在很大程序上取决于你决定如何花掉你最初的薪水。你会很想把这些钱花在买一辆更好的汽车,更换你的衣服,和去更高档的餐厅上。
虽然偶尔挥霍并没有错,但你需要计划把钱花在获取知识上。这不仅能给你带来最大的投资回报,而且还会随着时间的流逝持续给你带来好处。

让自己变得不可或缺

尽管对拥有让自己变成不可或缺的力量的追求会很诱人,但如果你一直这样做,你会伤害到你自己的成长。
永远记住,如果你想追求更高的目标,你需要让自己从低的目标中解脱出来,培养并指导一个接班人来接替你。

自断退路

即使你已经成为一个优秀的、举足轻重的、炙手可热的开发人员,你也不可以烧掉自己的“桥”(译注:自断退路)和挑起不必要的争斗。软件开发行业是一个小圈子,你现在正在烧掉的“桥”会在你最需要它们的时候给你带来麻烦。
即使是和你不喜欢的人相处,你也要谦虚,诚恳并维持良好的关系。

不分享知识

根据我的经验,精通技术是赢得团队成员尊重的最可持续的方式。话虽如此,但是精通技术而不与团队成员分享知识,必然会给你带来灾难性的后果。
精通知识是成功的一半,而分享它则是成功的另一半。优秀的程序员会和新手程序员交流,并向他们展示解决问题的方法。他们不仅会告诉新人们如何解决问题,而且会解释为什么他们采用这种方式解决问题。

忽视“软”技能

程序员有时会忘记软件开发是一项团队运动,而一个项目是一群人的共同任务,他们必须并肩工作,互相支持,朝着一个共同的目标前进。
因此,如果一个程序员过于自大,对工作没有热情,或者不能有效地进行沟通,那么这不仅仅会对他自己的工作产生负面影响,而且还会拖慢整个项目进度或搞砸部分工作,从而对整个项目产生负面影响。因此,“软”技能是必不可少的。

拘泥于一种技术

软件行业永远不会停止发展。同样,专业的软件开发人员也应该随着行业的发展而不断提升自己,并且必须与行业保持同步,与时俱进,以确保不被行业抛弃。
记住关键点是:你不需要对每项新技术都熟练地掌握,而是要获取新的概念,并且学会以新的方式解决问题。优秀的程序员不仅仅会编写代码,而且还会不断学习一些新的关键概念,以帮助他们以新的方式解决问题,并找到最有效的解决方案。

偷工减料

没有所谓的“快速又肮脏的代码”。肮脏的代码就是坏代码,不要偷工减料,也不要接受任何低质量的东西。
作为一名优秀的程序员,你的真正能力是在危机中体现的。如果在危机中你的表现和平时不一致,那么你就不能称为一个好的程序员。

不写软件文档

你的软件有多好并不是唯一重要的。因为如果软件文档不够好,人们也不会使用它。
不管最后期限是什么,不管工作量有多大,也不管不写文档的借口有多少,任何没有文档的软件都是一只死渡渡鸟。道理就是这么简单!!!

回避政治

我们经常听到技术人员说:“把我排除在政治斗争之外,我只想实现这项技术。”但这是行不通的。
哪里有技术,哪里就有改变。哪里有改变,就会有人将自己视为赢家或输家。那就是政治开始的地方。你需要管理好它,找到绕开它的方法,并且成为赢家。除此之外,别无它路。

编码前过度设计

在编码之前进行良好的设计是一件好事,但是如果花费太多的时间在它上面,你会陷入“分析瘫痪”的境地。
不要试图找到一个完美的设计,它在编程世界中是不存在的。寻找一个足够好的设计,然后你就可以从它来开始。一个好的设计就像一张地图,它应该进化,而不是一成不变。

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

根据Robert Martin的说法,“编写干净的代码需要有意识地使用无数的小技巧,并且通过痛苦地获得‘干净’的感知来应用这些技巧。这些小技巧统称为代码感知(code-sense)。”
“代码感知”不仅能够帮助我们区分好代码和坏代码,而且还能够帮助我们形成将坏代码转换成好代码的策略。

选择第一个解决方案

第一个解决方案(最容易想到的解决方案)很诱人,可能它是一个简单的解决方案。但是,一旦你开始质疑你找到的所有解决方案,通常就会发现好的解决方案。
记住,作为一个程序员,你的工作不仅仅是要找到问题的解决方案,而是要找到最简单、最优化的解决方案。

不知道什么时候不做某事

最好的程序员能够确切地知道什么时候不做某事。
他们知道,从头开始重写一个库只是为了使其更具可读性,或者从较旧的框架切换到最新的框架并非总是明智的选择。代码的目的应该足够清楚,以便在几分钟甚至几秒钟内掌握。
关键不是要规避风险,而是要谨慎地选择做正确的事。

不承认自己知识的欠缺

你可能是个技术天才,但即使是一个天才也不会完全掌握所有的技术。这几乎是不可能的。
而另一方面,即使是办公室里最没有经验的程序员也可能会想出一个可持续的、高效的解决方案来解决当前的问题。优秀的程序员不会把他们的解决方案强加于团队,相反,他们会建立一种民主制度,在这种制度中,最好的解决方案将获胜。

对压力低头

代码就像食物一样。它可以是快速、良好或廉价的,一次实现它们中的任意两个不难。但是,一个被压力压得喘不过气来的糟糕程序员可能试图让团队一次完成所有这三件事。他们受截止日期和其他人做出的承诺所压迫,尽管他们非常清楚那是不可行的。
一个好的程序员要做的就是“弄清真实”,并以最快的方式向所有利益相关者传达这个真实。

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

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

不看大局

作为一个程序员,大多数时候,你将在一段代码上工作,或者可能在现有代码中解决一些生产问题。你只是在做那些分配给你的工作,这没有什么不对的。但是如果你想成为整个项目的一部分,你需要花点时间去了解项目的全部内容。
最好和最简单的方法是得到一位导师的帮助,他可以帮助你更快地提高你的技能,让你坚定地站在更大的项目视角上。

重复造轮子

优秀的程序员不会重复造轮子,他们总是尽可能地重用和构建现有的功能。这不仅仅会节省时间,而且会在共享代码的开发人员之间建立起某种友谊。
对于你试图解决的问题,很可能已经有了现成的解决方案。因此,当你试图完成一项任务时,检查一下是否有其他人已经解决了这个问题。这样做,你不是在偷工减料,你是在减少工作量。

对业务规则不够了解

程序员们有时会低估业务规则的复杂性。如果我们不清楚业务规则,我们就不知道如何有效地实现解决方案。
请记住,在进行编程时,你需要采用业务思维,并以业务术语创建一个可行的解决方案,以实现其目标,而不是专注于一个强大的技术解决方案。

不与团队沟通

虽然对于沟通没有固定的规则(事实上,在Limbo软件项目中,“人员”被称为资源),但作为向智人进化旅途的一部分,在工作中获得一些和人相关的信息是必需的。
了解其他程序员的能力和局限性,再加上了解他们的兴趣的话,将能够让你以更好的方式规划开发。

不看重身体健康

身体健康是提升你的一切生活品质的基础,包括你的事业。它能提高你的创造力、活力和勇气,让你度过不可避免的起起落落。
优先考虑你的健康状况不是一次性的工作。这意味着你要把它安排到你的日常生活中,投资购买正确的食物和定期锻炼,甚至放弃其他坏习惯。

结束语

任何职业都有起起落落,这完全取决于你的态度。你要么被消极的事情打倒,要么以积极的方式接受,并从中学习到经验和知识,提升自己。
正如Carlton Fisk所说:
 “不是你获得了什么,而是你战胜了什么。就是它决定了你职业生涯的高度。”
原文:https://levelup.gitconnected.com/21-bad-mistakes-in-my-21-year-programming-career-6d25c5b34908
-END-

猜你喜欢

2020年最漂亮Linux发行版
我学的技术,过时?被淘汰?
做技术的,这些观点真的扯淡!

 最 后  
 

若觉得文章不错,转发分享,也是我们继续更新的动力。
5T资源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,PCB、FPGA、DSP、labview、单片机、等等
在公众号内回复「 更多资源 」,即可免费获取,期待你的关注~
长按识别图中二维码关注

免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

学好电子技术基础知识,如电路基础、模拟电路、数字电路和微机原理。这几门课程都是弱电类专业的必修课程,学会这些后能保证你看懂单片机电路、知道电路的设计思路和工作原理;

关键字: 单片机 编程 电路设计

单片机编程需要使用专门的软件工具,这些工具能够帮助程序员编写、调试和烧录程序到单片机中。以下是一些常用的单片机编程软件:

关键字: 单片机 编程 软件工具

Java语言和C语言是两种不同的编程语言,它们在语法、特性和应用领域上有许多差别。下面将详细介绍Java语言和C语言之间的差异以及它们各自的技术特点。

关键字: Java语言 C语言 编程

嵌入式系统是现代生活中无处不在的一部分。它们包括了我们的家电、汽车、智能手机、医疗设备等等。这些系统的工作必须高效、可靠,因为它们往往控制着生活中的关键方面。而C语言作为一种广泛用于嵌入式系统开发的编程语言,其质量和稳定...

关键字: 嵌入式系统 C语言 编程

在嵌入式系统开发领域中,C语言是使用最广泛的编程语言之一。它具有高效、灵活和可移植的特点,成为嵌入式系统设计师的首选语言。本文将介绍C语言编程的基本概念、特点以及在嵌入式系统开发中的应用。

关键字: 嵌入式系统 C语言 编程

在编程和计算中,运算符优先级是解释和计算表达式的一个关键因素。本文旨在阐述运算符优先级的概念、规则及其在表达式中的应用,以帮助读者更好地理解和运用运算符优先级。

关键字: 表达式 运算符 编程

泰克科技组合软件总经理Rick Khulman:“激发孩子们——尤其是女孩们对STEM的兴趣,对我本人乃至广大工程界都至关重要。”

关键字: 编程 机器人 示波器

PIC单片机采用精简指令集,例如对于PIC16F716单片机,只有35条单字节指令。要用这么少的指令实现复杂的控制或计算,显然要在程序设计上多做文章,以下就程序设计需要注意的问题谈一些看法。 美国微芯公司开发的CMOS工...

关键字: 单片机 控制 编程

PLC编程是一种数字运算操作的电子系统,专为在工业环境下应用而设计。它采用可编程序的存储器,用来在其内部存储执行逻辑运算、顺序控制、定时、计数和算术运算等操作的指令,并通过数字式、模拟式的输入和输出,控制各种类型的机械或...

关键字: plc 编程 plc编程

初学PLC梯形图编程,应要遵循一定的规则,并养成良好的习惯。下面以西门子PLC为例,简单介绍一下PLC梯形图编程时需要遵循的规则,希望对大家有所帮助。

关键字: 西门子 plc 编程
关闭
关闭