03.07 为什么一些程序员热衷于讨论sql、并发、框架、架构,却不讨论路由、操作系统等?

夶白兎


为什么一些程序员热衷于讨论sql、并发、框架、架构,却不讨论路由、操作系统等?

这是一个很有意思却又很现实的问题,实际上笔者觉得同类的问题可以衍生至很多领域。

为什么逛菜场的阿姨们总是爱谈论邻里的八卦,却很少讨论忠贞不渝的爱情?

为什么外卖小哥们热衷于讨论今天跑完了多少单,却不讨论接单软件应该怎样设计更合理?

为什么一些老师热衷于讨论自己班学生的成绩,却很少讨论某些特立独行或者成绩不佳学生们的优点?


群体生物

实际上题主的问题中已经给出了问题的答案,本身问题中的群体是限定的,在认清这个问题之前,我们需要再次来看看目前国内对于程序员界限的划分。

一般来说,程序员如果选择了技术路线,在成长为架构师往上的角色前,本身的群体范围大多数就被限定在了跟各种各样的程序应用、编程语言、框架打交道。我们暂且不把架构师、CTO之类划分在程序员的范畴,再回过头来看这样的一个群体,也就能想象得出为什么程序员们经常讨论的话题往往是SQL、并发、框架、架构了。

因为这样的一个群体,所有的这些才是与工作生活密切相关的。

OK,有特例有学霸,但那有什么用呢?数学上的正态分布告诉我们,鹤立鸡群往往的结果无非两类。

一类早早飞升至架构、CTO独当一面,已然不屑也超出了原本普通群体的范畴。

一类在日积月累之中,逐渐磨平棱角,变成了小时候那种最讨厌成为的自己。


物以类聚,人以群分。老祖宗告诉我们的人生道理。


认知壁垒

一个人的认知是有限度的,经过群体的划分后,因为工作生活之中实在用的较少。俗话说业精于勤荒于嬉,就是这个道理。

也许在学校里,我们苦心钻研与模拟电路与数字电路神奇的关系;也被嵌入式主板上一个二极管的光亮激动过好一阵;梦里也出现过无数次汇编指令浩浩汤汤的阅兵方阵。然而始终人的专注度是有限的,而国内的程序员来说,生在一个最好的时代,却又是一个最坏的时代。

他们用超出常人的身体精力换取着其他同类级别工种难以企及的回报,却大多数已然输在了人生这漫长的赛道,种下病因,等待苦报。


一个程序员也许会纠结于怎样的并发设计能带来更大的性能提升,而一个硬件工程师往往更关注操作系统进程间的通信、并行的控制等。

这属于认知的壁垒,相信如果将题中的程序员替换为硬件工程师或者网络工程师,题主能得到更想看到的结果。


人生是一盘棋,愿您能早日看破残局,晋升高段。


寻心湖


这种现象也是国内软件行业现状的体现,不是程序员不想谈论路由和操作系统,而是想谈却谈不起来!要不找几个大学的计算机教授来唠五块钱的操作系统,看看有几个能聊明白?或者大家想想咱有能拿的出手的操作系统供大家谈论的吗?

但这个问题仍然值得我们深思,我认为有以下几点原因导致了大家多谈论sql,架构,并发和框架,而很少谈论路由和操作系统的现象。

人们谈论多的往往是所涉足的,对于未曾接触的却无从谈起

都说没有实践就没有发言权,这句话放在这里就挺合适。这个问题要分开来看:一方面,大家想谈路由和操作系统却没有谈资。另一方面,此程序员非彼程序员,路由和操作系统的实现不是一般程序员可以完成的!打个比方,都是运动员,你问问詹姆斯和科比为什么不和刘国梁比赛乒乓球呢?根本就不一个类目嘛~

如果你是一个家庭主妇,久而久之你谈论的将围绕着柴米油盐。如果你是二人转演员,那么生活中处处都是段子。同样由于我们国内的程序员日常工作大都围绕着sql、并发、框架和架构,所以这就成为了大家的谈资。反过来,如果都是做操作系统开发的,还愁没人聊有关话题吗?

一个是应用系统程序,一个偏底层系统程序,国内程序员做应用的多,做底层的少

从专业角度讲,这是软件开发不同的范畴。sql、并发、架构和框架主要是应用系统方面的,主要有程序员岗位来开发。而路由属于网络通信方面的,主要是网络工程师或者通信工程师来实现。操作系统则是复杂而庞大的,管理硬件和软件资源的底层系统软件,是应用系统运行的基础和前提。

路由主要是通信方面的知识,工作中,程序员只需了解一些基本通信协议即可,不必关心其具体的网络路由细节,比如路由表、下一跳等。

关于操作系统又主要分为以下几类:

  • 嵌入式操作系统(包含ios和android)

  • 类Unix操作系统

  • windows操作系统

  • macos操作系统

无论是在哪个分类下,我们都处于绝对落后的地位。早在1999年,时任科技部部长的许冠华就曾说过“中国的信息产业却芯少魂”。这个芯指的就是芯片,这个魂指的就是操作系统。遗憾的是,时至今日我们还没能彻底改变这种状况,操作系统的技术和市场依然被西方国家垄断。

所以一直以来,在pc端的操作系统领域,很少有企业愿意投入研发成本来抗衡,都是国家团队在努力突破,可就是这样依然难见成效。而缺少了社会企业参与的氛围和土壤,众多程序员也失去了参与其中的机会,因此对于操作系统研发的谈论就无从说起了。

我们只是软件大国,还不是软件强国

后来到了移动互联网时代,操作系统不再是微软一家独大。国外研发出了ios和android,国内则出现了基于安卓的华为emui和小米miui,还有魅族的Flyme,还有阿里自主研发的yunos和alios。

近来华为更是推出了鸿蒙系统,更是让国人看到了希望。但同时围绕着操作系统生态的建设却成为人们担忧的话题。

而在应用系统研发领域,虽然我们拥有了支持高并发的电商平台和电子支付,虽然拥有金蝶、用友这样的企业级服务商。但还是难以和oracle、ibm、sap这样的全球性的企业级服务商匹敌。因此我们还只是软件大国,还不是软件强国。

也许等什么时候,我们的软件系统可以像中国的高铁技术、桥梁技术一样输出到国外时,我们谈论的也许将不再热衷于谈论sql、并发、框架和架构了!

其实,谈论SQL、并发、框架和架构也没什么不好的,技术的本质就是作为一种工具,为其他行业服务、为社会创作价值。就像我们的电商和移动支付改变了我们的生活、消费方式一样。没有这些技术指标的保障,是不能支持双11这么大体量的狂欢购物节的!

欢迎关注我@码农wu师,专注IT技能分享,一起聊聊编程谈谈生活!


码农撩科技


给你们讲个笑话 有个大厂的开发在工作时对我发火了 理由是他的vpn无法连接外网 但事实只是他DNS有问题 他有太多的vpn软件 有的可能修改了他注册表的DNS proxy 所以 他并不是连不上外网 还是DNS问题 关键这些都不是事 主要问题是 这哥们要和我不懂装懂 说“肯定是路由有问题 连上了VPN要访问外网肯定是要加路由的 你搞网络的这都不知道 ” 我日 给我气的


网工碾压机


从这种心态可以看出,还是迷信国内程序员不如国外的程序员厉害,国内软件行业经过近二十年的发展,已经积累了一大批经验非常丰富软件开发工程师,国内互联网公司能有这么大的影响力除了国内人口数量多的红利之外,还有一个很重要的因素国内程序员质量已经上来了,如果没有这个基础不可能发展这么迅速,国内一批优秀的编程高手已经在很多领域做出了国际水准,像阿里的阿里云算是中国程序员的一个杰作,水平已经能到很高的水准了,不像是很多人讲到的国内程序员只会简单的搬运工作。

程序员讨论的内容不可能仅仅限于框架,架构,路由和操作系统也是在这个范畴,特别是一些嵌入式系统经常有操作系统定制工作,也属于程序员讨论的重点,程序员讨论什么内容和工作的内容有着直接的关系,记得在一个项目内大家都非常热衷于讲自己的代码提交到开源社区,并且被通过认可,这种对于程序员来讲是巨大的荣誉,现在国内已经有很多的程序员在做这个事情了,很多开源社区里面已经陆续看到中国程序员的影子了,在初级阶段可能因为底子还比较薄弱。开始先是进行学习,基础足够了才能有创新的机会。

很多人觉得中国的程序员只会山寨,不懂得原创,在自己非常弱小的时候先是让自己存活下来然后才是创新发展,很多企业刚刚挣扎在死亡线上这个时候不可能有多大的创新产生,只有拥有了足够的财力才能有底气去搞创新搞研发,任何企业都离不开这个规律,程序员在一起讨论的问题点差别场景太多了,程序员讨论技术问题未必是在现实中,一般喜欢在网络上寻找答案,或者喜欢发论坛进行讨论,平时具体讨论主要是和项目相关的事情,很难直接去谈一些架构问题。

程序员能力高低主要和思维能力和基础编码能力决定的,编程基础可以随着时间的推移进行积累,思维能力需要经过经过项目的提炼,所以没有做过项目的程序员不算真正的程序员,程序员能力提升不要随着时间推移一步步提升的,有些程序员进步几年后慢慢进步就变得十分缓慢了,主要在编程思维上没有实现真正的突破。

国外程序员因为英文的先天优势在很多方面都要优于国内程序员,但到了一定程度不一定比咱们的要强,但和祖师爷级的老手差距还是非常巨大,主要还是历史的积累问题,类似于编程语言级别的创新国内程序员还是有差距,在应用型方面以及构建编程的生态系统方面也是存在比较大的差异,承认差距然后努力去追赶,也是国内程序员需要做的事情,没有必要妄自菲薄,也没有必要自我夸大,平常心去对待认真完成一个基本功能模块,认真审视每一行代码,时间足够长了,国内一样能诞生世界级的编程大神,希望能帮到你。


大学生编程指南


如今的IT行业属于香饽饽,程序员也增多了。你说的谈论spl这类东西,应该是后台服务程序员,那么为啥很少讨论路由、操作系统呢?从两个方面说说我的看法。

语言与操作系统无关

拿java来说,它是跨平台的,因为jvm的存在,所以在开发的时候不用考虑平台,对操作系统也只是了解阶段。只需注意平台特性,去做相应配置。比如Windows平台,需要配置环境变量等等。程序员精力也是有限的,用不到的或很少用到的,了解就够了,不会去深入研究和讨论,当然对系统感兴趣的程序员就另外说了。


网络框架层级不同

程序员所讨论的sql、并发、框架、架构之类的,从ISO模型来看,属于应用层,而路由属于链路层,一个偏硬件,一个偏软件。我们接触比较广泛的就是应用层面的程序员,所以会感觉讨论比较多的是sql之类的知识。硬件方面的知识,实践起来比较难,所以一半不怎么讨论,都是写文章交流经验。不像软件,实践容易,且软件实现方法更多不唯一,这也是讨论比较多的一方面原因吧。

程序员一般都是把重点放在业务逻辑上,所以在这方面锻炼的比较多,讨论的也比较多,但是也有小部分程序员讨论偏底层的知识。现在某些程序编程行业门槛也比较低了,比如前端开发,很多都不懂底层知识,根本讨论不起来。

我是非著名攻城狮,欢迎留言关注我,希望我的回答对你有所帮助!


非著名攻城狮


看了这位大叔的职业生涯,简直就是传奇的一生!崇拜之情油然而生,不由得停下了正在敲击键盘的双手,思绪进入“如果我有这么厉害的技术那么我会...”的幻境之中,开始意淫起来。。。

突然,产品经理来了,让我给他把一个用户的数据给修改一下。我打开MySQL客户端工具,并连接上了线上的库,写了一条sql:“select * from user where user_id = 123”,然后按照产品经理的要求把这条数据给修改了。然后继续回到我的idea上开发APP这个版本要迭代的功能。

回归到题主的问题,为什么不讨论路由、操作系统?个人认为有以下几点可以讨论一下:

不会底层操作系统知识

这个是真的不会,大多数人都不会,除了在大学期间学的计算机原理、操作系统这些知识以外,工作以后真的很难接触到这些东西了。就算能接触到一些,也是一些皮毛。大多数人毕业之后都从事软件开发了,个人认为这也是国内硬件普遍较差于软件的一个原因。

应用开发

题中说的sql、并发、框架、架构这些都是基于应用开发,属于软件层面。99%的公司根本不需要了解所谓的路由、操作系统,也不会给你时间去琢磨这些东西,工作中也用不到。但是sql、并发、框架、架构却是每一个应用开发都需要的知识,而且门槛也低。是个人就会用,平时接触最多的知识就是这一块了,本着解决问题为出发点,自然讨论的就是这些东西了。

大神就那么几个

还有,大家不要觉得人家就很牛逼,自己就很菜。人家确实牛逼,和人家比自己确实也很菜。但是这不是思考问题的点。本是芸芸众生,之所以出名,就是因为他是技术大神,是属于金字塔顶部的那么几个人中的一个。我们要做的就是不断的往上爬,不断学习,精进技术。

以上是我个人的一些观点,欢迎大家继续讨论~


java架构设计


程序员一般率属于企业级公司的研发部人员,从事软件开发性质的工作。注意不是研发而是开发。

顾名思义。程序员是开发人员,开发软件的基层人员。就是通过一些写好的固定的计算机语言组装自己想要的想法、需求等。而在这个组装过程中的技术就是体现程序员能力的强弱。

sql语句的组装、并发线程的处理、软件框架的搭配使用都是个人能力的丰富体现。也是程序员在工作中必须要学会的知识点的。

一般人都是活谈论自己的长处,不会去过多的解释讨论自身的短处。而路由、操作系统,讲真。软件行业中的大部分程序员都不会接触或者深入学习这部分知识点。

讨论需要大家的附和以及各抒己见,你讨论一个别人不会的东西。自然就很无趣。这也是很少开发人员讨论路由、操作系统的原因。

小编只是开发人员程序员。对于研发人员不甚清楚。

些许拙见,供您参考。

从事互联网开发多年,欢迎大家骚扰


凯腾凯


程序员谈论的哪些话题居多,应该是由市场大环境决定的吧。

我在做网络之前,也做过一段时间的嵌入式开发,针对题中所提到的,说一下我自己的看法吧。

SQL,并发,框架,结构和操作系统相比,孰轻孰重?

想要上线一个完整的应用,需要搞清楚客户提出的需求,做好产品规划,然后制定框架,再通过代码块实现具体的功能,最后完成优化工作。

在整个过程中,SQL调用数据库里的信息,通过线程并发的方式提升性能,搭建软件框架使应用结构化,条理分明利于开发。至于架构比较特殊,设计架构的另有一群人,他们被称作系统架构师,程序员想要成为系统架构师的,还是要经历一番彻骨寒的。

所以,像SQL,并发这些东西,都是从如何开发某种针对特定场景,来实现某项功能的应用而生衍生出来的问题。注意,是开发,不是研发,这点很重要。

那又该怎么看带路由,操作系统这些东西呢?

实话实说,这确实没什么讨论的必要,一个只考虑产品特性的程序员,需要知道路由经过了多少跳才到达服务器吗?不管是在OSPF还是IS-IS的协议网络下都不影响他编程;在windows的环境下编一个C++或者java的程序,有现成的IDE为什么要去搞懂windows的操作系统呢?

这些东西作为茶余饭后的谈资还可以聊聊,但放在工作中纯属给自己找不痛快了。

当然了,就像我前边说的,如果不是搞开发,是要搞研发。那就是另外一种情况了,这样的工程师需要对基础知识了解的滚瓜烂熟,除了操作系统内核,数电模电,网络协议都要有一定的了解和认知。


综上所述,程序员聊的技术问题大部分是和自己工作内容息息相关的。讨论深层次内容的也有,只是平日接触的机会不太多罢了。

至于有人说的国内程序员比不上国外IT人士的言论,我只想说不能一棒子全都敲死,毕竟我们发展的比较晚,中高级的程序员占比确实还是比较少的。但我们总在进步不是吗?阿里腾讯的大牛放眼国际还是很强的一股存在。

还有,对那些喜欢灌完鸡汤说梦想的,我表示我也有梦想,想搞一个比IOS还牛皮的操作系统,但我也得先吃饱肚子,不然梦想就只能成为“梦”和“想”了。


爱思考的奥特曼


操作系统分不同的应用场景,不是只有手机,电脑上跑的才叫操作系统,中国是世界电子产业大国,全世界至少70%的微处理器都被中国人买走了,中国工程师出色的设计能力,才是这些电子产品物美价廉的保障。设计微处理器程序的工程师都是有操作系统思维的,但很多批量产品都不上操作系统的,哪怕是像uCos这样的简单系统也不用,为了节约成本,甚至用汇编语言写程序。中国不缺写操作系统的工程师,缺的是市场,做个板子,烧个安卓就可以卖钱了,谁会去研发操作系统?平时都加班赶工期,谁没事闲得去自己写个操作系统?或许等80,90这代工程师老了,没事干了,闲得荒了,搞个系统玩玩还是可能的。目前也只能是华为,小米…这类公司才可能有点动力去试试。至于路由技术,中国通讯技术,巨大的网络数据交换环境,又有硬件技术大环境…做路由的工程师怎么可能会少?只是大多数应用开发都用不着这么强大的数据处理能力,成本,还是成本!中国在大型数据交换处理方面技术积累还是可以的,12306,双11…


王耀兴3


路由、操作系统不关程序员的事

路由设置是网络工程师的事,操作系统配置、优化、标准化是系统运维的事。程序员更关心的,是产品功能、业务逻辑和研发工具。


不过实话实说,如果一个程序员,热衷于讨论sql、并发、框架、架构,我觉得这个程序员,已经离架构师不远了,应该也会逐渐关心网络路由和操作系统到的底层知识。


起码,我从业这么多年,热衷于讨论sql、并发、框架、架构的程序员,真是没见过几个。架构、并发、框架倒是挺多人爱聊的,sql其实没多少人爱聊。


实际上,sql倒是挺有技术含量的,但是和业务关联度太高,不清楚业务的,根本没啥可聊的。如果要聊技术,数据库原理、范式的技术难度太高了,不好聊。


分享到:


相關文章: