为什么北欧的顶级程序员数量远超中国?
说起北欧,很多人会想到寒冷的冬天,漫长的极夜,童话王国和圣诞老人,但是如果我罗列下诞生于北欧的计算机技术,恐怕你会惊掉下巴。
Linux:世界上最流行的开源操作系统,最早的内核由Linus Torvalds开发,芬兰人
MySQL:世界上最流行的开源数据库,主要的开发者是Monty,芬兰人
Chrome V8 :世界上最流行的JavaScript引擎,主要作者Lars Bak ,丹麦人
MineCrfat:世界上最流行的沙盒游戏,主要作者Markus Persson,瑞典人
cURL :世界上最流行的,支持各种网络协议的数据传输工具和库,被全球有100亿台设备使用,作者Daniel Stenberg,瑞典人。
SSH:世界上最流行的加密的网络传输协议,最早由Tatu Ylönen开发,瑞典人
QT : 流行的跨平台GUI框架,最早由Haavard Nord 由 Eirik Chambe-Eng开发,芬兰人
Unity: 世界流行的游戏引擎,由3个丹麦人发明
面向对象技术:Dahl 和 Nygaard 于上世纪60年代发明, 挪威人
这些技术哪怕在中国出现一个,绝对会吹上天。
更不用说北欧还诞生了Turbo Pascal(丹麦),即时通信软件Skype(瑞典+丹麦),在线流媒体平台Spotify(瑞典),浏览器Opera(挪威)......
要知道,北欧包括丹麦(587万人)、芬兰(554万人)、冰岛(37万人)、挪威(540万人)和瑞典(1042万),合计2760万人,还没有中国一个省人多。
北欧为什么能诞生这么多改变世界的计算机技术?
难不成是因为身处高纬度地区,长夜漫漫,总想着搞点儿发明创造?
这个问题我很好奇,搜索了一番,发现了这些可能的原因:
1. 教育优势
北欧的教育非常发达,拥有高质量的教育体系,许多人接受了高质量的教育,包括计算机科学和软件工程领域。
2018年,各国公共财政教育支出占GDP比例,按从高到低排名,前五名是挪威,丹麦,芬兰,冰岛,瑞典,北欧5国霸榜,遥遥领先。
尤其是挪威和丹麦,超过了7%, 其他三国也在5.5%以上。
不仅投入高,北欧的教育特别注重学生的自主学习和实践能力培养,同时也致力于为学生提供多元的学科背景和跨学科研究的机会。
例如瑞典,从小就注重提高公民科学素质,小学课程设置以培养兴趣为主,除语文、数学和自然等必修课外,还有家政课和手工课等培养动手能力的课程。
高中毕业后的学生一般先工作1-4年后再读大学,由于学生具有了一定的工作经验和社会经验,知道自己需要学习什么,对什么感兴趣,所以学习起来思路和灵感就会很多。
2. 重视IT技术
像Linux之父,MySQL之父,还有很多其他北欧大佬,都是十几岁就有了自己的电脑,开始玩游戏,玩不过瘾自己写游戏,从此走上编程之路。要知道这是在七十年代末,八十年代初,电脑还属于贵重物品,北欧发达的经济为孩子们提供了接触最前沿IT技术的机会。
对于一些不富裕家庭,政府会承担起责任,例如瑞典在1998年推出了“每个家庭至少一台电脑”的政策,对推动IT技术发展影响极为深远。
政府鼓励企业付费给员工买家用电脑,就能减免税费,员工不论职位高低,连清洁工都包含在内。
这个计划实施了3年,到2001年已经有85万个家庭购买了电脑,涵盖了瑞典将近25%的家庭。
Klarna(网络支付公司)的创始人西米亚特科夫斯基对此非常感慨,他说:像我们这样的低收入家庭,根本负担不起买电脑的开支,但是当政府一推出改革措施,我母亲第二天便买了一台电脑。
西米亚特科夫斯基在16岁起就可以在家中学习编程,20多年后,他的Klarna网络支付公司估值达到460亿美元。
瑞典还积极投资建设网络基础设施,1995 – 2005短短十年间,网络渗透率由5%暴涨到85%,手机渗透率由22%到超过100%(意思是平均每个人拥有超过一只以上的手机)。相比发明网络与手机的美国,在2005年的网络及手机渗透率却分别只有68%和69%。
网络的普及,成为信息科技创新企业的温床,这一点中国也应该深有体会,4G普及以后,中国移动互联网产业大爆发,一下子涌现出了大量的互联网公司,深入生活的方方面面。
3. 社会福利兜底
北欧五国是全世界著名的高税收高福利国家,丹麦72%的税收用于各种福利,挪威和瑞典社会福利支出占GDP的34%和38%,高支出建立了让人羡慕的福利体系,我这里不想再列举枯燥的数字了,总结来说就是:
不用担心生孩子,国家每月发钱,产假极长,亲子假机多。
不用担心上学,教育免费,还有补贴。
不用害怕生病,医疗完全免费或者费用极少。
不用害怕失业,失业补助非常可观。
在这样的环境中,人们不会那么焦虑,可以把更多的精力和时间投入到自己真正喜欢的领域,而没有后顾之忧。
新创业的太阳能公司 Trine 的创办人 Sam Manaberi 说:“良好的社会福利制度就像安全网,让我更能无后顾之忧地投入创业之中。(创业失败)最坏的情况就是我没有薪水,但是我的小孩还是能享有医疗及教育。”
Klarna的创始人西米亚特科夫斯基表示,自己的巨大成功可以归功于国家的福利制度。如果生意失败或者失业,也不用担心破产。
我时常会想,如果中国也能提供这样的福利,以中国的人口数量,会不会有大量的天才追随自己的兴趣,实现发明创造呢?
4. 鼓励创新的文化氛围
“创新者需要有独立的人格,而不是对权威惟命是从;他要有独立的思考能力和判断能力,而不是人云亦云;他要有平常心,而不是患得患失;他是一个安宁的、踏实的人,而不是心情浮躁,急于求成。”---易纲
北欧尤其是瑞典的教育从小学开始就是讲究和谐、平等,一切都任由天性和本能,从小就树立和培养出放松心态,让有创新能力的人基于个人兴趣,而不是带有功利思想,从容地进行发明创造。
瑞典上大学免费,基本想上就能上,但是瑞典青年上大学的比例在欧美国家并不算高,很多人更喜欢去职业学校学习自己喜欢的东西,
当然,这种心态也需要高水平的社会经济做支撑,需要和民族的文化积淀联系在一起,别的国家不一定有这样的土壤,更不能全盘照搬。
结语:我写公众号这几年,遇到过不少小天才,有的在六年级就开始读《计算机程序设计艺术》,谈起C++编译优化头头是道;有的在初三写虚拟机,手搓操作系统...... 考虑到中国庞大的人口基数,这样的孩子应该还有很多,如果在成长的过程中如果有良好的环境,未来的生活没有后顾之忧,一定会迸发出强大的创造力,可以像北欧的程序员那样开发出众多世界流行的软件。
如果他们长大后还像如今程序员那样,被繁重的工作、高昂的房价、被医疗、教育等问题压得喘不过气来,恐怕我们只能继续去羡慕别人了。
参考资料: http://www.malaysiaeconomy.net/id_232321/d32vaa4z1a11/2016-02-11/37059.html
可以点击下方图片,进一步了解北欧各位大佬的故事
相关文章:

