转载:https://www.toutiao.com/article/6749309390425178631/
2019-10-1908:47·笔码周记只不过从头再来当你在享受着的小时候被人疼爱,是父母在对你无微不至;当你被阳光滋润,是地球在过滤宇宙辐射;当你在沉浸在爱情的甜美,是另一半在披荆斩棘。所谓的岁月静好,只不过是有人在为你负重前行。有一天,你终会长大,小草终会参天,水滴定会穿石,你的未来是那蓝天白云,是那梦的彼岸。那就得像《全职高手》中的叶神一样,只不过是从头再来,放弃长矛却邪,打造一把千机伞。要做就一定要做全职高手《全职高手》电视剧终于迎来大满贯完结。期待已久的胜利最终属于我们喜欢的叶神,记得他最喜欢的一句话就是:心怀荣耀,即战无不胜。叶修(荣耀教科书,职业战斗法师):选职业很重要的。苏沐秋(荣耀设计师,兼职辅助):在我们荣耀的世界里,要是被职业所束缚,要做就一定要做全职高手。没错,就是让你成为全职高手的正版解读:散人+千机伞。一把千机伞在手,十二中形态24种职业技能无冷却切换。当我们看到叶神君莫笑在BGM中所向披靡,凭借一把千机伞的各种技能酷、炫、拽、拉、砍、挑、刺、扎、扫......不止炫技。其实你也可以,打造一把千机伞,就得建立自己的思维模型,最重要就是建立伞轴,千机伞被破坏,就是当初设计伞轴出现问题。伞轴可以说是整个千机伞的支柱。程序员的伞轴就是程序,程序=算法+数据结构,算法=时间+编码,数据结构=空间+关系。小白:选择一种开发语言很重要。大神:在coding的世界里,要是被开发语言所束缚,要做就做一名全栈工程师。如何打造一把千机伞?首先,得深度思考自己的核心竞争力是什么,然后在开枝散叶,添加新的形态和技能。世界在变,技术在变,需求在变。唯一不变的就是变化,如何在不确定性的的世界里算出最优解?建立一定数量的解决思维模型,可以解决80%以上的问题。与其每天的增删改查中消耗精力,不如培养举一反三的能力,在不确定的社会中用尽可能小的能耗,寻得最优解,尽可能做多的事情,撬动更大的资源。对于程序员这个行业,发展太快,你必须学习,纯靠经验技术是行不通,技术淘汰的速度远大于你经验积累的速度。不要谈什么编程历史,很多经验早已经不在适用。所以千机伞就会应用而生,助力你成为全职高手。伞轴:80%主要抓基础,20%研究新领域。有些人每天学习各种框架Vue、SpringCould、Mybatis、node等,这些潮流如数家珍。但是,我们确实在浪费时间。时间对于我们是最为宝贵的资源,是不可再生的,是极其有限。技术的革新如流水一般源源不断,这场比赛没有赢家,因为它永无止境。有些技术即使时过境迁依然被人们津津乐道,那就是精髓,比如Spring源码、数据结构与算法、编码原理、代码整洁之道等伞叶:项目,相比数量,规模更重毫无疑问,在实际工作中,积极参与实际工程项目是快速积累经验最好的办法。为什么追求规模?那是因为规模越大,会遇到各种框架问题就越多,你能从中学到的东西自然也会越多。一个亿级用户的项目比一个千万级用户的项目的复杂度,何止高出一倍呢!那是指数增长的。在小项目中的小问题,在亿级来说可能就比较棘手。这也就是去大公司的好处,个人能力会迅速提升。伞魂:建立知识—经验体系我们会在学生时期都有一些被称之为学神级别的同学,他们过目不忘;他们下笔如神;他们悠然自得。这些天才可以把学到的知识直接转化为实战经验运用自如,也就是知识即经验。而我们是芸芸众生,需要把知识在记住消化,并多实践才能把知识转化为经验。优化知识—经验体系,尽快把知识变为经验,用于实践,检验知识,在实践,在检验,在优化.....长此往复。千机伞的材料如何获取呢?在《全职高手》中叶神有四种快速搜集材料的方法,一给帮派做打手;二自己刷新副本记录;三编辑副本攻略;四拾荒。不要觉得你也可以像叶神一样,若是有叶神带队,倒是可以沿袭以上方法。若是没有,也不必担心,毕竟大神都是从菜鸟开始的。以下方法可以让你快速鸟枪换炮,走在大神的路上。工具要合适并非常熟练有人会嘲笑说:你即使把IDE用的再熟练,也不是把学习和使用工具扯一块的必要吧。当你在创建数据库,创建实体类,书写文档,都是一键生成的时候,你的手速和思维早已经拉开何止五公里的距离。工具的诞生就是提高工作效率和加快项目进度以及减少人力。当你看培训视频的工程师使用工具的的时候,我只能说我还是小白。有一次和几个google的工程师吃饭聊天,问了一下他们遇到的哪些人比较牛?一个工程师说他的leader太牛了,在帮助他找bug的时候,工具和debug使用的熟练程度让人眼花缭乱。很多工具都是他听都没有听过的,而且Python脚本编写几乎如行云流水般。究其原因并非是这个leader一眼就能看出问题所在,有些问题他也是第一次遇到,但他在单位时间内尝试的次数特别多,就很快把问题给逼出来了。别人可能一个小时会使用一种解决方法,工具的强大之处就在于你是否可以在一个小时可以使用十种解决方法,这就是所谓的牛人。天下武功唯快不破,你后续写demo、查问题、工具的熟练程度都会决定你学习和尝试新事物的速度。一个开着兰博基尼与穿破鞋走路的人,距离十万八千里的征程,那个先到达可想而知。对工具的简单了解和使用虽可以解决80%的问题,而至关重要的却在20%问题里,才是体现该工具的独特之处,若不是研究的透彻,不然一些有趣的事情就不会发生了。读书看文档学习还是要系统,并非看一两篇文章就可以打通任督二脉。读书,读厚书,原理才会研究的更透彻,知识体系才会更加完善。个人强烈推荐一个网站www.Java1234.com。这里有开发者的各种秘籍,可以修炼很多功法。比如《算法》、《数据结构》、《代码整洁之道》、《深度学习》、《推荐系统》等。有技术的更新换代非常快,这里提供vue.js、python、C++、SpringMVC、SpringBoot、AI等新技术,部分有教学视频,可以更好的学习。除了书籍,文档也是很有价值的。随着技术不断发展,好多都是协作,文档的含金量越来越高。Java程序员可以看看Spring框架、Mybatis框架等文档,质量都非常高。如果你还停留在文档就是几页介绍和demo,那你的观点可能要改一下了。你看CNCF上的项目,几乎每个项目的文档质量都是非常高的。现在很多项目不是一两个程序员单打独斗,而是一个团队加上像github那种协作非常好的平台,所以文档和代码、新特性不匹配已经非常少了,很多issue都是关于文档的。还有一些新技术的先有文档,书籍尚未出版。刚开始一些SpringCould是只有官方文档,对应的图书又少,但没有关系,多读两遍就可以啦,毕竟我们不是天才,也不是领域的专家。视频学习有些技术具有实际操作的必要性,光看书和文档是不可以得到其要领。而且从目前自媒体的兴起,视频获取信息是比较有过程和结果都具有指导价值,可以尽快模仿获取相关的经验和知识储备。图书和文档都是需要书面表达,有些技术大牛并不擅长写作。而且出书的周期很长,视频确实可以随时拍摄,周期短,符合技术更新速度。比如MIT的《算法导论》课程,视频简单易懂,还会有学生提问,主动思考;相比之下书籍就显的苍白无力,枯燥乏味。推荐一下,视频网站有网易云课堂、网易公开课、腾讯课堂、阿里云、慕课网等。有些课程需要money,建议条件允许的话,可以购买会员。有人喜欢外文视频也有Pluralsight,Lynda和Udemy等。技术资讯和技术论坛前面的图书、文档和视频都是深入了解一个某一项技术,对付工作应该没有问题。但是与时俱进,成为某一领域的专家和打咖,需要参加技术论坛和看看技术资讯。每个人都有惰性,大牛也不例外。他们不写文档书籍,不拍摄视频,就是会转发、点赞,关注、评论以及不经意的一句话就是你的转折点。这些信息都是他们过滤的,你的成本就会降低很多啦。关键在于自己会总结和学以致用,有这种订阅技术资讯的习惯。看源码,写Demo,做项目前面说了学习,看源码是非常重要的一个技能,至少你的codereview技能得以提升,但成本高。一般看一些一直沿用的技术,比如spring源码等,会有很不错的收获。Dome是必须写的,尝试新技术,学习新框架思维。程序员是一个实践性很强的职业之一。所以要有手感,而且,在编写时你的编程思维在不断完善,这个知识点才掌握好。行动,从实践中获取反馈。全面准备,付诸实践。思考出模型及决策后,通过实际行动来验证其精确度,并获得反馈后的对其加以提升。硬件支持是必不可少的进入办公室看一下同事,ThinkPad和MacBookPro两种版本,一个耐磨持久性价比超高,一个简约精致待机时间长,都比较适合开发人员拥有的。建议Java程序员MacBookPro2018顶配版值得入手。千机伞如何高效使用呢?由点到面的了解系统规模大的项目不常有,人的精力和时间是有限的,所以在小项目时,如果可以尽量多的汲取设计经验,会成长很快。举个栗子,当你接到一个小需求,在已有的项目上面增加一个小功能,比去就是数据库的CRUD的操作。你可能觉得闲出蛋来,那你就会错失一个更好理解系统,精进修为的机会。以前,我参与微服务系统后台项目的时候,刚开始接到的几乎都是很小的需求,有一段时间甚至无聊。后来有一位前辈与我聊,你要学会由点到面的去了解系统,半年之后,你对系统的理解程度肯定会更全面,深刻,后面大需求的时候,你才能hold得住。比如我接到一个新增一个报表的需求。这个需求本身设计实现起来比较简单,因为接口都是现成的,只要按照规范设计字段,配置上去就可以了。如果一般的做法,做到这个程度也就结束了。但如果你采用由点到面的办法,你应该去了解这个报表系统的设计,你会发现,为了保证报表的可靠性,系统做了很多额外的设计,这才是系统设计真正难度的地方。我后来通过搜索和查找资料,还发现了业界通用的做法----XSSXFWorkBook。若不是深入理解和挖掘这部分,就不知道这是用于poi之大数据批量导出Excel常用的方法。发现这个后,打开了一片新的天地,原来类似的设计和方法,早已经有一堆人研究过,并给出了很好的解决方案。时间一长,这种习惯给我带来很大的成长。很多人会问我,他每天的CRUD,技术没有起色。请问你确实对你的CRUD的系统有过更深的了解吗?你深入学习和拓展过这方面吗?多思考,这个特别关键
如果只要简单的实现业务功能,很多人都可以做到,根本不需要厉害的人,那厉害的人是怎么设计的呢?
除了功能需求,还有考虑安全需求,性能需求,可靠性,稳定性等。这才是系统设计的难点和关键点。
这些需求是不会从产品经理的口里提出来的,这个是架构师的职责之一;从产品需求,业务需求里面提出安全、性能、可靠性,稳定性等系统层面的需求。
一个产品经理不会跟你说,你的系统要保证安全,能抵御黑客的攻击。他们默认这些属于技术的范畴,应该有技术来解决,当然这也合理(他们甚至不知道这些还要设计)。所以一个合格的架构师,在接到这些产品和需求的时候,一定要能够全面的思考,给出除了业务外的系统需求,并要求自己和其他同学要去设计和实现这些系统需求。这是一种思维方式,也是做事的一种习惯。刚开始的时候,你可能没有这些意识和习惯,但你要有意识去培养它们。这种思考,是后期可以形成一种架构设计的直觉。比如,我有时候会接到一些很重要的任务,我进行一轮思考和设计后,却发现比预想的要简单的多,这时候,我的直觉就会告诉我,我可能是遗漏了一些关键的部分,或者对需求的理解不充分,或者对关联系统的了解有盲区。然后我就会重新review一边,很多时候,这种直觉,帮我避免了不少坑。编写文档,虽无足轻重,但举足轻重。大脑的容量是有限的,眼睛的视觉是有度的,在这个信息横流的时代,项目需要总结,需要记录,需要存储。当然,写文档不是给其他人看的,是给自己看的,不然后期容易扯皮。项目完结后,总结自己在这个项目中所做的一切,通常你都可以发现不少的问题和改进的地方。这些存在的问题,你应该放进脑子里思考。我觉一个优秀架构师和一个普通架构师的区别,很大部分是源自思考的广度和深度。结语荣耀,从来就不是一个人的战斗;荣耀,是大家的荣耀。全栈,从来就不是一个人的开发;全栈,是大家的全栈。全职,从来就不是一个人的工作;全职,是大家的全职。《全职高手》语录寄语语录一:以为努力就可以得到想要的一切,不要太得意忘形啊!在这个赛场上,努力是最不值得拿来夸口的东西,因为这只是基本是人人都会做到的,是最低层最渺小的东西,搞清楚这一点,再向高处攀登吧。寄语一:愿你努力,不负韶华。语录二:少年不要太猖狂,人生的路可是很长的。寄语二:愿你沉淀,厚积薄发。语录三:每一个不甘的离开,都是为了最后的归来寄语三:愿你离去,荣耀归来语录四:愿此生灿烂锋芒,被荣耀之光照亮,愿你的荣耀永不散场。寄语四:有幸一天,遇到你,最了不起的你。语录五:如果喜欢,就把这一切当作是荣耀,而不是炫耀。寄语五:干一行,爱一行,愿你的荣耀永不散场。