【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

如何从初级程序员变成高级程序员?

  • 2020-04-14
  • 本文字数:3096 字

    阅读完需:约 10 分钟

如何从初级程序员变成高级程序员?

区分高级和初级程序员的标准是工作年限吗?程序员最重要的工作就是写代码吗?


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


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


  • 初级:2-3 年工作经验

  • 高级:10 年以上工作经验

  • 中级:介于初级和高级之间


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


这就引出了下一个问题。


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


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


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


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


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


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


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


  • 为更好地执行所做的自我分析

  • 为更好地交付所做的客户需求分析

  • 为帮助每个人更好地完成工作所做的对整个项目的分析


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


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


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

克服邓宁-克鲁格效应

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


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


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


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


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


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


  • 坚持学习和实践。一旦你对一个主题有了更多的了解,你就更有可能认识到还有多少东西需要学习。这可能避免想当然地把自己假想成专家。

  • 问问别人你做得怎么样。向别人寻求建设性的意见可以让你了解到别人是如何看待你的能力的。

  • 质疑你已知的东西。不断挑战你的信念和期望。寻找挑战你想法的信息。你提的问题越多,你学到的东西就越多。


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

知道什么时候不做什么

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


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


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


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


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

抱有疯狂的好奇心

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


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


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


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


如果你想继续前进,成为一名优秀的高级程序员,你需要对你所做的每一件事都保持疯狂的好奇心。好奇心是一种你越用就会变得越好的工具,这正是人们对优秀高级程序员的期望。优秀的高级开发人员以结构化的方式引导他们的好奇心,使他们可以使用那些在紧急情况下积累起来的信心。


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


  • 永远不要停止学习。选择一门课程、一本书、一个在线教育学位,用它来丰富你已有的想法,并获得新的想法。

  • 注重基本原则。确保你了解它们是如何工作的,这样你就可以把它作为你工作的基础。

  • 不要说出你的想法。展示你的项目,无论如何,想法都是被高估的。如果你的想法得到了应用和传播,你就可以塑造起你自己的品牌。

  • 在新想法和已有想法之间细细考量。不要盲目接受你“应该”知道的东西。挑战现状。

  • 不要只是让它可以工作。使其可扩展、可重用并且可插拔。这就是你建立你的专业知识的方式。


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


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


作者介绍:


Ravi Rajan 是印度孟买的全球 IT 项目经理。他还是一个狂热的博客作者、俳句诗作家、考古学爱好者和历史狂人。可以在LinkedInMediumTwitter上与 Ravi 取得联系。


参考链接:


How to Go from Junior to Senior Programmer


2020-04-14 16:458888

评论

发布
暂无评论
发现更多内容

分布式日志系统的设计和实践

Java你猿哥

Java 分布式 后端 分布式日志

深入解析线程池,就这一篇

Java你猿哥

Java 线程池 线程池工作原理 Java工程师 线程池状态

Nacos心跳机制实现快速上下线

做梦都在改BUG

Java Spring Cloud nacos

阿里资深架构师三年整理分享:java面试核心知识点原理篇文档

三十而立

Java 程序员 IT java面试

GitHub置顶神作开源!世界名著《Spring实战(第6版)》全彩文档

做梦都在改BUG

Java spring 框架

通信系统综合仿真

timerring

通信系统 通信系统仿真

彩印图文版《Elasticsearch实战》文档,阿里内部共享,堪称精品

做梦都在改BUG

Java Elastic Search

阿里资深架构师三年整理分享:java面试核心知识点原理篇文档

三十而立

Java 程序员 面试 IT java面试

ZBC新一轮流动性收益计划迎来新通缩,APR高达100%

鳄鱼视界

终于拿到了阿里2023年度九大Java技术文档——面试题+文档+白皮书

三十而立

Java 面试 java面试

强大的克隆备份软件:EaseUS Todo Backup直装激活版

真大的脸盆

Mac Mac 软件 备份软件 克隆工具

5年Java经验字节社招:半月3次面试,成功拿到Offer

Java你猿哥

Java 面试 面经 校招 春招

quarkus2.13.7搭建与基础开发环境配置总结

刘一江

GraalVM Quarkus java

一文总结Java的23种设计模式

做梦都在改BUG

Java 设计模式

入选Gartner低代码魔力象限 |『华为云Astro』低调的背后

路过的憨憨

深入浅出ThreadLocal

做梦都在改BUG

Java 多线程 ThreadLocal

ZBC新一轮流动性收益计划迎来新通缩,APR高达100%

威廉META

灵魂一问:SELECT COUNT(*) 会造成全表扫描吗?

Java你猿哥

Java MySQL sql ssm

点击量破百万!阿里内产微服务进阶讲义,简直是Java开发者的福音

Java你猿哥

Java 面试 面经 Java工程师

简单好用的剪切板工具:Paste激活版

真大的脸盆

Mac 软件 mac剪切板工具 剪切板工具

某厂Java一面:一道JVM面试题引发的“栈帧”血案

Java你猿哥

Java 面试 JVM Java虚拟机

牛人!百度T9大佬纯手打的Kafka学习笔记,吃透已胜过80%Java求职者

Java你猿哥

kafka 面试 面经 Kafka知识点

SpringBoot实现对配置文件中的明文密码加密

做梦都在改BUG

Java Spring Boot 框架

阿里内部总结的微服务笔记,从入门到精通小白也能学的会

做梦都在改BUG

Java 微服务 Spirng Cloud

RocketMQ源码-broker 消息接收流程(写入commitLog)

小小怪下士

Java 程序员 RocketMQ 后端 消息中间件

前阿里架构师离职带出的Spring Security实战开发学习手册震撼开源

开心学Java

Java aop ioc springsecurity 框架

“阿里爸爸”最新产出:Java面试突击核心讲(1658页),转载40W+

做梦都在改BUG

Java java面试 Java八股文 Java面试题 Java面试八股文

通透!阿里P8撰写《深入解析Java虚拟机HotSpot 》让我涨薪70%

Java你猿哥

Java 后端 Java虚拟机 jvm调优

Java面试题大全(2023最新版)1500+大厂面试题附答案详解

采菊东篱下

Java 编程 面试

1658 页的《Java 面试突击核心讲》在牛客网火了,完整版 PDF 开放下载!

采菊东篱下

Java 面试

Spring、Spring MVC、Spring Boot三者的关系还傻傻分不清楚?

三十而立

Java 程序员 面试 IT java面试

如何从初级程序员变成高级程序员?_编程语言_Ravi Shankar Rajan_InfoQ精选文章