3

程序员这条路,选择深耕技术,还是全面学习比较好?

 2 years ago
source link: https://blog.csdn.net/junior5/article/details/121192540
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

程序员这条路,选择深耕技术,还是全面学习比较好?

original.png
流浪哥--互联网的浪潮儿 2021-11-07 16:03:51 17186
同时被 2 个专栏收录
8 篇文章 1 订阅
4 篇文章 0 订阅

在开发技术和应用市场完全成熟的今天,有人希望深耕技术-打造出自己的一片天地,也有人想广泛学习-在程序员市场中游刃有余。

在这里插入图片描述

面试造火箭、工作拧螺丝!

这句话实际上有点讽刺和调侃的意思,描述的意思是说:面试过程的问题非常非常难,就像造火箭一样。实际,入职之后才发现自己干的不过是最基本的 crud(增删改查) 的工作,就像工地上拧螺丝的人一样。
找过工作的小伙伴都会有过这样的感受:就单纯一个大厂校招,你就会感觉面试的时候你什么都得会。
重视基础的大厂(如字节),会在计算机网络、操作系统、算法上面问到你怀疑人生。
重视实战的大厂(如阿里),会在高并发、数据库调优、线上问题检查等领域问到你招架不住为止。

在有限的时间里,如何选择一个明确的方向

编程能力从什么时候开始突飞猛进?小白到大神的必经之路

1.关于一书:

Designing Data-Intensive Applications:

在这里插入图片描述

由于我的工作,是云技术相关,给后端的大数据模型,打造成,高并发,高弹性,高兼容的service。

所以数据处理,和云技术是我工具箱里最重要的工具!

因此,我接触了 Oracle, Redshift, HBase, Storm, Cassandra,Hadoop, Spark Kafka, Zookeeper…Amazo。
并且自己学习了,DynamoDB,Step Function, Kinesis, AWS Lambda, SQS/SNS, SimpleWorkflow, EMR…
还有一些看过源代码,内部怎么工作的深度,每个系统至少读过一本书。
当时,我的学习像无头苍蝇一样,是盲目的,什么技术火,就学什么,总觉得这些东西之间模模糊糊的是有联系的,感觉是有一些东西是可以总结起来的。

在这里插入图片描述

~~ 脑子里或者说工具箱里里的东西很多,但是却非常乱,概念实现经常记混,我经常在想:如果能总结归类,用更科学的方法去记住所有我学过的技术,那就好了。 ~~

之后我就遇到了这本书,我读了3遍,瞬间感觉,把这些零碎的知识点,一切都理顺了… 如果我先读了这本书,才去学上边这些东西,那么我花费的时间将是原来的3分之一到5分之一左右。

这本书在广度和一定程度的深度(如果对进一步深度有要求,可以读完此书的reference)上,概括和总结了数据系统,分布式或非分布式环境下面临的本质问题,和解决方案的分类,看完这本,我开始理解了“为什么”这么多的分布式系统要这么设计。而这本书上千的引用论文,给我指明了一条系统学习理论的明路。

2.关于多范式编程和最小表达力原则(least expressiveness principle):

学了好多语言(Java,C,Python,SQL,js),设计模式(AOP-面向切面,范型,反射,DCI-函数式编程)。

不知什么时候起,我已经忘记了我为什么要学习他们了,我的代码开始变成一个程序员的炫酷艺术,简直可谓花式编程。

怎样能用别人都不懂的花式技术秀翻全组,变成了我觉得可以体现我的学识的关键(在这里要跟接手和维护我花式行为艺术的同学深深的道歉)。

直到我了解到了多范式编程(Multi-Paradigm Programming)和最小表达力原则(least expressiveness principle), 我才中混沌中惊醒,回归初心,简化程序,用尽可能简单的程序来解决尽可能复杂的问题,才是我们发明和学习了这么多技术的最终目的啊!

编程干货 | 新手容易掉队的地方,个个都是转折点。

❤️Python面向对象保姆式教学❤️,新手速成精英之路!

做出来容易, 做正确难

这里做出来指没bug且完成需要的功能,这是最基本要求,不多加讨论。
这里正确,不是指功能正确,而是指程序可以很容易推理理解,理解意图,理解如何做到的,理解为什么系统不会出错。理解为什么要这么做。正确是现在怎么写不会挖坑害将来的人,现在怎么写能让别人1年后看你代码时候不可能理解错你现在的意图,现在怎么写能在别人将来犯错的时候提示他你错了。

3.关于领域驱动设计(Domain Driven Design):

从具体的大处来说,它让我明白了“为什么要有程序员”,这个话题很大很抽象,下边的引用有一些详述。

从小的来说,它让我懂得了怎么样用系统的方法来设计系统,实现系统,从而让VP,Director,各级开发经理, 产品经理,客户,和我们组配合的机器学习科学家,统计学家,经济学家,他们脑子里的系统,和我们程序员的code的组织,系统的组件设计实现,能够有一个清晰的对应,且这个清晰的对应,如何在无数的需求改变,无数的技术升级中,在长期的时间跨度上,如何能够坚守住,如何持续保证概念模型(concept model)和实现模型(implementation model)的一致,并且是清晰一致。

那么,一个小的脑子里的模型改动,必然只会引起一个系统的小的改动。做到这点,是在长远的时间角度,在考虑了未知的未来,考虑了明天的你,团队,客户,都会收到新的未知的信息的情况下(而不是根据一个时间点的需求)保持一个健康,可业务拓展,有竞争力的,能够成为组部门公司之脊梁的系统的关键!用比喻义来说:如果说Designing Data-Intensive Applications是逍遥子百年功力,是莽牯朱蛤,是张无忌吃的昆仑山蟠桃,给你无穷的内力,那么这些方法论则是北冥神功,九阳神功,易筋经,教你如何驾驭这力量,而不是自爆而亡。

编程是给未来的未知人讲故事

你无法知道将来这个人是谁,他都懂什么,他经历过什么,这个系统将来已经是什么样子了。我们需要在这种无知,缺乏信息的情况下做决定,从千万种把这件事做出来的方法里,选出你觉得最能把这个故事给讲好的那种方式,把故事写下来。编程是一种沟通,沟通是一种艺术,用程序跨越时空之沟通则是一门属于程序员的特有的艺术(就好比数学家用数学公式来沟通) coding is all about the art of communication(引用)。

算法离我们并不远—为什么你排位总是输,原因在这

能被历史记录的程序员,都有一颗让世界变得简单的心,愿我们时刻保持初心,热爱技术给我们带来的便利。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK