浅谈Spring MVC 过时了吗?

科技创新fanta2 发表了文章 • 0 个评论 • 24 次浏览 • 5 天前 • 来自相关话题

正文如下:问题:Spring MVC 过时了吗?我看了一下这个问题的日志,这个问题是2018年9月提出来的。那么好,首先给出结论:Spring MVC没有过时,它仍然是当前主流的Java Web开发框架。但是,在这个时间点谈论这个问题就有点意思了。题主提出这个... ...查看全部

正文如下:

问题:Spring MVC 过时了吗?

我看了一下这个问题的日志,这个问题是2018年9月提出来的。

那么好,首先给出结论:Spring MVC没有过时,它仍然是当前主流的Java Web开发框架。但是,在这个时间点谈论这个问题就有点意思了。题主提出这个问题的时候,可能都没有意识到这个问题正处在Web开发思想变革的分水岭上。

首先,说一下答主这个问题描述中不准确的地方,后面再着重说说现在的分水岭。

现在jsp似乎已经渐渐淡出大家的视野。web开发朝着前后端分离的方向去了

这个没错。但是,

像spring mvc这样前后端耦合较大的框架是否过时了?

这个疑问就没有必要了。

Spring MVC前后端耦合不大啊。你完全可以使用@RestController。

@RestControlleris a specialized version of the controller. It includes the @Controller and @ResponseBody annotations and as a result, simplifies the controller implementation:

