重新认识程序员的「三观」-程序员宅基地

技术标签: 面试  测试  移动开发  

在物理界和数学界,我们经常会听到一句话,叫做这个公式好美,这个论证方式完美无缺。

网上有很多谈程序员规划的文章,有很多的是从能力角度来阐述。比如初级程序员、中级程序员、高级程序员、技术总监等等,还有一些事从工作经验方面来阐述,比如工作的 1~2 年,3~5 年,5 年以上等等。这篇文章尝试以「三观」的角度更加清晰简单的阐述程序员的职业生涯。欢迎大家留言评论。

这三观指的是微观层面、中观层面和宏观层面。

中观层面:

先来谈中观层面,因为大部分的互联网公司,大部分的程序员,应该都是在这一个层次。这个层面要解决的是 80% 的技术问题。

中观层面是一个程序员基本上都要求达到的一个层面,这个层面要求程序员对业务有足够的了解。程序员需要意识到,技术很重要,但技术不是目的,而是手段。通过这个手段来解决大部分的问题,服务用户。大家要注意不要为了秀技术而使用技术,而是要让你的技术为商业服务。 大部分的互联网公司,考察一个程序员合不合格,主要是对业务能力的要求。也就是在中观层面进行考察。产品经理给了需求之后,能不能完美的完成它。一个技术人,不管他理论知识有多牛逼,比如申请了什么专利,取得了什么技术突破,如果不能解决大部分的工程问题,那他的中观层面还是存在问题的。不适合大部分的互联网工作。 举个例子,比如未来产品半年的日活是 50W,你要解决的就是 50W 的问题。你去解决 100W 的问题可不可以?当然可以。但是如果你如果定义 100W 作为问题,在做事的过程中会变得不聚焦。有很多的并发问题,效率问题,成本问题需要额外的考虑。所以在 50W 的问题下,你定义 100W 的目标,我认为这不是一个程序员中观层面需要做的。

微观层面:

微观层面是一个个的技术点,「微」字也体现出了这点。做 Android 的产品或者做 iOS 的产品,很多的时候聚焦的是应用层的东西,也就是中观层面的工作。具体的技术背后的原理由于工作重心的原因,可能涉及的不多。

比如 Android 和 iOS ,在中层关注的是如何通过调用 api 实现产品想要的功能和需求,但是这些 api 背后到底做了什么,没有了解。这些东西我们需要从微观的层面去了解。

当一个程序员从微观层面了解的更清楚以后,他的技术架构才能更加的牢固,否则很多的时候业务层面碰到的问题往往不能从根源上解决。如果这一层次没有达到,那么在中观做事的时候会慌。原因是因为只是知道怎么做(How),不知道为什么能那么做(Why)。

微观更多体现的是一个基础层面的事,如果没有大的地基,很难支撑起上层的建筑。一旦产品的业务线更改了之后,很多时候就需要重新学习。能从微观上去解释到底这个功能的背后实现原理是什么,就不慌。其实掌握了微观层面,在中观层面做事就会事半功倍。

举个例子,初中的时候,大家都学过一元二次方程,对于它的求根公式也背的滚瓜烂熟。如果我们仅限于会用,那么就只属于中观层次。当时记得很清楚,老师花了一堂课的时间来推导这个公式,但是相信很多的人可能没有记住怎么推导,只是记住了最后的公式。设想下一种情况,如果万一求根公式忘记了或者要求二元二次方程,你觉得是记住公式的人解出方程的可能性大还是知道了推导过程的人解出方程的可能性更大。

宏观层面:

宏观站在更高的角度,脱离了具体业务。记住,我这里有「具体」两个定语,而不是说脱离了技术和业务。宏观是一个抽象的层次。能够将一些具象的事务抽象化。能够以模型的方式应用于大千世界。很多年前,有一个概念很火,叫做建模。含义其实就是从一个个的具象中抽象出模型,通过这个模型就能预测出具象世界的一些发展。

宏观强调整个产品从技术角度的设计和实现。业务模块怎么划分,各模块怎么通信,api 的接口如何定义,代码如何管理,单元测试如何实施,如何持续集成。

