高级程序员是一名犯过其领域内所有可能犯到的错误的专家。

如果按照工作经验对软件开发人员进行分类,可能是这样的:

  • 初级:2-3 年工作经验
  • 高级:10 年以上工作经验
  • 中级:介于初级和高级之间

这种按工作年限的分类存在一个问题。那就是:它对软件开发的质量只字未提。在工作的那些年里你到底获得了多少经验和技能?这正是面对开发人员的求职和面试如此复杂的原因。度量技能是很困难的,所以我们在面试中给开发人员进行了很多有难度的测试。但这些测试充其量也只是了解一个大概,无法度量其究竟具备多少完成该项工作所需的经验或专业技能。

这就引出了下一个问题。

一旦你不再是初级程序员,什么时候会成为高级程序员呢?

多年的工作经验会自动让你成为高级程序员吗?未必。

以我自身为例。当我还是一名年轻的初级程序员时,我以为自己什么都懂。我傲慢自大,独来独往。我认为自己是“代码之神”。我不喜欢与他人合作,我认为编写优秀的代码是程序员最最重要的大事。

我错了吗?倒也没错。编码的确很重要——程序员必须得去编写可工作的代码。但是编写代码并不是他唯一重要的事情。

我是在为第一个客户工作的时候艰难地认识到这一点的。我与客户交谈了 15 分钟,收集了需求要点,并假定我很明确客户想要什么。我开始像疯子一样疯狂地写代码,享受编写纯粹代码的过程。我在 3 天内交付了应用,但是客户却不认可。因为他说:这不是他期望的东西。

不用说,我的自尊心势必受到了伤害,我把这归咎于客户没有提供足够的信息。那时候我说话做事还不成熟。现在看来,客户永远是对的。如果我投入更多的时间来分析客户需求,情况可能会大不相同。不过我走了好大一段弯路才明白了这一点。

一名程序员不会因为他会写代码而成为一名合格的程序员,而是因为在开始做任何事情之前先做分析,然后再来开展工作,这才是真正的程序员。分析必须在多个层次上进行:

  • 为更好地执行所做的自我分析
  • 为更好地交付所做的客户需求分析
  • 为帮助每个人更好地完成工作所做的对整个项目的分析

如果你想从初级成为高级开发人员,你需要培养这些分析技能,以蜕变成一个真正优秀的高级开发人员。他所为人称道的是专业知识,而不是具备多少年经验。

一个好的高级开发人员就像一个成年人一样,可以自己照顾自己。他的生活不再是飘忽不定的、无意识的和实验性的。他从自己的错误中吸取教训,为自己的人生打下坚实的专业基础,他可以回首过去并为之自豪。他可能仍然“年轻”,但他所拥有的,是大量可实际高效做事的技能,这远比他的工作年限更有价值。

以下,将给出一些从初级程序员到高级程序员的方法。

克服邓宁 - 克鲁格效应

邓宁 - 克鲁格效应是一种认知偏见,人们总会高估自己,他们眼中的自己比现实中的自己更聪明、更能干。从本质上说,能力低的人不会认识到自己真的无能,相反他们都会高估自己。

作为一名初级程序员,这绝对是一场灾难。你可能认为你是一个超级明星程序员,无所不知。但事实是,你知道的很少,距离优秀还有很长的路要走。你应小心提防,不要掉进这样的陷阱。

初级程序员和高级程序员的区别在于初级程序员认为自己什么都懂,而高级程序员则知道自己还有很多东西要学。初级程序员往往高估自己的知识和能力,无法认识到其他人的技能和能力水平,这就是为什么他们总是认为自己比别人更有能力,知道得更多。

正如 David Dunning 所明确指出的:在许多情况下,无能并没有使人们失去方向、困惑或谨慎。相反,不称职的人通常会盲目自信。

Dunning 和 Kruger 认为,随着工作经验的增加,过度的自信通常降低,变得更为现实。当程序员开始深入钻研他们的领域时,他们开始认识到自己缺乏相应的知识和能力。当他们获得这些知识后,他们的专业能力就会增加,他们的信心水平也会再次提高。

他们提出了以下方法来克服过度自信。

  • 坚持学习和实践。一旦你对一个主题有了更多的了解,你就更有可能认识到还有多少东西需要学习。这可能避免想当然地把自己假想成专家。
  • 问问别人你做得怎么样。向别人寻求建设性的意见可以让你了解到别人是如何看待你的能力的。
  • 质疑你已知的东西。不断挑战你的信念和期望。寻找挑战你想法的信息。你提的问题越多,你学到的东西就越多。

记住,博学是一种美妙的感觉。但是你需要注意提高你的标准。为此,你需要更深耕,以便更好地理解某个特定的主题。这,会让你意识到还有多少东西需要学习。

知道什么时候不做什么

Mark Manson 在《不在乎的精妙艺术》一书中谈到了保持一种身份的重要性,这种身份的定义越少越好。这是因为当我们涉及到我们的身份时,当我们决定某些行为或事件时,代表的是我们作为一个人的价值。

简单地说,我们在决定做某件事时,经常是基于它如何满足我们的自我或者孩子般地迷恋与刺激,而不是真正需要做这件事。Manson 告诉我们,当我们把“自我”置身于决定之外时,做出的决定才是最好的决定,因为这很可能不是关于“你”的。直接问问自己:“这样做好吗?”好?那就去做吧。

这一点也适用于程序员。实际上,大多数程序员天生就是喜鹊,他们总是收集亮晶晶的东西,把它们存储起来,然后试图把它们粘起来粉饰巢穴。如果你没有意识到这一现象,“亮晶晶玩具综合症”的典型特征就是想要拥有最新的玩具,通常不考虑实用性或功能性的需要。或者,在注意力尚未转移到其他东西之前,总是十分渴望地想要拥有它。

如果你的目标是成长为一名高级程序员,你需要不惜一切代价避免患上这种病。最优秀的高级程序员清楚地知道什么时候不应该做什么。他们知道,为了提高可读性而从头重写一个类库,或者从旧的框架切换到最新的框架并不总是好的决定。这些代码的目的应该足够清楚,让人可以在几分钟甚至几秒钟内了解到。应该让大家很容易就可以浏览这些代码,即使不具备复杂的技巧。

关键不在于规避风险,而在于谨慎选择正确的战场。

抱有疯狂的好奇心

你有没有想过“应用程序”这个词是什么意思?

为什么我们把这些小图标叫做智能手机应用程序?这是因为他们将给定的工作流程或算法应用于我们的问题,并帮助我们解决我们的需求。

也就是说,如果你正在做些什么的时候,一定会犯错误。反思你的工作并不断改进它会带来创新,而创新的根源在于对事物运作方式的好奇心。记住,这是自我提升过程中的一个重要障碍。

错误 - > 见解 - > …好奇心 - > 创新 - > 错误重复……

如果你想继续前进,成为一名优秀的高级程序员,你需要对你所做的每一件事都保持疯狂的好奇心。好奇心是一种你越用就会变得越好的工具,这正是人们对优秀高级程序员的期望。优秀的高级开发人员以结构化的方式引导他们的好奇心,使他们可以使用那些在紧急情况下积累起来的信心。如果大家对Python感兴趣的话,可以加一下老师的微信哦:abb436574,免费领取一套学习资料和视频课程哟~

有一些方法可以满足你的好奇心,塑造你的品牌。

  • 永远不要停止学习。选择一门课程、一本书、一个在线教育学位,用它来丰富你已有的想法,并获得新的想法。
  • 注重基本原则。确保你了解它们是如何工作的,这样你就可以把它作为你工作的基础。
  • 不要说出你的想法。展示你的项目,无论如何,想法都是被高估的。如果你的想法得到了应用和传播,你就可以塑造起你自己的品牌。
  • 在新想法和已有想法之间细细考量。不要盲目接受你“应该”知道的东西。挑战现状。
  • 不要只是让它可以工作。使其可扩展、可重用并且可插拔。这就是你建立你的专业知识的方式。

一切都始于好奇心。如果你不好奇,还不如放弃。正如阿尔伯特·爱因斯坦所说的:

“我没有什么特殊才能。我只是非常好奇。”

如何从初级程序员变成高级程序员?赶紧看一看相关推荐

  1. 初级程序员和高级程序员的区别(转)

    初级程序员和高级程序员的区别   一般对于一个问题,初级程序员和高级程序员考虑这个问题的方法绝对是不同的.比如,在初级程序员阶段时,他会觉得VB也能做出应用来,且看起来也不错. 但到了中级程序员时,他 ...

  2. 低级程序员和高级程序员的区别在哪?学会像高级程序员一样思考!

    低级程序员认为自己与高级程序员的区别:高级程序员任何功能都能编码实现, 编码速度快, 代码无 bug. 正如一惯的那样, 低级程序员之所以低级, 正是因为他们勉强能看到(或者根本看不到)事物的表象而看 ...

  3. 低级程序员和高级程序员的区别在于?

    低级程序员和高级程序员的区别在于,高级程序员时刻意识到即使代码看上去完美,也可能会存在各种各样的Bug.因此,在编写代码之前,他们会先确保自己的逻辑和设计合理通顺.有些程序员甚至会在工作台上放置一个小 ...

  4. 精准鉴别初级、中级、高级程序员,你是哪一种?

    本文转载自[顶级程序员] 源 / 顶级程序员    文 / An先生 文章素材整理自:V2EX @jonde 初级:产品是大爷 中级:怼过产品 高级:打过产品 @PureWhiteWu  初级:加班 ...

  5. 初级程序员与高级程序员

    初级程序员阶段时,会觉得VB也能做出看起来不错的应用程序. 到了中级程序员时,就不会选择VB而可能用MFC了. 到了高级程序员时,首先不会考虑到用什么工具了,考虑的绝对是什么才是具有最快效率. 最稳定 ...

  6. 用维度概念来定义初级、中级、高级程序员

    网络上众说纷纭,大都站立在对某一技术的知识掌握量上来界定,或者有些人说着说着,发现无法自圆其说,然后就说这三种人就是一种叫法,你觉得你是高级你就高级了,从概念上讲,这三者之间必然有质的区别,单纯以量是 ...

  7. 初级,中级,高级程序员需要具备的能力

    1:团队精神和协作能力 把它作为基本素质,并不是不重要,恰恰相反,这是程序员应该具备的最基本的,也是最重要的安身立命之本.把高水平程序员说成独行侠的都是在呓语,任何个人的力量都是有限的,即便如linu ...

  8. java高级程序员(Java高级程序员招聘)

    Java高级软件工程师和Java程序员有什么区别 现实中的java高级软件工程师就是在某一个行业有很充足的开发经验,很了解开发模式就差不多了,一般的公司都会叫你高级工程师 程序员就是只敲敲代码 ,对啥 ...

  9. 初级程序员和高级程序员的区别,你了解吗?

    Midjourney 创作,可爱的程序员们 并不是每个开发者都是一样的.在之前的文章中,我曾经说过,不是每个初级开发者都是一样的,甚至每个中级或高级开发者也不在同一个水平线上.有一些最基本的要求通常是 ...

最新文章

  1. withRouter组件
  2. python IDE- IDLE
  3. java数据类型_JAVA的数据类型
  4. mysql数据库子查询的使用_MySQL数据库使用子查询方式更新数据优化及思考
  5. 微信公众平台开发接口PHP SDK完整版
  6. oracle form执行后左上角没出现oracle标记,oracle form学习笔记
  7. 【日常踩坑】Android机微信webview中页面跳转的问题
  8. 多多云手机多少钱一月_北京苹果手机维修为大家分享iPadAir2换屏幕多少钱
  9. Mybatis的基本步骤
  10. 运维工程师的生存法则
  11. Android Device Chooser中显示Target unknown解决方法
  12. Visual Studio 2005 提示“试图运行项目时出错:无法启动调试。绑定句柄无效”~[解决方案]...
  13. scrapy数据存储在mysql数据库的两种方式
  14. Apache Commons Compress 文件解压缩库
  15. android js 子线程,Android学习笔记:Android中的线程:MainThread 和 WorkerThread
  16. 黑马程序员 Python学习笔记之变量
  17. 数学模型——人口增长模型(基于python)
  18. 1.17 用Laplace变换解常微分方程
  19. 使用casewhen来判断执行不同的sql
  20. C语言模拟实现虚拟存储管理(请求分页存储管理)

热门文章

  1. 华语乐坛趋势报告(2022)
  2. 2021双十一电商行业研究报告:重塑消费决策链条,内容种草成电商新标配
  3. 互联网晚报 | 11月11日 星期四 | 腾讯第三季度营收1424亿元;华为捐赠百万价值职业技能券;货拉拉成立司机权益保障委员会...
  4. 进击的职场人 健康观念不容轻视——2021职场人健康状况调查报告
  5. 我的B端产品经理工作流
  6. 电影短视频营销白皮书
  7. mongotemplate模糊查_java 中 mongodb的各种操作 模糊查询 精确查询 等等
  8. 树状结构大数据类型的高效支持
  9. 区域卫生数据用于临床疗效分析的可用性研究
  10. 作者:郭琨(1985-),女,博士,中国科学院虚拟经济与数据科学研究中心助理研究员...