@RestController@RequestMapping(“books-rest”)public class SimpleBookRestController {           @GetMapping(“/{id}”, produces = “application/json”)     public Book getBook(@PathVariable int id) {         return findBookById(id);     }       private Book findBookById(int id) {         // …    } }

前后端分离,没有JSP或其他服务器端模板引擎,只有HTTP上传输的JSON交互,那么必然用@RestController。JSON是服务器端MVC框架的V,是前端MVC框架的M。

————–重点开始————-

下面说一下为什么现在这个问题比较有意思了。

因为从Spring 5开始,大量引入了Reactive概念,也就是响应式思想!!!

所以,Spring 4及以前版本长期存在的Spring MVC有了一个并列同时存在的新的编程模型,Spring WebFlux。

上图,左侧是新的Spring WebFlux,可以看出一切都是Reactive的。右侧是我们熟悉的Spring MVC,是基于Servlet API的。

这个问题下的其他回答,竟然还在问:

那你是觉得哪个框架替代了Spring MVC?

你能找出其他框架来代替它吗?如果没有,那就没有过时

你们最近半年访问过Spring 官网首页吗?

特别是2018的Spring One大会,大家注意到了吗?看一下所有的话题(session),多少题目里都包含了Reactive:

所以,如果Spring认定了Reactive是趋势的话,传统的Spring MVC应该是处于Deprecated状态。上图中两种模型可能会长期并存,但是Spring 6以后就不好说了~

在今年的Spring One大会上,Spring提出了一整套Reactive技术,Spring 自己称作Reactive Revolution:

还有更多的Reactive思想涌现出来了,大家要保持关注。

不仅仅是服务器端,前端的Reactive也很活跃,例如Rxjs。

正如Spring自己定义的那样,现在是一场Reactive Revolution,这场思想革命波及Web开发的全栈,数据库=>服务器=>前端。

所以,此时想一下Spring MVC是否过时是个很有意思的问题。它仍是最主流最成熟的Java服务器端MVC框架,但它并不代表Web进化的方向。

评论区有人提到Vert.x。到目前Vert.x也只是个tool-kit,不适一整套框架。现在技术讲求的是生态环境,Spring现在基本上是占有生态优势,有Spring MVC的普及率。不管Spring MVC还是Web Flux,都能融入这个生态,Spring Boot都会给予先天的支持。

回复@无忧

编程首先思想活动,然后才是敲代码。学习编程的语言、框架等等,首先是思想跟上。比如前端用惯了JQuery的人,直接操作DOM,让他们学习Angular、VUE这总双向绑定,肯定也会觉得反直觉。但是说到底,思想在进步,落后的思想就会觉得先进思想反直觉。民国时期,多少人看到女人穿泳衣游泳也觉得反直觉,但是现在都是正常的。

生态也不是一天建成的,如果是个小团队提出的框架,我可能觉得会凉。但是以Spring多少年在Web开发上的积淀,然后能够自我革新提出Webflux,并且打算建立一整套Reacitve生态,我觉得成为主流还是很有可能的。还是拿前端的例子来说,为啥大家十年如一日JQuery用的好好的,然后接受Angularjs的双向绑定,因为首先是Google提出来的,它自己内部就有大量应用。为啥Angularjs用的好好的,突然又开始用React的Virtual DOM?因为首先是Facebook提出来的,它自己有成功的应用。

转载于公众号“程序猿DD”


你真的了解 OpenJDK 吗?

科技创新小小鸟a 发表了文章 • 0 个评论 • 33 次浏览 • 5 天前 • 来自相关话题

上周因为Java 16的发布,我们推了两篇关于Java 16的解读,以及为什么大家还要用Java 8的思考。有不少读者留言说到了openjdk,问了很多关于此的关系。对于JDK的开源体系,还是有很多开发者的认识非常模糊。所以,小编今天就带大家一起了解下有关Op... ...查看全部

上周因为Java 16的发布,我们推了两篇关于Java 16的解读,以及为什么大家还要用Java 8的思考。有不少读者留言说到了openjdk,问了很多关于此的关系。对于JDK的开源体系,还是有很多开发者的认识非常模糊。所以,小编今天就带大家一起了解下有关OpenJDK 的一些常见的疑问及官方问答。

如果上两篇文章还没有读过的,也可以通过下面的链接直达:

关于开源
  • Oracle对于支持Java开源的计划是什么?

Oracle打算继续支持开源和开放标准。Oracle一直致力于为最终用户提供选择、灵活性和较低的计算成本,而且无论是在开源软件还是非开源软件的环境中,都不会过分强调使用开放标准的重要性。

  • Oracle实行开源开发吗?

Oracle正在领导或参与大量的开源项目。请看http://oss.oracle.com有关Oracle的开放源代码和更多信息,请参阅。

  • 怎么能进一步了解Oracle对开源和开放标准的看法?

当然可以,通过http://www.oracle.com/technetwork/oramag/2010/o40interview-086226.html可以看到Oracle首席企业架构师Edward Screven关于开源和开放标准重要性的采访。

Oracle 对于OpenJDK的计划
  • Oracle对OpenJDK社区有什么计划?

作为OpenJDK项目的一部分,Oracle计划与Java社区一起继续开发下一版本的Java SE平台。OpenJDK是Oracle计划参与的唯一一个开源Java SE实现。

  • Oracle是否致力于OpenJDK?

对。Oracle仍然致力于将OpenJDK作为最佳的开源Java实现,我们将继续改进OpenJDK并欢迎外部贡献者。

  • 能详细介绍一下Oracle对OpenJDK的计划吗?

JavaOne 2010 通过发布两个版本加速了Java Se的可用性,一个在2011年,一个在2012年。相应的OpenJDK版本将继续作为the Oracle Java Development Kit (JDK) 7 和 JDK 8 的基础。有Oracle计划的更多信息,可以访问http://blogs.oracle.com/henrik/2010/10/java_roadmap_from_javaone_2010.html.

  • 什么是JDK7?

JDK7是Oracle用于实现下一版本JavaSE 平台的。OpenJDK开源社区中的JDK7项目是Oracle与更广泛的Java和开源社区一起致力于实现JavaSE 7 JSR 中指定的特性的地方。

  • JRockit会怎么样?它会成为OpenJDK的一部分吗?

Oracle工程师目前正在努力将 Oracle Java HotSpot Java Virtual Machine (JVM)和the Oracle JRockit JVM 合并到一个聚合产品中,该产品充分利用了这些市场领先的实现的最佳特性。Oracle计划将组合的结果贡献给OpenJDK。

  • Oracle会改变OpenJDK许可模式吗?

不会。OpenJDK社区在Oracle以及其他公司、研究人员和个人的贡献下继续蓬勃发展,基于GPL的许可模式是这一成功的一个重要部分。Oracle没有改变的计划。

  • 听说IBM要加入OpenJDK?

Oracle和IBM在2010年10月宣布,将在OpenJDK社区合作开发领先的开源Java SE实现,并使OpenJDK社区成为开源Java SE开发的主要场所。Oracle和IBM将支持Java One 2010之前提出的OpenJDK开发路线图,该路线图加快了Java SE在整个开源社区的可用性。Oracle和IBM之间的合作建立在OpenJDK作为Java SE主要开发平台的成功,以及Oracle和IBM对Java社区的长期贡献的基础上。有关路线图和Oracle计划的更多信息,请访问http://blogs.oracle.com/henrik/2010/10/java_roadmap_from_javaone_2010.html.

关于OpenJDK用户和贡献者
  • 谁使用OpenJDK?

主要的Linux发行版,如Ubuntu、Fedora或Red Hat Enterprise Linux,都提供OpenJDK作为默认的Java SE实现。此外,Eclipse Community Survey 2010发现,虽然大多数Java开发人员使用Oracle的商业JDK版本,但参与调查的21%的开发人员使用OpenJDK。最后但并非最不重要的是,许多学术机构发表研究报告都是基于OpenJDK。

  • 谁对OpenJDK有贡献?

大多数OpenJDK贡献者都是受雇于Oracle等公司的工程师。此外,OpenJDK社区还展示了学术界、开源操作系统发行版开发人员以及渴望贡献的个人软件开发人员的强大实力。Oracle没有改变贡献模式的计划,并乐于接受新的贡献者。为了学习如何对OpenJDK做出贡献,请参见http://openjdk.java.net/contribute/。

  • 为什么Oracle要参与OpenJDK?

Oracle致力于使用开源模型开发JDK代码库。Oracle致力于这种工作方式,因为它可以通过降低参与的困难来形成和引入技术发展的最佳想法。

  • Oracle是否欢迎新的贡献者加入OpenJDK?

当然肯定,但是要准备做很多的学习!进入这个项目的一个好方法是订阅一个关于自己感兴趣的主题的邮件列表,观看讨论和评论以了解在该领域工作的开发人员的基调,然后开始审查其他OpenJDK社区成员提出的补丁。

兼容性
  • Oracle是否将Java SE 6 TCK 提供给OpenJDK社区?

对于满足OpenJDK TCK许可协议要求的实现,在一致性组的OpenJDK网站上记录了获取TCK的过程:http://openjdk.java.net/groups/conformance/JckAccess/index.html.

  • 如何测试基于OpenJDK的实现是否与Java SE兼容?

要测试实现与Java SE规范的兼容性,需要向Oracle申请以获得对测试兼容性工具包(TCK)的访问权。Oracle通过各种商业和非商业协议提供Java SE TCK。如果用户的实现满足OpenJDK社区TCK许可协议的条件,那么可以根据这些条款请求访问JCK。

  • 通过OpenJDK-TCK许可协议获得Java SE 6 TCK 的组织和个人列表是否可用?

是的,在 http://openjdk.java.net/groups/conformance/JckAccess/jck-access.html.

  • 我可以使用OpenJDK作为基础来创建完全满足Java SE 6 TCK 兼容性要求的开源构建吗?

对。第一个这样的构建是基于OpenJDK6项目中发布的源代码的,发布于2008年。

对OpenJDK的贡献
  • Oracle是否计划改变开发人员参与OpenJDK的方式?

不。OpenJDK项目继续接受现有贡献者协议下的捐款,并接受相同条款下的新贡献者。目前还没有改变参与模式的计划。

  • 是否应该继续讨论自己在开放JDK中的项目中的想法?

当然!如果用户希望OpenJDK开发人员了解自己的想法,请花一些时间找到最合适的OpenJDK项目,以将其引入并确保访问此页面,该页面描述了如何提供一般性的贡献。许多开发人员为OpenJDK和Oracle中的项目提供了宝贵的想法,希望这些想法能够继续下去。

  • 在什么条件下可以参加OpenJDK邮件列表讨论?

为了参与OpenJDK邮件列表讨论,用户需要订阅自己想要讨论自己的想法的邮件列表。对邮件列表的参与受OpenJDK网站使用条款的约束。

  • 如果用户不在Oracle工作,可以参加OpenJDK吗?

当然,用户可以在与其他贡献者相同的条件下参与。详情可见:http://openjdk.org/contribute

  • 用户能否继续讨论OpenJDK邮件列表中的错误修复和功能增强?

是的,Oracle欢迎每个人的参与。

许可
  • OpenJDK发布的开源许可证是什么?

GPL v2用于几乎所有的虚拟机,GPL v2+类路径异常用于类库和虚拟机中公开公共API的那些部分。

  • 如何知道哪个许可证适用于OpenJDK中给定的源代码文件?

每个源代码文件都有单独的许可证-请查找包含许可证信息的版权头。

  • 为什么不使用不同的开源许可模式呢?

OpenJDK创建时,它采用了当时最流行的开源VM许可模式。多年来,许可模式为项目提供了良好的服务,确保了项目的稳定增长和采用,同时最大限度地降低了专有分叉和碎片化的风险。

  • 可以下载OpenJDK源代码吗?

当然可以

  • 能用它做什么有什么限制吗?

OpenJDK是在一个众所周知的开源许可模型下发布的,它对用户运行OpenJDK的能力没有任何限制。请查看OpenJDK项目网站的法律部分,了解用户的权利和义务范围。

  • 用户能在OpenJDK邮件列表上获得具体的法律建议或法律问题的答案吗?

一般来说,没有。OpenJDK邮件列表用于围绕特定OpenJDK项目开发的技术工作。

JDK 7 & JDK 8
  • OpenJDK构建中的特性是否也可以在Java SE的其他实现中使用?

Java SE的其他兼容实现包含JCP中为平台定义的特性,因此它将取决于Oracle向Java SE专家组建议的哪些特性被接受以包含在平台中。或者,这可能取决于特性本身是被判断为特定于实现的(比如性能增强),还是所有实现都希望包含的特性(比如新的开发人员API)。

  • Java开发冻结了吗?

绝对不是!Oracle工程师和OpenJDK社区正忙于JDk7以及JDk8项目,如Lambda项目和Jigsaw项目。

  • Java编程语言还会继续发展吗?

对。Oracle正积极致力于主要的语言和平台改进,比如Lambda项目、Coin项目、模块化、并行库等等。自收购以来,Oracle加大了在这些领域的投资。

  • 用户可以使用OpenJDK构建来试验动态字节码指令之类的新特性吗?

当然。用户可以按照构建说明自己构建OpenJDK二进制文件,也可以节省时间并从中获取最新JDk7构建的二进制快照版本.

  • 用户想在自己的产品代码中使用即将推出的JDk7特性。可以依赖JDK7二进制快照版本的所有特性来进入最终版本吗?

不一定:虽然jdk7二进制快照发行版包含许多特性,可以从更广泛的Java开发人员那里获得反馈,但并非所有这些特性都可以进入最终发行版,这取决于开发人员的反馈以及其他方面。换句话说,如果用户喜欢一个特性,请告诉开发者-正面反馈至少和负面反馈一样受欢迎!

Oracle JDK 和 OpenJDK
  • OracleJDK是基于OpenJDK的吗?

对。OracleJDK是基于OpenJDK的源代码。此外,它还包含封闭源代码组件。最终的结果是根据二进制代码许可证授权的。

  • 什么是二进制代码许可证?

它是Sun用于JDK和JRE(以及许多其他Java产品)的许可证。用户必须在下载/安装Java之前接受许可证。

  • 下载OpenJDK需要多少钱?

Oracle在开源许可模式下提供OpenJDK源代码。它既是免费的,又是免费的(如在freedom中)软件。

  • OpenJDK难道不让其他JavaSE实吗?

不,Java用户可以从多个供应商在各种商业模型下提供的兼容JavaSE实现的选择中获益。不同的兼容JavaSE实现在诸如调优到不同的体系结构、性能、工具和部署等方面竞争。


程序员,都是内卷之王!

科技创新大兴 发表了文章 • 0 个评论 • 22 次浏览 • 5 天前 • 来自相关话题

前言最近看到这个问题被谈得很多。铺天盖地的35岁、内卷化、996。这里也想谈谈自己的想法。内卷化的形成内卷为什么会形成呢?从公司内部的角度来说,同事之间做的事情也缺少独特性。那么既然每个人都差不多,那么与其招一个工作十年的人,还不如招个应届生。虽然说从代码的产... ...查看全部


微信截图_20210416143250.png前言

最近看到这个问题被谈得很多。铺天盖地的35岁、内卷化、996。这里也想谈谈自己的想法。

内卷化的形成

内卷为什么会形成呢?从公司内部的角度来说,同事之间做的事情也缺少独特性。那么既然每个人都差不多,那么与其招一个工作十年的人,还不如招个应届生。虽然说从代码的产出和质量来说,工作十年的工程师比应届生理论上来说应该是好很多, 但是如果工作十年的人缺少积累,缺少系统性的理解,那么跟应届生比较可能多了一些广度(因为换过工作)。但是深度上来说并没有本质上的区别。那么这个时候就会发生内卷了,公司不停的把老员工换成新员工,老员工也不停的跳槽导致缺乏积累,长此以往公司很难得到优质的员工,员工也很难得到深入的知识和技能的积累。

如果把这个发到公司之间,那么很多公司间的竞争也是重复性的,你做个朋友圈,那么我就做个拼圈,如果你做个金融服务,那么我也做一个。公司的产品决策并不完全是跟公司本身的基因和方向决定,而是因为什么方向火而赶鸭子上架。公司在做决策的时候考虑的是最少的投资和最快的回报,而不是靠着自己的特性而做长久的、独特的产品发展。在做这样重复建设的时候,公司可能会在竞争对手那里挖上那么几个牛人,然后其他的(包括UI)都照抄就好。长此以往,用户、客户很难用到更好的产品,而公司也很难积累出做出好的产品的能力。

从内卷到996

既然公司间都内卷了,公司做的产品跟别人的产品差不多,那么拼的就是手速了。如果竞争对手和你拿的投资差不多,那么招的人数也接近,如果竞争对手都996了,那么你955岂不是输在了起跑线上?同理,大一点的公司内部,团队之间也没有太多壁垒和界限,如果说你团队的输出能够替代另一个团队,那么让自己的团队拼一拼,把地盘占好,年底涨工资也是一个很美滋滋的事情。但是如果你这样做,别的团队也这样做,长此以往就没人不996了,最后你996也不够,只能007了。

我如何看待996

我今年工作刚好十年。我刚毕业第一年在阿里工作,团队的任务还是比较重,但是我一周也就两天会在公司吃晚饭。周末和晚上我也会花时间学习感兴趣的东西(当时是机器学习,还写了不少博客),真正晚上工作的时间不是很多。后来去了一个外企,基本上每天5点公司就没人了,我晚上就看看开源的项目,有时间贡献一下。过了两年我去了美国,第一年公司IPO前还比较忙,有时候晚上要在公司吃饭加个班啥的,后面IPO后公司也没人加班了,我周末和晚上不少时间都花在开源里面。最近这几年带团队,白天的会比较早,一周晚上也有那么几天有晚上的会,除了陪陪家人以外,有时间我还是会继续弄弄开源,看看论文和书。

我对于公司、团队级别的强制996是反对的,因为工程师做的事情应该是在更轻松的氛围里面创新,而不是被按在工位前出活。有些工作是需要很多的思考,特别是架构设计,还有职责划分之类的。996会让人缺少了思考的空间,对于那些资深的工程师或者架构师来讲,缺少思考的空间会导致最后出来的架构不是最优的,因为好的设计应该是想出来的而不是堆出来的,如果架构设计都出问题了,后面的工程部分会跟着错。对于管理方向的人也一样,如果缺少了思考的空间,管理者会更难为他人着想,更难思考团队到底需要和达到什么的目标,怎么做能够让公司受益等等。当你的时间都困在了工作中,长期来讲会产生工作的倦怠(burn out),对于身心、家庭、还有公司都不是什么好事。

但是另一方面我对于弹性的工作时间和短期的加班是可以接受的,比如说产品要发布了,或者客户有什么问题了,哪怕是周末或者晚上,我觉得也应该能够尽力帮忙,但是这样的加班节奏不应该是长期的、持续的、强制的。公司(或者管理者)不应该告诉员工这个时候加班,我的态度是,如果员工有一段时间特别忙,加班比较多,我会让他们去休个假,或者轻松一段时间。

我自己也一样,如果忙了一段时间,也需要从工作中脱离一下。因为忙碌的时间太久想要从中恢复很累,而且加班太多,导致心情不好的时候也会让家庭不开心,并且影响工作本身的效率。

工程师怎么避免内卷化

第一我觉得工程师要打好基础:不管是科班毕业还是转行。当你做上程序员的时候,就一定要打好自己的基础,基础包括:

  • -编程本身的技能:一定要写一手好程序,有好的编程习惯。

  • -写作、沟通的技能:能够写好的文档,做出清晰的沟通。

在工作的前几年,就要开始建立自己的社交圈,有一些值得信赖,互相学习、找工作可以互相内推的朋友,这样可以避免走很多的弯路。

在自己工作的范围内,看得比较深:因为你对于某一样东西有深入的理解后,学习浅一些的东西会很容易。比如说你做的是互联网的后台开发,那么深入理解一个或者几个分布式的系统很重要,如果做IOS app,那么对手机系统的内部工作应该是要很懂。

多阅读,多看看系统的知识,还有好的论文(比如说Google的论文):这里我并不推荐付费的网课,相对网课,看看那些原创的书,比如说DAIA,算法导论之类的。会比只是教你刷刷LeetCode要好得多。当然LeetCode也是可以做做,不过不应该把它作为人生的追求。也建议看看管理、商业类的书,比如说硅谷之火,创新者的窘境之类的。

我建议这些能力在工作的3年内培养。

3年后,在有了这些基础后,对于业界和行业的发展应该会看得更清楚,而不至于走错大方向,比如说大家都在做SaaS的时候,你不应该花时间去学习太多windows 桌面的软件开发;选择一条发展更快的技术路线应该是避免内卷化的一个很重要的选择,如果方向都选错了那么避免内卷也很难。

另外跳槽的时候应该注意积累,每次跳槽应该是能够有更加深入的技能,而不是看钱跳槽(钱会自然来的)。如果每次跳槽都是换个方向平移重来,可能会导致工作十年跟工作3年的输出类似。

关于技术方向选型的一些建议

我个人觉得未来的后端软件发展逃脱不了两样东西:第一是云,第二是开源。在大部分的时候是两者结合起来的,因为云本身也用了很多开源的软件。相比自己造轮子,使用开源,并且贡献开源(重点)应该是第一选择。把开源软件folk出来,自己搞一套我觉得并不是很可取。因为这样跟做闭源的区别也不是很大(当然你至少会对那个开源软件有深入的了解)。你的第一选择是,能否把一些贡献给反馈回开源的社区。

如果你选择贡献开源,最好选择贡献有社区的开源软件,其中以Apache或者CNCF为代表。因为有社区的开源软件会走得更长、也往往会更成功,作为一个这样(成功的)项目贡献者你的价值就会越大。


如果你刚毕业、或者工作时间还很短,建议选择更新一点的方向,比如说你现在想要做后端软件开发,Go/Rust会比Java更好,Java比C++也会更好。(我这里这样说不是为了搞语言之争,我也知道C++ ver.17 有很多新的特性,也本来就有很多市场)。

如果两个差不多的工作机会,做云上的软件开发(比如说一个给餐饮行业做管理的SaaS),会比做传统行业软件开发(比如给餐饮行业做桌面软件)要来得更好。因为一个发展更快,空间更大的行业的内卷化就会越少。

管理者:如何避免团队内卷化

作为管理者而言,在做好公司的任务之外,也需要尽力避免团队的内卷化。

首先说说加班,虽然说短时间的996会给团队带来(不少的)产出,不过从长时间来看,团队会因为倦怠和缺少进步而缺乏后劲。长时间的加班会让团队心情不好,钱给够是一个方面,但是钱很难买来长期的快乐(我的经验是涨工资的时候很开心,涨完了过段时间就平静了)。相对用钱去刺激加班(给1.5倍的工资,干两个人的活),我觉得更重要的是让团队成员真正能够得到发展,能够喜欢自己的工作,这样的效果很正向:公司能够得到工程师尽心尽力的产品,而工程师也能获得发展,并且过程很开心。作为管理者而言,你自己可以加班,但是不要要求团队总是和你一起加班,偶尔一次可以,总是这样的话,团队会变得低效和士气低落。

跟加班类似的,管理者也不应该认为员工的所有时间都属于公司的,应该尊重别人的休假、陪家人、生病等等的时间。

那么怎么能够让工程师更好的发展呢?管理者应该和工程师多沟通,多1-1,了解到别人的需求和想法,然后根据情况给出不同的机会(比如说承担某个重要的功能开发、在某个meetup上面讲一场技术专题、做一个更好的设计文档)。作为团队的管理者,不应该假设“给你做这个功能你就可以进步和开心了”。

其次,在面试的时候也不要有很多不恰当的要求,比如说觉得35岁以上、或者怀孕的人就不应该要之类的,在我看来35岁的程序员可以有非常厉害的输出,对这样的程序员的歧视首先是非常的没意义,其次也会加速内卷、社会更加不公平和完全不必要的焦虑(35岁焦虑)。对于公司而言应该是看大格局(怎么打造一个别人更喜欢的产品),而不是纠结于比较low的地方(如果招了一个刚结婚的人,未来一两年可能需要休几个月的产假;或者35岁的人有娃,需要花时间陪娃、接娃上下课)。

草草写一点想法抛转引玉一下。

转载于公众号“码个蛋”


给ToB产业再添一把“火” 企业服务万亿空间谁在撬动最大那块蛋糕?

科技创新大兴 发表了文章 • 0 个评论 • 20 次浏览 • 5 天前 • 来自相关话题

目前中国经济正处于宏观环境和新旧动能转换的关键时期,2020年我国提出的新基建、以及十四五规划中加速数字经济发展,推进数字产业化和产业数字化的顶层设计,都彰显了中国经济的新一轮增长将更依赖于数字化转型和数字经济。尽管新冠疫情和地缘政治博弈让全球经济环境恶化,但... ...查看全部

目前中国经济正处于宏观环境和新旧动能转换的关键时期,2020年我国提出的新基建、以及十四五规划中加速数字经济发展,推进数字产业化和产业数字化的顶层设计,都彰显了中国经济的新一轮增长将更依赖于数字化转型和数字经济。尽管新冠疫情和地缘政治博弈让全球经济环境恶化,但成功控制疫情的中国将继续成为推动全球经济增长的巨大引擎,中国经济未来发展的巨大红利依然存在。

微信图片_20210318175050.jpg

企业要想抓住这一时期的发展红利,获得可持续发展与增长,必须突破其自身发展的瓶颈和障碍。IDC研究指出,以技术革新为基础,企业的数智化转型对内要深入到关键的业务流程及管理运营中,对外要延伸到客户触点所在的多样化场景中。这意味着,信息技术在企业中的应用,也需要从专注于业务支撑,侧重企业内部,进化到专注于业务本身,侧重企业间、社会间的结网协同。

根据IDC市场分析,2020年到2023年中国SaaS CAGR 35%,PaaS CAGR 47%。产业结构方面,全球公有云市场IaaS 24%,PaaS 16%,SaaS 60%,而中国的情况则为IaaS 63%,PaaS 6.4%,SaaS 30.6%,说明未来中国市场的PaaS和SaaS具有巨大的成长空间。对于已身处国内企业云服务龙头地位(IDC 2020年报告,用友在国内SaaS第一,财务云、工业云、供应链市场第一)的用友而言,数字化、国产化、全球化的大势之下,企业服务这个赛道上,SaaS,PaaS,BaaS有万亿空间,ERP空间有几百亿,国产替代也有几百亿空间。

数字经济时代,企业要拥抱创新,重构发展力,需要一个强大的数智化基础设施来支撑。而通过技术驱动,利用新一代数字化和智能化技术,实现企业业务创新和管理变革的BIP(商业创新平台,Business Innovation Platform)的出现就显得恰逢其时。正如用友的掌舵人王文京所说,数智化时代对企业而言最为便捷的路径,就是通过商业创新的平台,让平台上的企业、组织与个人可以随需、随时、随地开展商业创新,突破技术、商业、成本三道屏障,使商业创新变得更简单、便捷、大众化、社会化。

2020年,生鲜零售面临前所未有的挑战,利润下滑、客流骤降。但一家西北地区的精品水果超市——果果家却实现了营业额的翻番。疫情期间,果果家各区域门店通过BIP自建商城,以“在线”形式为老顾客的日常生活提供保障,建立了一套快捷、高效的生鲜O2O销售模式。同时,果果家还通过营销云服务启用了现成的拼团、秒杀、营销裂变、会员营销等等社区运营方式,迅速抢占区域水果生鲜的电商市场,从而实现疫情期间的“C位出道”。

疫情催化之下,制造业企业也进一步认识到了工业互联网平台对复工复产、提质增效的重要意义。中国龙工控股有限公司是工程机械制造领域的代表性企业,龙工机械做了车联网,实现10000+台工程车辆、1200多条/分钟的实时数据、50万+参数实时监控。即使在野外的施工现场,也可以通过5G技术实现远程锁机,后台人员可以及时发现车辆的健康状况,快速发现故障,快速定位。

果果家、龙工的“逆势上扬”并非偶然,因为企业只要明确思路,推进以数智化为基础的商业创新,从产品、业务到组织、管理,都可以开放、灵活的享受技术带来的便捷和高效,实现可持续发展。

可以预见,随着新基建与数字化转型发展战略的持续推进,ToB互联网产业正在进入高速发展期,国内企业级应用服务的市场需求将持续旺盛,谁能更准确的把握企业痛点场景,用更贴合企业业务发展逻辑和组织管理的技术服务加以驱动,谁就能在这个宽阔的舞台上获得最多的聚光灯。

*本文图片均来源于网络


作为程序员的你,这些一直接触的词都念对了吗?

科技创新小小鸟a 发表了文章 • 0 个评论 • 23 次浏览 • 5 天前 • 来自相关话题

很多时候,大家可能都觉得程序员英文一定很好。因为我们每天都对着满屏幕的英文,噼里啪啦一整天。讨论个需求,还是不是冒几个单词,产品MM和运营JJ们,心理几万头曹尼玛奔过:能不能讲人话!很多时候,我们自信满满的说出一个又一个高大上的操作名、技术名,看似装逼成功!但... ...查看全部

很多时候,大家可能都觉得程序员英文一定很好。因为我们每天都对着满屏幕的英文,噼里啪啦一整天。讨论个需求,还是不是冒几个单词,产品MM和运营JJ们,心理几万头曹尼玛奔过:能不能讲人话!

很多时候,我们自信满满的说出一个又一个高大上的操作名、技术名,看似装逼成功!但是我们都说对了吗?

下面,我们一起来重现一下这些场景,看看你都对了几个?

第一轮

单词一:Archive

Archive:档案、归档。常见于一些管理类需求或是运维相关日常。

正确发音:

  • 英:[ˈɑːkaɪv]

  • 美:[ˈɑːrkaɪv]

单词二:Digest

Digest:字面意思为摘要、汇编。常见于一些数字证书、认证算法相关的内容中。比如:HTTP的认证方式中有一种就叫Digest认证,是Basic认证的升级版。

正确发音:

  • 英:[daɪˈdʒest , ˈdaɪdʒest]

  • 美:[daɪˈdʒest , ˈdaɪdʒest]

第二轮

单词三:Adobe

Adobe:一家专注于图形设计、影像编辑与网络开发的著名软件公司。PhotoShop、Illustrator、Dreamweaver等设计类著名软件均为它们开发。如果您对设计师MM感兴趣?那么千万别再念错了!

正确发音:

  • 英:[əˈdəʊbi]

  • 美:[əˈdoʊbi]


单词四:Cache

Cache:缓存。不论在讨论硬件领域还是软件领域,前端还是后端技术时候,当碰到性能相关难题的时候,经常出现的一个词。你念对了吗?

正确发音:

  • 英:[kæʃ]

  • 美:[kæʃ]

第三轮

单词五:Apache

Apache:一款应用服务的名称,也是Java领域一个重要开源基金会的名称。近几年有好几个国内开源项目也都加入了Apache基金会,比如:我们所熟知的Dubbo、Skywalking!

正确发音:

  • 英:[əˈpætʃi] 

  • 美:[əˈpætʃi]

单词六:Suite

Suite:套件。比较常见于测试小组中,比如:Test Suite,意为测试套件、测试集合,代表已一组Test Case(测试用例)。

正确发音:

  • 英:[ˈɑːkaɪv]

  • 美:[ˈɑːrkaɪv]

转载于公众号“程序猿DD”


链家前DBA判刑7年!你还敢不敢删库?

科技创新fanta2 发表了文章 • 0 个评论 • 22 次浏览 • 5 天前 • 来自相关话题

前几日和同事吐槽工作中的难点,一位同事情不自禁的来了句,老子真想删库走人!不由想起去年年初时候,一家名为微盟的上海公司,因为一位运维人员一气之下删库的行为,导致了最后整个公司数亿元的损失。那么是不是可以毫无顾忌的对公司做出这种事呢?当然不是,这不,近日链家公布... ...查看全部

前几日和同事吐槽工作中的难点,一位同事情不自禁的来了句,老子真想删库走人!

不由想起去年年初时候,一家名为微盟的上海公司,因为一位运维人员一气之下删库的行为,导致了最后整个公司数亿元的损失。

那么是不是可以毫无顾忌的对公司做出这种事呢?当然不是,这不,近日链家公布,公司的前DBA恶意删除9TB数据一案二审宣判,DBA被判7年刑期!

具体案件情况如下:

韩某,男,40岁(1980年11月25日出生),汉族,出生地北京市,大学文化,案发前系链家网(北京)科技有限公司数据库管理员。

2018年6月4日14时许,韩某在位于北京市海淀区上地三街福道大厦三层的链家网(北京)科技有限公司(以下简称链家公司),利用其担任链家公司数据库管理员并掌握公司财务系统root权限的便利,登录公司财务系统服务器删除了财务数据及相关应用程序,致使公司财务系统无法登录。链家公司为恢复数据及重新构建财务系统共计花费人民币18万元。

完整事情经过如下:


案发后链家公司内部调查发现因有权限进入公司财务系统的只有技术保障部五个人,公司在内部进行了初步排查,收集了这五个人的笔记本电脑,其中四人主动上交了个人笔记本电脑及密码,但韩某拒不交代自己的笔记本电脑密码,也对破坏的事情拒不承认,有重大嫌疑。

随后其代表公司来报案,被破坏的服务器存放着公司成立以来所有的财务数据,影响到公司人员的工资发放等,对公司整个运行有非常重要的意义。

后经警方调查发现,韩某2018年2月到公司负责财务系统维护,5月被调整至技术保障部,工作地点从朝阳区酒仙桥总部调整至海淀区上地福道大厦,韩某对组织调整有意见,觉得自己不受重视,调整之后消极怠工,经常迟到早退,也有旷工现象。

同时警方经查看公司监控录像,韩某于2018年6月4日11点左右到福道大厦三层西侧自己的工作区域上班,当天18时左右离开公司。时间上正是符合数据被删时间。

但韩某始终不承认该行为。北京市海淀区人民法院一审判定,韩某违反国家规定,对计算机信息系统中存储的数据和应用程序进行删除,造成计算机信息系统不能正常运行,后果特别严重,其行为已构成破坏计算机信息系统罪,依法应予惩处。依照《中华人民共和国刑法》第二百八十六条第一款、第二款之规定,判决:韩某犯破坏计算机信息系统罪,判处有期徒刑七年。

韩某不服上诉,理由是:

监控录像等证据证明其没有实施犯罪。其不是可以进入被害单位内网且有Yggdrasil主机名的唯一用户。证明其电脑中存在sherd及rm命令的证据之间存在矛盾。在其电脑中检索到的关于Mac地址EA:36:33:43:78:88的记录与其无关,有可能是该MAC地址的设备访问其电脑留下的。被害单位刻意制造维修费用,且没有证据证明被害单位损失,故其不认可被害人的损失数额。

随后,国家信息中心电子数据司法鉴定中心司法鉴定意见书证明:

2018年6月4日14时至15时期间,IP地址为10.33.35.160的终端用户远程以root身份登录链家公司服务器并通过执行rm、shred命令删除数据文件、擦除操作日志等,而该IP地址于6月4日14时17分被分配给MAC地址为EA-36-33-43-78-88、主机名为Yggdrasil的设备使用。该IP地址为链家公司福道大厦3楼交换机所覆盖网络区域,而韩某具有root权限且于案发当日在上述IP地址的网络覆盖区域内上班。

经司法鉴定确认,韩某电脑的主机名为Yggdrasil,与登录服务器执行删除、擦除命令的电脑主机名一致;韩某电脑的MAC地址虽不是EA-36-33-43-78-88,但其电脑中安装有用于更改MAC地址的软件WiFiSpoof,且在其电脑的相关文件中检索到多条与上述MAC地址相关的记录。综合案发后韩某的表现,以及对具有类似权限人员所用电脑的鉴定结论等情况,能够确定韩某实施了删除链家公司财务系统服务器程序数据的行为。

对于韩某所提监控录像证明其没有实施犯罪的上诉理由,经查:视频服务器和涉案四台服务器均未与标准时间校准,无法判断监控时间与服务器时间的时间差,无法以视频时间和服务器时间排除韩某作案的可能。

最终北京市第一中级人民法院判定驳回上诉,维持原判!


相信韩某现在一定追悔莫及,以为凭着自己的小聪明和自己为是的小技术可以瞒天过海,殊不知法网恢恢疏而不漏,做错了事一定要付出代价!

对各位程序员来说,工作中肯定会碰到各种不如意,例如甲方的刁难、需求的不断更改,有情绪是必然的,但自己一定要控制好情绪,调整好心态,千万不要做出不可挽回的事情。


曾经风光无限的铁饭碗没了…网友评论:996卷走了955的他们…

科技创新大兴 发表了文章 • 0 个评论 • 22 次浏览 • 5 天前 • 来自相关话题

作为一个程序员,你刚毕业时候的梦想是去哪里呢?是BAT这些大厂?是自己马上就开始创业?相信有很多一部分人,尤其是80后,最初的梦想是想进一个外企工作,微软、谷歌、甲骨文、IBM、HP等等等等。可以说80后那一代,见证了外企在国内最辉煌的一段岁月,当时如果身边有... ...查看全部

作为一个程序员,你刚毕业时候的梦想是去哪里呢?是BAT这些大厂?是自己马上就开始创业?

相信有很多一部分人,尤其是80后,最初的梦想是想进一个外企工作,微软、谷歌、甲骨文、IBM、HP等等等等。

可以说80后那一代,见证了外企在国内最辉煌的一段岁月,当时如果身边有哪个同学拿到了一个外企的offer,绝对是要被人羡慕半天的,尤其是那些大公司,真是挤破头皮都想进去,当时每个人都说外企的福利有多好、外企的管理多人性化,相比起现在国内IT公司追求的996标配,外企仅仅在加班费一项上足以傲视群雄。

但是再辉煌的君王也有落寞的一天,曾经那些个习惯了穿西装打领带喝咖啡讲英文的外企员工不得不承认,外企风光不再,可以说外企的黄金时代已经过去了。

这不,前几天有消息传来,巨头IBM的中国研究院(IBM CRL)已经全面关闭,关闭的悄无声息,在举国讨伐郑姓女戏子的热点追逐下,更是显得苍白无力、无人知晓。

IBM,作为大家熟知的行业龙头企业,有着一百多年的历史,哪怕IBM研究院,也可以追溯到上世纪40年代,比新中国成立的时间还早。

IBM中国研究院则是在1995年成立于中国北京,位于北京上地信息产业基地的西北角,坐落在中关村软件园内。当时绝对是一件轰动国内IT界的事情。

到了2008年,IBM中国研究院上海分院成立。

自从建立以来,据不完全统计,有过上千名研究人员在该研究院工作过或正在工作,其中绝大多数拥有中国乃至世界一流大学的博士和硕士学位。因为IBM基本不招本科生,当时硕士能进IBMCDL就已经很不错了,能进CRL的大多数都是博士。

说起IBM中国研究院的重点研究领域共有四个,分别是

  • 行业解决方案行业解决方案,是指运用前沿技术解决行业的关键问题,这里指的关键问题是环境治理、电力与能源、物流与供应链、医疗、金融服务等各领域相互相成的一系列复杂方案,并非单单局限于某个狭隘角度。而是更加关注类似大气污染防治、可再生能源高效利用和企业节能这种关乎人类可持续发展的命运话题,往往一个研究计划就以十数年为周期。

  • 认知计算最为知名的就是在2011年发明的沃森,它以IBM创始人Thomas J. Watson名字命名。作为一个自然语言问答系统,沃森甚至在美国的著名电视智力竞赛节目《Jeopardy!》中击败了该竞赛最长优胜纪录的保持者Kenneth Jennings,从此被世人熟知。

  • 运算即服务IBM中国研究院主要从事物联网云计算、云计算基础设施与云服务、平台即服务(PaaS)的开发与研究。

  • 物联网IBM中国研究院在高性能无线专用物联网通信系统、大规模物联网数据处理中间件平台等领域取得了诸多技术上的突破,并在2014年提出过物联网3.0的概念。

当年的IBM就像现在的BAT,聚集了国内最能干的一帮青年才俊,20年光阴转瞬即逝,当年的意气奋发现在亦早已成了40不惑,甚至50知天命。曾经的雄心壮志,还在吗?

现在的年轻人或许只知道击败了众多围棋高手的人工智能阿尔法狗,但实际上早在1997年,IBM研发的计算机深蓝(Deep Blue)就战胜了国际象棋冠军卡斯帕罗夫。当时的深蓝就是今天的阿尔法狗,当时的IBM就是行业的领先者。

而在深蓝的基础上,进一步通过机器学习,复杂算法和大规模数据库进化出来的就是后来的沃森,现如今沃森在金融领域的理财管理,保险业理赔,商业领域的社交媒体分析,医疗领域的慢性疾病控制,跨行业的呼叫中心服务都有着广泛的运用。

但是一个沃森掩盖不了IBM的日益老态,作为曾经的巨人,IBM已经连续十季度营收下降,仿佛预示着一个时代的落幕,更是一代在华外企的落幕。

其实早在前几年,就不断有曾经的巨头外国企业逐渐离开中国市场:

  • 2015年3月19日,雅虎宣布退出中国市场,雅虎北京研发中心宣布关闭。

  • 2019年,亚马逊宣布退出中国。

  • 甲骨文,在受到了云计算的冲击后,曾经不可一世的甲骨文正式关闭在中国的研发中心,并裁减员工约900人。

尤其是近年来BAT、华为等国内大厂的崛起,习惯了996的程序员让加班成本无比高昂的外企更加不适。毕竟,再杰出的才华,在努力面前还是会被超越!

退出,其实是早晚的事情。告别,也是情理之中。


其他职业越老越值钱,程序员越老越贬值?

科技创新小小鸟a 发表了文章 • 0 个评论 • 25 次浏览 • 5 天前 • 来自相关话题

前言今天一早,看到NBA交易消息中提到:小加索尔与洛杉矶湖人队签下两年老将底薪合同。业界评论一致认为湖人这次在中锋这个位置进行了补强,甚至有人认为湖人是捡了个大便宜。小加索尔作为一个85年出生的球员,在NBA赛场上已经是处于职业生涯晚期的球员,为什么还这么受关... ...查看全部

前言

今天一早,看到NBA交易消息中提到:小加索尔与洛杉矶湖人队签下两年老将底薪合同。业界评论一致认为湖人这次在中锋这个位置进行了补强,甚至有人认为湖人是捡了个大便宜。

小加索尔作为一个85年出生的球员,在NBA赛场上已经是处于职业生涯晚期的球员,为什么还这么受关注呢?其实每年NBA交易期都会有这样类似的情况,一些早已功成名就的老将,不在意薪水的多少,只想加入一只有争冠实力的球队,并且往往他们的经验会让球队受益匪浅,关键时刻往往会帮助球队获得胜利。正如我们华夏民族一直流转的那句“家有一老,如有一宝”。

每一个职业每一个行当,一代代的经验传承,造就了中华民族五千年的文化荟萃,但是现在似乎程序员这个职业有些另类,别的职业都是越老越值钱,唯独程序员,在众人的眼中越老越容易失业?越老越贬值?

那究竟是什么原因造成了这个现象呢?让我们一起看看知友们都是怎么说的吧

做程序员这些年,我一直在思考一个问题,就是:

就互联网公司而言,对于公司好的发展逻辑其实是跟对于个人来说好的发展逻辑似乎是有冲突的。

对于一个大公司来说,一个新员工进来,首先要做的是什么?

学习遵守公司的流程规范,让自己的工作内容和工作方式都以一种标准化的方式进行。

哪怕你做了某个很好用的工具,或者发现了做这件事的更高效的方法。

那么在得到上级认可之后,你要干什么?

把这个东西整理成标准的流程,文档,以提高后面新入职的同事的工作效率。

为的是什么?

为的是哪怕有一天你不在这个公司了,你所做的这一部分工作也能很快地找到另外一个人来代替。

当然,然后还有进行项目开发时对于代码和文档的各种规范和要求,越是大公司,在这方面的要求越是严格。

为的是什么?

为的是哪怕你作为这个项目的核心开发者,但是如果有一天你主动离职了,或者年龄大了被公司裁了,这个项目依旧可以正常地运行迭代下去。

这确实是对于公司发展来说最好的逻辑。

但是问题是,这对我们作为员工的个人来说,可能并不是一个好的逻辑。

如果一个公司想要做大,想要走的远,那么他们就需要通过标准化,规范化的流程来把个人因素变动所带来的的影响降到最低。

而在里面作为的螺丝钉的程序员,除了写代码完成业务功能以外,还要把代码写的尽量让大家都能看懂,让后来人能轻易接手。

但这也为他后续被更年轻,更能996的程序员取而代之,埋下了伏笔。

而在某些传统行业,则不是这样的。

尤其是有些老一辈的手艺人,确实是越老越吃香,甚至是一个匠人到了六七十岁,还有人愿意把自家孩子送到这个匠人门下当学徒,学习手艺。

难道是因为这个行业真的有什么常人难以学会的知识或是技能,哪怕钻研了五六十年,还是有着很大的提升空间。

以至于研究了50年的手艺人,就真的比研究了30年的,要高好几个档次,所以大家才都青睐那个更老的手艺人吗?

也不一定。

也有可能是人家只是有几个压箱底的绝活,但是这个绝活,在这个手艺人临终之前,都不会轻易地交给自己的徒弟,更不要说是新入行的同事了。

毕竟人家是打算靠这点绝活,吃一辈子饭的,如果随随便便就交给徒弟,那师傅不就饿死了吗?

所以说,明白了吗?

为什么有些职业是越老越吃香,而程序员不是越老越吃香?

因为互联网公司的逻辑是:”虽然我需要程序员来帮我开发软件,但是我更需要的是这个软件离了他之后,依然可以好好地运行,所以说我会竭尽全力地来保证流程的规范化,代码的可读性以及业务逻辑的文档化。“

这样一来,即使程序员开发出了某个发展很好的项目,但是在这个项目进入稳定生产之后,也跟他没有太大关系了。

他并不能靠对着某个项目的理解,而吃一辈子饭,因为公司的规范要求他把所有有关这个项目的理解,都整理成文档,模型,和代码注释。

他要么抓住某个机会成为管理层,拿到公司股份,要么不断跟进学习日新月异的新兴技术,要么,就只能等自己老了,精力和体力都比不过年轻人的时候,被更加年轻的程序员所取代。

从这个角度上看,公司和程序更像是一个生命,而前赴后继的程序员们,只是不断往这个生命里面注入动力的干电池而已。


自由飞的想法

大部分的中国企业,就没把程序员当做“脑力劳动者”,而是当做“体力劳动者”在用!

996是福报啊!过了35岁,搬不动砖了,996都没你的份。

我以前看报道,说“中国航天”深化改革啥啥啥的,其中一个成果就是“队伍平均年龄28.6(大概吧,总之很年轻)岁”,然后今年火箭已经炸了三次了。——这事我就随口一说,究竟什么原因炸的,炸得好不好,应该不应该,我不是行内人士,大家不用给我上课,实打实的说,我也不关心。

但以我一个快40的老码农而言,不说别人,就说我自己,我非常肯定确定以及一定:

我的能力从来没有贬值。恰恰相反,随着经验的积累,我的能力与日俱增。

我相信,就算不是全部,但很多老码农都会有这种感觉。

新东西学不动,那是懒得学!工作中用不到的,我学他干嘛?真要学的时候,分分钟捡起来,比你刚入行的菜鸟不知道快多少倍。

而且会倒腾个新技术就算有能力了?呵呵,

除了高质量代码生成以外,还有很多其他需要日积月累的技能,譬如全面审查需求,妥善安排进度,快速bug fix……

但是,企业关心这些么?

不过是搬砖的而已,能把砖搬过去就完事了,还管你怎么搬?

外包单位就不说了,卖出去一个是一个,关键是挣差价,你的工资是成本,当然越低越好。

互联网公司,钱烧得霍霍的,产品急着上线呢!还管你代码质量,只管你能加班不?!屎一样的代码糊上去再说,美其名曰“及时反馈快速迭代”……

软件公司……等等,中国有软件公司么?反正除了屈指可数的那几家,目之所及真能赚钱的都是骗补贴的!

明白了吧,这就是你问的为什么。

老程序员本身没有贬值,所谓贬值,是因为人力市场的需求。

怎么办?凉拌!

唉,希望未来能有更多脚踏实地的、以产品质量取胜的软件公司涌现出来吧!


invalid s的表述

古话说的好:“飞鸟尽,良弓藏;狡兔死,走狗烹”。

不光程序员越老越容易失业,国内一切技术行当不都这样吗?

身为技术人员,在自身职业前景上,必然要遭遇两个问题。

  • 第一个问题是他自己能控制的:你,究竟掌握了多高的技术?

是面向搜索引擎编程、只会CRUD呢;还是能够编写更高质量的代码、解决日常问题?

或者,是有充分的大中型项目设计、实施经验,甚至能够主持有一定难度的项目开发?

或者是,你能否掌握“核心科技”,挑战业界大佬?比如和思科比比网络调度算法、和Linus比比OS开发、写个数据库挑战Oracle、搞个Hadoop挑战yahoo甚至google?

可想而知,当你只会面向搜索引擎编程、只会CRUD时,你当然就是个一次性消耗品。用到三四十岁差不多也该用坏了,找个借口扔掉就是。

比赛“跑不死就往死里跑”的话,你怎么可能比得上二十来岁的小年轻呢?

想要“越老越值钱”,你就不能在年轻人的优势领域停留,你就必须不断提升自己、拓宽眼界、抬高上限——你猜Linus担心不担心失业?你猜yahoo里面编写/维护hadoop的、google里面优化big table page rank map-reduce的,他们担心不担心失业?

你究竟学会了多少,就决定了你的命运。

当你只能拼996007时,你那二十岁的身体还的确能支撑你扛大包;但到了三四十岁,哪怕没有落下一身职业病,你,还能像年轻人那样“昨天摔了一跤整条腿都紫了今天打个绷带照样活蹦乱跳”吗?

所以你失业了。那些挤走你、顶替你的,也会像你一样,在被人超负荷使用十年、落下一身病痛后滚蛋。

这就是第一个问题:你不为将来打算,急功近利透支身体996/007,所以你越老越容易失业。

你不光越老越容易失业,你还会落下一身病痛。三四十的身体甚至比不上那些会保养的、六七十的老人。你不得不掏出大量金钱来维持自己的基本生存。

如果你压根就不是什么“良弓”,凭什么阻止别人把你像垃圾一样踢开?

人无远虑,必有近忧。

  • 技术人员必将遭遇的第二个问题并不是他们能控制的。

那就是:你把自己修炼成了全世界顶尖的超高精度复合弓;但你的国家压根就没有射箭比赛。

是的,你懂操作系统内核;但中国有哪家公司在开发自己的OS?

是的,你懂数据库算法编译器优化;但中国有哪家公司能做数据库能写编译器?

如果整个社会都只能追逐那么几只半死不活的残疾兔子;你,身手矫健又有何用?

人山人海,哪里见得到兔子。

结果你还想吃多点,否则……都不够维持你的一身肌肉。

相信我。用不了多久,你也会饿成一条病恹恹的瘦狗。

那么,这就是国内醉心于技术者面对的窘境:我们压根就没有能插手基础性、支柱性软件项目的公司。唯一会的就是互联网,就是想尽办法薅用户羊毛的终端软件。

对大多所谓的“互联网公司”来说,写这种软件,“面向搜索引擎编程”“调库专家”基本够用。更高的,他们根本不敢想。

正是这种现状,使得一些缺乏眼界者压根不敢想“需要熟练使用链表算法的工作”;相反,他们会告诉你,会调库足矣、照搬互联网上搜到的代码就够用了——甚至还有在我的回答下言之凿凿、说“专家”说了,能搜到现成的代码就千万不要自己写,自己写的质量太差……

但事实是,哪怕在中国,照样有不算太少的中高端职位;这些职位的基本要求就是“不准抄网上代码”。

这是因为写出这些代码的人水平良莠不齐、写的时候也未必是按工业化/商业化标准精益求精(经常就是为了让初学者明白,所以省略了很多很多东西)——对这类中高端职位所要求的、业界top5%、top0.5%、top0.05%的、较为正规的程序员来说,这种东西说好听点叫粗制滥造,说难听点就是垃圾。

当这些人崇拜的“专家”都在顶礼膜拜网上的劣质代码时,他们的水平也就可想而知了。

眼界所限,他们完全不可能知道那些中等以上水平的程序员在做什么;在他们看来,一行代码出一堆错误是必须的——我说自己一口气写几千行不出错,他们就破口大骂:追着骂、单独开贴骂;直白的骂、阴阳怪气的骂……

这种情况,在过去是不可想象的。

在当时,别说垃圾到这种程度了,任何问题只要简单到用搜索引擎搜一搜就能解决,你敢问,就会被老手怼回去。很多论坛把“提问前应该做到什么”置顶;“STFG(Search The Fucking Goolge)”是被人普遍接受的、对小白问题的标准回复。

但现在,连网上苦口婆心的解释都读不懂、只能逐字逐句照搬现成的代码的小白敢“组团围剿”那些敢说自己能写程序的“吹牛者”。

可想而知,这种劣质码农的声音淹没一切时,这个行业会变成什么样子。

别说开拓新的市场、新的疆域了,就连抄,他们都不敢抄热乎的。

这反过来强化了劣质码农们的认知——没错,中国啊,它本来就不需要高于“面向搜索引擎编程”的装B犯。反正你们学了也没用,大家一起996,欢乐的卷起来吧。

业界整体的低水平,使得你除非在校时就憋着一口气、玩命的往世界一流水平赶;否则一旦开始工作,庸人们很快就会把你拖进自己的节奏,然后干净利落的打败——这工作你能做我也能做,我见经理满脸堆笑,你呢?书呆子。什么叫你一周抵我们一年?谁看见了?

中国技术人员地位低,原因就在于此。

一方面,因为对未来的预期过低,因此从一开始就没学到东西,就是一劣质码农;另一方面,行业整体上限不高,绝大多数人还在一门心思的拉低下限。

如此一来,未来哪还有好?

但是,这并不是全部。

事实上,正常的市场竞争下,谁落后,谁死。

因此,报社的程序员可以写出django,车库里的穷小子能折腾出google。

技术是需要积累的。只要学进去了,你的积累就绝不会是无用功。

因此,虽然按比例算,也许99.99的程序员果然是年纪大了就得滚蛋;但这不正是他们为自己做的规划吗?起初就什么都没学到、入职了也只会996没有任何技术积累——美其名曰“你需要掌握的东西,入职一个月内就能学到”。

呵呵,真这么简单全世界的大学都在坑钱不成?一个月就能学完的东西,非要把你拘禁起来教上本科四年硕士两年博士N年都还不让毕业?

你把自己当一次性用品培养,就别怪别人用旧了把你一脚踢开。

相反,那些真正知道四年本科要教你什么、知道你和世界先进水平还有多大差距的人,他们会抓住一切机会,不间断的前进,前进,继续前进。

我大一就自学到了中断服务程序、可以直接写端口命令字绕开OS/BIOS直接控制硬件;也知道动画、音频、视频、3D图形等等的基本原理;当时同学间流行一个打字游戏,但我觉得那个东西写的不好,于是花了一周不到就写了个更好的。

因此,我可以毫不含糊的吐槽——绝大多数本科生,四年连个大一水平都没学到。

比我强的车载斗量。

那么,本科四年我都甩开某些人四年,之后工作了,盯着那些比我强的紧赶慢赶,都不过勉强维持个“看得到别人尾灯”的局面;那么,一毕业就比我慢了四年、还以为一个月就学会了一生所需的全部知识的他们,有可能看见我车尾的扬尘吗?

不光我不担心自己学的东西没人要;那些比我强的没边的,照样不担心自己学的东西没人要。

甚至可以说,越是不顾那些庸人的眼光、我行我素学的精深的,越是不怕失业。因为人家的就业市场是全世界。

不是程序员这个职业越老越不值钱,而是现在的程序员处于工业革命早期煤矿工人所处的境地。

新的世界刚出现一个雏形,现在的程序员只是在用自己的血肉去充当地基和铁轨,铸造锅炉并充当点燃第一把火的燃料。

表面上看起来相对农民阶级(传统制造业),工业革命初期的产业工人收入待遇提高了很多,但是那是以压缩劳动寿命来实现的。

他们确实代表着先进生产力的发展方向(并且就像煤炭行业至今仍然是采矿和机械制造业最先进技术的集中展示平台一样),但是悲哀的是,他们自身却不是先进生产力。

夜宵是福利?那为什么不能随便吃?浅谈华为员工夜宵事件

科技创新fanta2 发表了文章 • 0 个评论 • 24 次浏览 • 5 天前 • 来自相关话题

一早看到新闻,说上海从28号晚上发布寒潮蓝色预警,预计未来48小时以内气温将直接下降10度左右。元旦那天可能市区最低零下六度,郊区甚至零下8度。看到这里特别想叮嘱下各位程序员,一定要注意保暖,当心身体,因为对于加班频繁的程序员来说,秋冬是心血管疾病高发的季节,... ...查看全部

一早看到新闻,说上海从28号晚上发布寒潮蓝色预警,预计未来48小时以内气温将直接下降10度左右。元旦那天可能市区最低零下六度,郊区甚至零下8度。

看到这里特别想叮嘱下各位程序员,一定要注意保暖,当心身体,因为对于加班频繁的程序员来说,秋冬是心血管疾病高发的季节,尤其这种骤降的温度,很容易击倒刚加完班一身疲乏的身体。

不由想起最近发生的一件闹得沸沸扬扬的事情:

华为员工夜宵事件

华为,相信是很多人奋斗的目标,一向以员工福利丰厚著称。在华为,有一个夜宵制度:

华为夜宵制度规定,员工可以在八点半后凭工卡领取夜宵,夜宵通常为牛奶、水果、加班餐等价值二十五元的套餐。

对于经常需要加班到深夜的程序员来说,的确是一个贴心又实用的福利,每当干完一天繁重劳累的工作,能够喝上一口热汤吃上一口热菜,整日的疲乏瞬间得到了缓解。

但是最近呢,华为通报了一个违规案例

某员工饭后于健身房锻炼到八点半后,无加班领取夜宵,被发现,被处罚“永久取消领夜宵权限,冻薪降考评并通报批评”。

对于这个案例,华为额外补充的说法有如下几点:

  • 1、不提倡员工饭后马上安排健身。

一般员工食堂的饭点设置在17:30-19:00左右。科学的建议饭后多久才能剧烈运动呢?中度运动至少要在1个半小时到两个小时以后。也就是说,如果该名员工是17:30吃饭,至少应该在7点才开始运动。考虑到前后都需要准备时间,零七八碎的加一起算半个小时,而到了8点半,该为同学也只是运动最多一个小时,没有达到运动效果。

  • 2、不提倡员工运动完后摄入错误膳食

健身健身,三分健,七分吃。健身完毕后,再摄入低效的夜宵,显然会让健身事倍功半。根据描述,夜宵通常为牛奶、水果、加班餐一看,除了牛奶跟优质蛋白沾点边,水果和加班餐适合健身后吃吗?要是小蛋糕、大肠刺身、锅包又吃多了很可能白练了!!建议喝点儿蛋白粉,有效补充一些电解质。不要盲目脏增肌。

  • 3、不提倡员工健身后不拉伸

健身不拉伸,毁掉运动人生。8:30匆匆忙忙健身后就去吃夜宵,没有趁着身体热着去拉伸筋膜。这样好吗?这样不好。极容易造成肌肉僵硬,乳酸堆积,下次运动容易受伤。这种时间安排是极为不妥的。

华为为员工身体着想这一点值得嘉奖,但是对于员工被处罚这一事件,的确引起不小的热议,因为到底怎么样才算有加班行为?加班多久才算有加班行为可以领取夜宵?或许这就是企业的一个灰色地带,在入职的时候,肯定不会详细的告诉入职员工只有“在某种某种时间条件和强度条件下,你才有领夜宵的权限”,反而大多数的说法会是说“八点半的时候可以领夜宵,九点可以打车回去”诸如此类的话语用以强调自身的福利有多好。

  • 站在公司的角度上,公司肯定认为这名员工,故意蹭夜宵,才做出惩罚。但是作为员工来说,他是否准备吃完夜宵继续加班?不得而知,至少华为的通报中没有详细说明。

  • 站在员工的角度上,这种夜宵福利也是在入职的时候也会做比较的地方,是一个入职的加分项,作为一个福利却现在有这样惩罚的先例,是否会寒了加班者的心,是否以后加班的时候还需要掐着表算着时间看自己能不能领?

尤其程序员作为弱势群体,本来就很辛苦,活儿怎么干都干不完,而公司通过员工加班赚到的利润,和每天晚上给每个人都发一顿夜宵比起来真的算不上多少,公司这么做,是否会给人一种杀鸡取卵或者又要马儿跑得快又要马儿不吃草的感觉?

冻薪降考评并通报批评这一点,更是极其严厉,你可以取消他吃夜宵的福利,但是这如果是福利,为什么还要去冻薪降考评并通报批评?这里的标准是什么?是否企业会在招聘时说清楚,这不是简单的福利,还是会遭到惩罚的陷阱?

肯定不会,企业肯定只会说自己有多好,那么出了这种事情,是否这个人一而再再而三的不加班领取?如果不是,作为弱势一方该怎么申诉?凭什么要为了一个福利去遭受这些严厉惩罚?

联想到近日看到的另一个新闻:

程序员真的是一个辛苦的职业,上有老下有小,工作压力大,技术淘汰快速,时刻面临着海量后来者的挑战,生活和工作上的压力都很大。

经常加班熬夜、工作压力大的人,最需要的是休息!谁不想休息,谁不想云淡风轻、闲云野鹤,还不都是工作所迫,现在却连吃一个加班夜宵难道也要成了一件战战兢兢生怕被罚的事情?

现在很多公司对员工看上去非常好,茶水间摆满了各种免费的饮品和零食,每天的午餐既廉价又美味,条件好一点的还自带健身房、按摩室。甚至还有各种加班福利,这一切都掩盖不了一个本质,公司把员工服务好,是为了让员工加班更带劲、更喜欢加班!其背后更是一个商人的本质,当他发现员工享受这些福利却没有更多的加班时,他不会去考虑你的身体你的健康,有的只是冰冷的惩罚。

近年来关于猝死的话题并非少见,一个员工的生命可能对于公司来说都是可以用金钱来衡量的,而且是廉价的。但对于自己和自己的家人来说或许那是无价之物。


融云im小程序集成初体验

IM即时通讯大神庵 发表了文章 • 0 个评论 • 30 次浏览 • 6 天前 • 来自相关话题

最近领导让做一个小程序端的聊天功能,基于多方考虑,最终选择了融云的im来实现,那就先写个demo体验下吧。首先呢,当然是查看官方文档,文档地址如下: https://docs.rongcloud.cn/v4/views/im/noui/guide/p... ...查看全部

最近领导让做一个小程序端的聊天功能,基于多方考虑,最终选择了融云的im来实现,那就先写个demo体验下吧。

微信截图_20210415151418.png

首先呢,当然是查看官方文档,文档地址如下: https://docs.rongcloud.cn/v4/views/im/noui/guide/private/setting/include/mini.html

需要注意要在管理后台的小程序服务下将小程序的开关打开,否则会报错,相关的demo也可从后端下载到。

拿到sdk了,我们就可以上手集成了,嘻嘻……

由于是demo,暂时先把appkey和token配置写死了,放在了config.js中,appkey和token可以从管理后台获取到。

其次呢,我们需要把im引入,可以整一个公用的js文件,在此引入im sdk,初始化一个全局的im对象(在此呢需要注意im对象一定是全局的,不能赋值给小程序里面的data值,之前我就犯了错,赋值给了data,导致页面只要一调用setData方法就一直报Converting string to Json的错误,大家可以在集成过程中避雷呢)。

引入代码如下:

const RongIMLib = require("./RongIMLib-3.0.7-dev.js");
const config = require("../public/config");
const imInstance = RongIMLib.init({ appkey: config.appkey});
export {
  RongIMLib,
  config,
  imInstance
}

接着我们创建一个主页面,在这个页面中我们可以建立融云的连接以及获取会话列表。

connect() { 
    if (this.data.isConnect) {
        this.data.im.disconnect();
    }
    imInstance.connect({ token: config.token }).then(user => {
        this.isConnect = true;
        this.getConversationList();
        console.log('链接成功, 链接用户 id 为: ', user);
    }).catch(error => {
    console.log('链接失败: ', error);
 });
},

注意事项:在此需要注意安全域名问题,要不会报错,导致连接不上融云的服务。

1. 开发环境的话,可以在右上角的详情中的本地设置中将不校验合法域名的地方打上对勾。

2. 生产环境的话,可以参考如下地址设置: https://docs.rongcloud.cn/v4/views/im/noui/guide/private/setting/include/mini.html

这样的话就可以连接成功了,哈哈,第一步总算是跨出去了。

接下来我们可以在连接成功后获取会话列表,代码如下:

imInstance.Conversation.getList().then(list => {
  this.setData({
    conversationList: list
  })
}).catch(error => {
  console.log('获取会话列表失败: ', error);
});

点击详情跳转到聊天页面,在此需要注意如果要获取历史记录的话是要开通im商业版-单群聊云存储的。开通后按照api使用说明获取就可以了,代码如下:

getHistory(conversation) {
    const option = {
        timestrap: +new Date(),
        count: 10
        };
        conversation.getMessages(option).then((result) => { 
            var hasMore = result.hasMore; // 是否还有历史消息可以获取
            this.setData({
              messageList: result.list
            })
        });      
}

接下来发送消息等其他接口,正常调用就可以了,和web端sdk基本是一致的,参考官方文档即可,整个集成过程花了两三天吧,还算顺利。有不足之处还望大家多多指教,多多交流……

融云官网地址:https://www.rongcloud.cn/

融云开发文档地址:https://docs.rongcloud.cn/v4/


友情链接