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

作为一名工程师,我应该如何学习?

时间:2023-03-16 11:55:20 科技观察

只要自称工程师,就不能放弃学习。本文不是技术文章,只是介绍一些个人的学习方法和经验。如果你做了很多事情并且做得很好,那就一笑了之。1、看书对于工程师来说,书本上的知识是必不可少的。现在很多年轻的程序员都是通过网络博客来学习技术的,但是大部分的博客内容缺乏系统性(主要是对博客内容的总结),不系统。很多博主为了掩饰自己的无知,就简单地提一下自己不??知道的重点,从而导致遗漏。即使原作者很努力,内容不缺,你能从中得到的也只是别人总结出来的知识。没有自己的主动思考,中间缺少过程式的沉淀,盲目满足于背诵别人总结的知识。最后只是沦为别人的中继器。对于工程师来说,书籍仍然是获取知识的最重要媒介。即使只有目录概览,您也可以大致了解一个领域。目前大部分优秀的技术书籍还是以英文为主,能读懂英文技术书籍是工程师的硬实力。如何训练英语阅读能力?如果不是为了考试,可以试着强迫自己翻译一些英文文档/文章进行专训。比如,为了学习围棋,作者曾经和社区的小伙伴合作翻译《The Go Programming Language》[1],后来为了学习参与了社区《es 权威指南》[2]的翻译校对es深入。如果你身体上讨厌某个技术文档,但觉得内容必须要学习,那么你就强迫自己去翻译它。一千字以内的文档,周末一个下午就能完成。已经说是逼到这里了。自然可以想象,这个过程并不像玩游戏那么轻松愉快,但只要过了这个阶段,阅读技术相关的英文文档,速度就会明显提升。有了一定的英语能力之后,接下来就是从什么渠道获取内容了。如果不拒绝电子书,目前比较经济的选择是申请一个国内的ACM会员,用这个会员注册oreily网上书店[3]。每年只需支付大约20美元,您就可以及时访问大多数出版商的技术出版物。因为现在大部分出版社的网站都支持提前预览,你甚至可以在图书上市前就提前了解内容,第一时间得到整个行业的第一线资讯,可以帮助你站稳脚跟走在时代的前沿。两年后,当你的同事拿到翻译得很烂的中文版时,你已经可以冷静地diss他在信息来源上落后你两年了。(当然,如果你有兴趣的话,国内出版社一般在出版英文新书的时候都会招募翻译志愿者,如果你对某个领域特别感兴趣,也可以关注出版社的招聘消息参与。在这里我想指出的是,不要对翻译抱有太高的期望,重点是提高自己的能力。如果你想赚钱,算了。)如果你喜欢边看边写边画,电子书还是有点难度的。当然你也可以用ipadpro+applepencil来解决这个问题。但有些人更喜欢实体书拿在手里的真实感觉。有的外国书甚至是个人刊物,比如我之前买的《timeless law of software development》。开始。前几年淘宝的海淘也可以用来找书。大多数书都比较重,运费也贵。对于一些旧书,运费可能是书费的一半,很蛋疼。而由于国内对出版物的管控较为严格,为了规避风险,近两年这些海淘服务商基本不再帮忙代购出版物。对于个人用户来说,只剩下两个选择:直邮和转运。直邮虽然比较便宜,但是国联的EMS可能一到中国就上牛车,速度慢到突破极限。基本上心态稍微正常的都会选择转学。除了速度,有些出版社的书只在美国销售,不支持全球配送。转运需要申请visa或mastercard多币种信用卡,这样才能在海外网站上支付。以上问题解决后,图书的获取将不再是问题。2.信息来源虽然文章开头对传统书籍给予了高度评价,但书籍的缺点也很明显。在技??术领域,这个缺点尤为明显:老化问题。如果我们学习的是比较老的领域知识,那么看书基本就够了。但是技术的发展是瞬息万变的,如果你想成为那个知道该领域所有新技术的人。您仍然需要注意书籍以外的一些新闻来源。以下是一些示例:1.GithubTrendingGithubTrending代表一种趋势。一般来说,如果一个项目能上热搜,可能是作者自己去hackernews和reddit上宣传了。可能是某个行业龙头带来的流量。因为Github上的中国人越来越多,而很多中国人明显的学习技术诉求其实只是面试(汗,xx面试/xx架构师之路等仓库一旦开放,就会吸引大量中国人去点stars,这两年trending的质量下降了,不过最近GithubTrending增加了SpokenLanguage的过滤功能,可以过滤特定的语言,比以前好多了。Github上的trending一般都是以语言来区分的。如果你想成为某种语言的专家,你仍然需要知道世界各地的人们每天用这种语言造出什么样的新轮子。阅读星数众多的Repo源码也是一种享受。除了按照时间和星数聚合,Github上也有人开了各种awesome-xxx的汇总页面。这种仓库对于学习特定领域的语言或技术也非常实用。如果恰好发现了该领域的空白,利用业余时间造轮子,也可以提交PR收录。因为awesome-xxx主要是个人项目,所以作者一般都很友好。但是现在awesome-xxx项目越来越多,就会有人想对awesome仓库做一些总结。然后这些牛逼的总结越来越多,还会有人继续往上总结。于是就有了awesome-xxx,awesome-awesome,awesome-awesome-awesome一个接一个。..真是工程师的黑色幽默。2.关注优秀工程师全球有很多优秀的工程师每天、每月、每年都活跃在Github上。我们总是希望自己能够在技术上不断进步,同时,随着年龄的增长和寿命的延长,我们也会时不时的迷茫。这时候,我们去看同龄的优秀工程师。年长的优秀工程师都在这个时间段写作。你在写什么代码,写什么博客,可能对解决你特定时期的困惑是有好处的。也许你发现了一个值得奉献青春的新领域。在起步阶段,你可能不知道去哪里找这些优秀的工程师。还有几个来源。如果你看了精辟的代码,觉得作者出类拔萃,那就立马去Github上找这个项目,关注作者是一个比较不错的选择。如果您在某处听说过像geohot这样的传奇程序员怎么办?那就赶紧在Github上关注他吧。如果你发现你关注的人在关注别人,你也可以调查这些扩展关系链上的人。喜欢的话也可以考虑一下。关注足够多的人后,你就可以在你的Github主页上看到这些人的日常活动。另一个新的消息来源。3.许多reddit相关的社区在语言和技术领域变得流行起来。中国的社区实际上有点分裂。每个人都想占据山顶,成为大老板。而每个社区也汇集了点点滴滴的好内容。但是因为谁都不接受谁,国内的社区生态就被人为分割了。我们没有办法在同一个社区中获取或搜索所有我们想知道的技术文章、问题、想法和总结。所以我建议关注国外社区。reddit是个不错的选择。当然,因为敏感词,社区本身也得到了加强。在这里你需要检验你的穿墙技巧。reddit上的Rust社区[4]。4.晨报除了工程之外,我们在某个领域做的稍微深入一点之后,还需要关注更前沿的理论部分。作为一名打工码农,如果想学理论,每年都需要看一些新发表的论文。在学校读过一些论文的人基本上都知道,即??使是最好的论文也会因为一些荒谬的原因而包含很多废话。晨报是一家外企的CTO创建的个人博客(CTO也天天看论文,厉害了),可以帮助我们解读很多新的论文,省去很多废话和不必要的阅读时间。的重要公式。只要你了解它,它就是一个很好的渠道。5.技术会议和公开课除了看课文,看视频和面对面交流有时也是必不可少的。一些自己一直在思考却无法解决的问题,在专家的点播下瞬间豁然开朗。这也是“听君子,不如读十年书”这句话的充分体现。比我们工作时间长、经常总结的人,往往能给刚入行的人带来开阔的视野和震撼的理论,这是我们无法用言语带给我们的。当然,在技术会议上听分享也要保持头脑清醒,不要被那些炒作的概念吓倒了。有些人的分享很功利,其实只是一些旧概念的包装。而这些人出现在现场的目的,也可能是为了推销自己,方便跳槽,以免上当受骗。听主题的时候要有一点选择性,尽量避开这种炒作忽悠的播放器。除了技术会议,ytb上还有很多优秀的公开课。十年后,很多人抱怨因为经济和家庭原因,没有机会出国留学,接受世界一流大学的计算机教育。公开课的出现,让我们身上的经济和距离限制消失了。在校学习时,一门课只有36-48课时,加上思考和作业的时间,就是72-96学时。对于已经工作的群居动物来说,一个月有8个周末。稍加努力,一个月基本可以上完一节公开课。这既可以弥补你学生时代的遗憾,也可以填补一些人所说的虚无缥缈的“底子薄”。挂一些自尊心很强的老油条。国外的计算机课程往往随着行业的发展随时更新。比如早期索尼的Playstation3推出后,就有学校的架构课程专门讲解IBMCell处理器的架构设计。前年或更早的时候,已经有学校向学生讲授英特尔i7处理器中发现的一些更现代的设计概念。这比一些工作了十年但从不关注新技术的人告诉你的要强得多。2.多做开源有些同学,在看了很多代码和设计方法论之后,可能还是会在工作中陷入焦虑。为什么我们在企业维护的代码是一堆狗屎,为什么我每天写的东西都堆在狗屎山上?大多数公司的软件生命周期其实很短。当开源行业还没有可靠的解决方案时,企业为了解决一些暂时的问题,往往会以最少的资源获取最大的收益。即便是纯技术项目,我们所做的也是一些丑陋的临时解决方案。甚至有一些产品的MVP版本的代码可以存活一周。一些企业内部的技术工具虽然本质上可以开源,但为什么不能开源呢?还不是因为历史包袱太重,代码写的狗屁。有时候不是工程师不追求优秀的代码,时间紧的时候写出来就变形了。幸运的是,我们的业余时间属于我们,我们可以用最严格的标准来要求自己编写自己的开源项目。而将这些项目以产品的形式运营起来,不仅会提升我们的技术能力,也会给我们带来更多的机会。如果你自己的开源项目成功了,同时能给你带来更大的行业影响力,何乐而不为呢?3、多做总结当你有了足够多的信息获取渠道和个人能力提升方法后,就应该多做一些总结。对于工作3年以上的工程师来说,总结不仅仅是为了面试。一个人的工作内容肯定会随着时间的推进而改变,跳槽后工作领域也可能发生变化。一个人的历史积淀怎能不成为时代的眼泪?只是总结一下。总结一下比较好的方法是:1.我觉得最好的自己搭建测试代码库的方法是learn[5],一位韩裔工程师。如果从大学开始就养成这样的习惯,技术走过的路都看得一清二楚。如果自己的总结能够让别人看的顺眼,那就比较成功了。就算达不到这个程度,等我们自己搭建好代码库之后,搜索一些代码片段来演示一下,也会方便很多。2.建设自己的博客博客是个人思维的轨迹,我们的工作不仅仅是完成任务。在完成任务的同时,完善自己的方法论,逐步形成自己对技术问题、业务、公司、行业乃至整个世界的看法。独立思考是一个人最重要的品质。自从加入滴滴,我已经写了4年多的个人博客。虽然一开始只能写一些简单的内容,但现在可以从任何角度进行比较完整的分析和观点总结。对于工程师来说,除了编码能力,写作能力也是需要培养的。既能把事情做好,又能在必要的时候通过文章宣传自己的工作。建立自己的个人品牌。3.建立自己的笔记库除了完整的博客输出,如果有一些零散的知识不易整理,可以放在自己的笔记里。这些可以是别人共享的备份,也可以只是记录一些简单的命令。记笔记是一个好习惯,因为一个人不可能永远记住所有工具的使用方法。必要时参考笔记快速回忆就足够了。4、锻炼演技因为工程师80%的工作时间都在和技术、代码打交道,所以更容易忽略一些软技能的训练。这里不谈一些敏感内容,只谈口才。据我观察,大多数工程师实际上并没有意识到这是一个问题。即使在纯技术人员交流的场合,你也会发现有些人的表达能力真的很一般,其他技术人员都难以理解,更别说和非技术人员交流了。人的一生,最重要的是能够把路越走越宽。对于工程师来说,可以锻炼软技能的场合不多,但不代表没有场合。就算没有,也可以自己创造机会,比如组内、组间、部门内的技术分享都是很好的机会。更大规模的技术分享,在你不高或者影响不大的时候,可能因为主办方的“眼力”给你提供这样的机会,但作为一个向上的人,你迟早会走到这一步的。你只要提前做好准备,到那一天,你就会成为万众瞩目的焦点,谈笑风生。祝愿每个人都能成为更好的自己!