站在一个更高的角度,移动端,前端,后端的框架如何设计,能够支撑未来业务的不断变化以及用户量的不断突破。能够以更长的时间线来支撑项目。上面提到的 100W 的问题,就属于宏观层面需要解决的问题。

对于一个大型业务或者系统的架构师来说,需要了解中观层面和微观层面,然后进行设计。

有一个名词一直比较火:全栈。我们在形容全栈的时候,会用 T 来表示,表明这个人除了深度外一束,还有那一横。回到上面提到的三观,似乎很好的解释了这样的一种人。首先你得是个初始化的 T ,这其实是一个中观层面,你有一点的广度,也有一定的深度,能够解决大部分业务性的问题。其次,那所谓的一竖,其实就是微观层面,让你了解技术的一些本像。越长越代表技术越深。那一横,其实就是宏观层面,让你对技术形成一个体,越长代表技术越广。

国内的技术人员,对于技术有一种偏见,认为只有懂底层或者架构师才是真正的技术高手。在《技术人最重要的能力是什么?》这篇文章中,提到了两个观点:

  1. 技术要能解决具体问题才有价值;
  2. 问题的复杂度决定技术实力的高度。其实所谓的三观,都是在解决具体的问题,只不过特定场景下的问题汇对应不同的三观层面罢了。

假如一个互联网公司产品界面,一个计算机理论知识很强的人,会各种算法,但是却连一个按钮的点击事件处理都不清楚,他的公司的价值又有多高呢?

转载于:https://juejin.im/post/5b0a583f51882538a73544c0

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33964094/article/details/91451717

智能推荐

spark实战之RDD的cache或persist操作不会触发transformation计算_spark cache和persist不生效-程序员宅基地

文章浏览阅读1.7w次,点赞2次,收藏5次。默认情况下RDD的transformation是lazy形式,实际计算只有在ation时才会进行,而且rdd的计算结果默认都是临时的,用过即丢弃,每个action都会触发整个DAG的从头开始计算,因此在迭代计算时都会想到用cache或persist进结果进行缓存。敝人看到很多资料或书籍有的说是persist或cache会触发transformation真正执行计算,有的说是不会!敝人亲自实验了一把..._spark cache和persist不生效

html文字滚动_html滚动-程序员宅基地

文章浏览阅读2.4k次。HTML之marquee(文字滚动)详解语法:以下是一个最简单的例子:代码如下:Hello, World下面这两个事件经常用到:onMouseOut=“this.start()” :用来设置鼠标移出该区域时继续滚动onMouseOver=“this.stop()”:用来设置鼠标移入该区域时停止滚动代码如下:onMouseOut=“this.start()” :用来设置鼠标移出该区域时继续滚动 onMouseOver=“this.stop()”:用来设置鼠标移入该区域时停止滚动这是一个完_html滚动

leecode++理解_auto row : rows-程序员宅基地

leecode++理解:本文介绍了一些LeetCode题目的解析和思路,包括两数相加、寻找有序数组的中位数、最长字串、整数反转等。还讨论了一些下标规律和正则表达式匹配问题。

Java通过Socket实现UDP编程及Socket总结_java xsocket jar包,实现udp服务端-程序员宅基地

文章浏览阅读8.5k次,点赞2次,收藏28次。UDPServer.javaimport java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;/* * 服务器端,实现基于UDP的用户登陆 */public class UDPServer { public s_java xsocket jar包,实现udp服务端

pmp项目管理_pmp项目管理实施-程序员宅基地

文章浏览阅读692次,点赞2次,收藏3次。规划采购管理是记录项目采购决策、明确采购方法,及识别潜在卖方的过程。本过程的主要作用 是,确定是否从项目外部获取货物和服务,如果是,则还要确定将在什么时间、以什么方式获取什 么货物和服务。货物和服务可从执行组织的其他部门采购,或者从外部渠道采购。本过程仅开展一 次或仅在项目的预定义点开展。图 12-2 描述本过程的输入、工具与技术和输出。图 12-3 是本过程的 数据流向图。..._pmp项目管理实施

linux bash脚本_如何在Linux终端中显示日期和时间(并在Bash脚本中使用它)-程序员宅基地

文章浏览阅读5.7k次,点赞4次,收藏15次。linux bash脚本Fatmawati Achmad Zaenuri/Shutterstock.comFatmawati Achmad Zaenuri / Shutterstock.com The date command is found in the Bash shell, which is the default shell in most Linux distributions and..._linux terminal显示时间

随便推点

数据挖掘实践(金融风控-贷款违约预测)(三):特征工程_金融风控(大数据)特征工程-程序员宅基地

文章浏览阅读2.3k次,点赞3次,收藏28次。数据挖掘实践(金融风控-贷款违约预测)(三):特征工程目录数据挖掘实践(金融风控-贷款违约预测)(三):特征工程1.引言2.特征预处理2.1缺失值填充2.2时间格式处理2.3类别特征处理3.异常值处理3.1 检测异常的方法一:正态分布法3.2 检测异常的方法二:箱型图3.3异常值的处理方法4.数据分桶5.特征交互6.特征编码6.1 labelEncode 直接放入树模型中6.2 逻辑回归等模型要单独增加的特征工程7.特征选择7.1 Filter7.2 Wrapper (Recursive feature _金融风控(大数据)特征工程

关于datagrip与mysql连接时下载驱动失败时的解决方法_datagrip插件下载失败-程序员宅基地

文章浏览阅读1.1k次,点赞7次,收藏11次。2️⃣若失败消息提示需要更换http,去阿里云中找到相关镜像 测试连接通过后重新下载驱动。3️⃣上述方法还是不行 可以关闭data grip后再来几遍。1️⃣首先将电脑连接的Wi-Fi关闭 连接手机热点。_datagrip插件下载失败

Npm包管理工具_h5页面能使用npm包管理工具么-程序员宅基地

文章浏览阅读162次。一、介绍Npm包管理工具,JS开发者能够更方便的分享和复用以及更新代码,被复用的代码被称为包或者模块,一个模块中包含了一到多个js文件。在模块中一般还会包含一个package.json的文件,该文件中包含了该模块的配置信息。一个完整的项目,需要依赖很多个模块。一个完整的npm包含三部分npm网站-----用于预览npm管理的包注册机制-----用于上传包,使用数据库来维护包与上传者..._h5页面能使用npm包管理工具么

google html5 摄像头,chrome html5如何调用摄像头?-程序员宅基地

文章浏览阅读154次。如果是通过chrome调用摄像头的话:navigator.mediaDevices.enumerateDevices().then(gotDevices).catch(errorCallback);...function gotDevices(deviceInfos) {...for (var i = 0; i !== deviceInfos.length; ++i) {var deviceInf..._navigator.mediadevices.enumeratedevices() 将摄像头渲染到 video

TPM概述-程序员宅基地

文章浏览阅读337次。TPM(Trusted Platform Module)安全芯片,是指符合TPM(可信赖平台模块)标准的安全芯片。标准由TCG(可信赖计算组织,Trusted Computing Group)提出,目前最新版本为2.0。符合TPM的芯片首先必须具有产生加解密密钥的功能,此外还必须能够进行高速的资料加密和解密,以及充当保护BIOS和操作系统不被修改的辅助处理器。TPM的可信基础来源于可信根,可信根(..._tpm 总线监听

一天什么时间发抖音浏览量高?5个抖音最佳发布时间段_几点发抖音浏览量最高-程序员宅基地

文章浏览阅读6.7w次。也就更容易获得更高的浏览量。,我们称为午高峰,这个时间段主要是针对一二线城市的上班族,因为玩抖音的一二线城市的人比较多,所以这个时间段他们基本都是下班的时间段,刷抖音的人也很多。,我们成为晚高峰,这个时间段的人基本都忙完工作在休息了,这个时间段可以说是一天中抖音流量最高的时间段,是高峰中的高峰。,这一个时间段的人大都是刚刚睡醒,躺在床上刷一刷抖音,或者在上班的路上没事看看抖音,坐公交的路上刷着抖音。,我们称之为午高峰,这个时间段是人们的午休时间,这个时间段刷抖音的人也很多,吃完饭午休,拿着手机刷刷抖音。_几点发抖音浏览量最高