为什么北欧的顶级程序员数量远超中国?
说起北欧,很多人会想到寒冷的冬天,漫长的极夜,童话王国和圣诞老人,但是如果我罗列下诞生于北欧的计算机技术,恐怕你会惊掉下巴。Linux:世界上最流行的开源操作系统,最早的内核由Linus Torvalds开…...

vuex getters的作用和使用(求平均年龄),以及辅助函数mapGetters
getters作用:派生状态数据mapGetters作用:映射getters中的数据使用:方法名自定义,系统自动注入参数:state,每一个方法中必须有return,其return的结果被该方法名所接收。在state中声明数据listst…...

20230311给Ubuntu18.04下的GTX1080M安装驱动
20230311给Ubuntu18.04下的GTX1080M安装驱动 2023/3/11 12:50 2. 安装GTX1080驱动 安装 Nvidia 驱动 367.27 sudo add-apt-repository ppa:graphics-drivers/ppa 第一次运行出现如下的警告: Fresh drivers from upstream, currently shipping Nvidia. ## Curren…...
2023腾讯面试真题:
【腾讯】面试真题: 1、Kafka 是什么?主要应用场景有哪些? Kafka 是一个分布式流式处理平台。这到底是什么意思呢? 流平台具有三个关键功能: 消息队列:发布和订阅消息流,这个功能类似于消息…...
23种设计模式-建造者模式(Android应用场景介绍)
什么是建造者模式 建造者模式是一种创建型设计模式,它允许您使用相同的创建过程来生成不同类型和表示的对象。在本文中,我们将深入探讨建造者模式的Java实现,并通过一个例子来解释其工作原理。我们还将探讨如何在Android应用程序中使用建造者…...
English Learning - L2 语音作业打卡 双元音 [ʊə] [eə] Day17 2023.3.9 周四
English Learning - L2 语音作业打卡 双元音 [ʊə] [eə] Day17 2023.3.9 周四💌发音小贴士:💌当日目标音发音规则/技巧:🍭 Part 1【热身练习】🍭 Part2【练习内容】🍭【练习感受】🍓元音 [ʊə…...

【动态规划】多重背包问题,分组背包问题
Halo,这里是Ppeua。平时主要更新C语言,C,数据结构算法......感兴趣就关注我吧!你定不会失望。 🌈个人主页:主页链接 🌈算法专栏:专栏链接 我会一直往里填充内容哒! &…...

JAVA面向对象特征之——封装
4.封装 private关键字 是一个权限修饰符 可以修饰成员(成员变量和成员方法) 作用是保护成员不被别的类使用,被private修饰的成员只在本类中才能访问 针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作 提供 “get变量名()…...

【数据结构】二叉树相关OJ题
文章目录一、单值二叉树二、检查两颗树是否相同三、判断一棵树是否为另一颗树的子树四、对称二叉树五、二叉树的前序遍历六、二叉树中序遍历七、二叉树的后序遍历八、二叉树的构建及遍历一、单值二叉树 单值二叉树 题目描述 如果二叉树每个节点都具有相同的值,那…...

Windows安装Hadoop
当初搭建Hadoop、Hive、HBase、Flink等这些没有截图写文,今为分享特重装。下载Hadoop下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/以管理员身份运行cmd切换到所在目录执行start winrar x -y hadoop-3.3.4.tar.gz,解压。配置…...

ICG-Hydrazide,吲哚菁绿-酰肼,ICG-HZ结构式,溶于二氯甲烷等部分有机溶剂,
ICG-Hydrazide,吲哚菁绿-酰肼 中文名称:吲哚菁绿-酰肼 英文名称:ICG-Hydrazide 英文别名:ICG-HZ 性状:粉末或固体 溶剂:溶于二氯甲烷等部分有机溶剂 稳定性:-20℃密封保存、置阴凉干燥处、防潮 分子…...

【论文阅读】浏览器扩展危害-Helping or Hindering? How Browser Extensions Undermine Security
本文来源于ACM CCS 2022; https://dl.acm.org/doi/10.1145/3548606.3560685 摘要 “浏览器扩展”是轻量级的浏览器附加组件,使用各个浏览器特定的功能丰富的JavaScript api,为用户提供了额外的Web客户端功能,如改进网站外观和与…...

线性和非线性最小二乘问题的常见解法总结
线性和非线性最小二乘问题的各种解法 先看这篇博客,非常好:线性和非线性最小二乘问题的各种解法 1. 线性最小二乘问题有最优解 但是面对大型稀疏矩阵的时候使用迭代法效率更好。 迭代法 有Jacobi迭代法、 Seidel迭代法及Sor法 【数值分析】Jacobi、Se…...
数据库知识点
数据库是指按照一定规则存储、组织和管理数据的系统。在现代化的信息化社会中,数据库已经成为了各种应用系统中不可或缺的一部分。因此,对于数据库的知识掌握不仅是计算机专业人员必备的技能,也是各个行业从业者必须具备的基本素质之一。 数…...
Maven打包构建Docker镜像并推送到仓库
Maven打包构建Docker镜像并推送到仓库 文章目录Maven打包构建Docker镜像并推送到仓库一,服务器Docker配置二,本地项目maven配置2.1 pom.xml2.2 dockerfile2.3 验证2.4 统一dockerfile对于开发完成的服务要发布至服务器Docker时,我刚学习了解D…...

TypeScript 基础学习之泛型和 extends 关键字
越来越多的团队开始使用 TS 写工程项目, TS 的优缺点也不在此赘述,相信大家都听的很多了。平时对 TS 说了解,仔细思考了解的也不深,借机重新看了 TS 文档,边学习边分享,提升对 TS 的认知的同时,…...

《数据分析-JiMuReport04》JiMuReport报表设计入门介绍-页面优化
报表设计 2 页面优化 如上图所示的报表,仅仅是展示数据,不过这样看起来似乎太草率了,所以再优化一下吧 保存报表后,在积木报表中就可以看到对应的报表文件 此时我们如果还需要编辑报表,就点击这个报表即可 2.1 居中…...

带头双向循环链表及链表总结
1、链表种类大全 1、链表严格来说可能用2*2*28种结构,从是否带头,是否循环,是否双向三个角度区分。 2、无头单向循环链表一般不会在实际运用中直接存储数据,而会作为某些更复杂结构的一个子结构,毕竟它只在头插、头删…...
(八十)MySQL是如何基于各种规则去优化执行计划的?(中)
今天我们来讲一下子查询是如何执行的,以及他的执行计划是如何优化的。比如说类似于下面的SQL语句: select * from t1 where x1 (select x1 from t2 where idxxx) 这就是一个典型的子查询 也就是说上面的SQL语句在执行的时候,其实会被拆分为…...
第一章:命题与命题公式
1.命题与命题联结词 1.命题与命题的表示 1. 命题 由一个或几个已知的前提,推导出来一个未知的结论的思维过程称为推理,推理的基本要素就是表达这些前提的一些陈述句,可以将这些陈述句理解为命题。 (1)地球是行星 (2)8不是素数 (3)1 + 2 = 22. 命题真值 一个陈述句不…...

Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...

Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...

家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...

零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...