当前位置: 首页 > 科技观察

技术的成长:如何从研究生到技术专家?

时间:2023-03-22 14:51:22 科技观察

在过去的一个月里,我一直在帮助其他部门进行研究生培训。看名字是训练,其实是训练与战斗的结合。我不想一次给太多。这篇文章的建议是:找到持续成长的动力,养成整洁的编码习惯,建立定位问题的方法,学习现有模式,经常自我总结。仅仅基于这五点,与和所定义的三个要素也很相似:要素1动机:找到实现愿望的黄金行为要素;它立即发生如果你简化它,你也可以使用与我相同的模型,通过基本简单的行为:每天写代码,每周总结(通过文章)。重新定义专家,回到我们文章的主题,如何从毕业生到技术专家?专家是基于研究、经验或职业,在特定研究领域拥有广泛知识或能力的人。这样的定义简明扼要,工作经验丰富的人都可以称得上是专家。在这个定义下,996程序员的开发体验并不比965差。从那以后,我更喜欢它了。在那篇文章《专家 x 抽象 x 类比》中,我们也定义了专家应该做什么?所谓专家,就是在自己擅长的“领域”中构建了具有范畴化(categorization)的概念空间,并能通过类比灵活完善自己的概念库。在这个定义下,我们行业中的技术专家是指在软件开发领域具有丰富的软件开发相关知识(即概念)或经验的人。有自己的软件开发相关的知识体系(概念库),并且可以不断完善。比如你是后端高手,那么你就能理解后端开发中的大部分概念,以及这些概念之间的关系。如:SpringBoot是一个框架,可以用来帮助我们开发微服务;微服务是一种基于服务的分布式架构风格/架构模式;架构模式是模式的一种,应用最广泛的是设计模式;分布式架构通过远程协议连接多个部署单元。基于SpringBoot构建的应用程序可以是一个部署单元,通过持续集成构建,并持续部署到容器化平台。我们是入门级的“专家”,能够理解整个系统的相关概念,清楚概念之间的关系,有一定的经验。然后,一旦有一些新的概念进来,我们也需要能够将它们纳入我们的系统。比如最近在后端开发领域再次流行起来的Cells-basedarchitecture,也是一种架构风格,相当于微服务架构。我们可以建立的是一种领域思维框架,可以帮助我们对所有知识进行分类。1、找到持续成长的动力首先,我们要思考的第一个问题是,我们为什么要成为技术专家?无论动机水平如何,如果人们能够保持一定程度的动机,那么不仅可以保持追求目标的行为,还可以保持对目标的心理渴望,直到感知到目标已经实现。——维基百科六年前,我参加了一次管理3.0(有兴趣的读者,也可以阅读《管理3.0:培养和提升敏捷领导力》)。虽然,这次培训让我确信自己不适合这份枯燥的工作。然而,培训/书籍介绍了一个CHAMPFROGS模型,可用于帮助我们找到内在动机。它由十个激励因素(好奇心、荣誉、接受、精通、力量、自由、亲和力、秩序、目的、地位)组成,包括内在动机、外在动机或两者兼而有之。(感兴趣的读者,可以浏览:https://www.infoq.com/news/2013/11/intrinsic-motivators/)也可以试试,从以上十个动机中,依次按一、二、三,选择最适合您的动机。然后,你就能找到你成长的动力在哪里。我记得很多年前,我的主要动力是好奇、自由,其中之一我已经忘记了,现在可能已经不重要了。总会有人说:“嗨,我成为技术专家是为了赚更多的钱”。那么,问题是,您如何定义更多和更少,以及如何衡量它们?对于农民工来说,你赚的钱大部分不是由你的能力决定的,而是由你的行业决定的。所以,随着时间的推移,以赚钱作为增长目标,你会失去这种动力。因为,你的技术进步不会以收入的形式得到回报。2.养成干净的编码习惯干净的代码意味着很多,你可以从《代码整洁之道》获得更多相关知识。作为新手程序员,代码中充满了很多问题,比如:无用的注解,乱七八糟的代码风格,缺乏设计/重构的代码,缺乏自动化测试,导致大量的println或者console.log没有使用工具来加速开发。比如IDE快捷键、snippets、emmet等……如果工作一两年后还这样做,就需要提高警惕了。基本的编程习惯还没有养成,离专业程序员的距离就更远了。而这些简单的问题大部分都可以通过IDE找到,比如IntellijIDEA等工具。因此,我建议新手程序员优先使用现代IDE,花在工具上的钱迟早会通过其他方式赚回来。3.建立和定位问题的方式我们一直在说,大多数程序员使用ctrl+c/ctrl+v,也就是从Google/StackOverflow/GitHubCopyandpaste。然而,能做到这一点的程序员并不多。学会使用Google对于程序员来说是一个很大的门槛,一般人都跨不过这个门槛。另一个门槛是访问GitHub,那里可以学到很多代码。从查看问题的角度,我们可以发现,新手往往:忽略错误信息上明显的信息,比如error等。没有有效地查看错误消息。只看最后的结果,还是截错图吧。从分析问题的角度,我们也可以发现新手:不会去查官方文档。即使官方文档真的是最好的。我不知道如何查看文档。从错误信息中忽略搜索是最有效的手段。不知道如何使用关键字搜索。即使用相应的技术术语,如:SpringBootJPAQuery不知道GitHubissue可以搜索。虽然新手定位问题有点困难,但还是可以做一些尝试的。比如审查代码变更、回滚或者自动化测试来帮助我们定位问题。4.学习现有模型和最佳实践对于新手来说,值得注意的是,我们在这个阶段遇到的问题,大部分都是已知问题,往往可以通过查找资料来解决。大多数困扰你很久的问题,往往可以在书本上或者通过谷歌找到答案。因此,大多数时候,我倾向于购买书籍以快速熟悉现有领域。没有什么比购买知识更划算的了。虽然互联网上也有这样的知识,但是搜索是需要成本的。对于编程,很多知识都是前辈们总结出来的。与其自己乱来,还不如直接买书。所以,不妨找找一些书单,比如:https://www.douban.com/doulist/121444657/广义上的模式是个好东西,比如如何分析问题,拆解问题,等等。也可以搜索更多,给新手程序员的建议。5、经常自我总结不要把日报、周报当成自我总结。这里的总结指的是对技术、模式等的总结,可以是:如何应用某个框架和模式的总结,如何一步步采用某个框架的总结,分析某个框架的原理frameworkinstages...编程生涯很??长,有很多我们已经用过或者将要用到的技术。新技术层出不穷,而大多数新技术都是在已有的基础上改进而来的。同时,我们学到的很多有趣的东西在工作中不会用到,或者会有很大的概率用到。而如果我们不把这些有趣的东西记录下来,通过代码托管网站或博客,那么当我们再次遇到它们时,我们就需要从头再来。因此,可以多做一些总结,以备后用。其他:专家的知识诅咒好久没有接触毕业生了,所以在这个过程中陷入了知识诅咒的问题。也就是说,如果我们对一个物体非常熟悉,我们将很难想象这个物体在不认识它的人眼中是什么样子的。.简单来说,就是无法预测毕业生的平均水平,需要多重解释才能把问题说清楚。对于我的文章,这个问题由来已久。只是解决这个问题对我来说并不容易,也不是我的义务。博客总是在那里,也许,多年后,读者会自己弄明白。专业程序员也存在类似的问题。我们习以为常的内容,对于一些新手来说往往是看不懂的,我们也很难解释清楚。在讲解的过程中,可能会带入更多的概念,导致新手程序员更加迷茫。比如我在解释一个几百M的文件为什么要提交给Git,为什么存在的时候,就引入了blob、index等一系列概念。这时候的效果还不如右击.git目录查看大小,简单多了。