小言_互联网的博客

程序员的两种职业特质

428人阅读  评论(0)

对简单的敬畏

软件工程是复杂的工程,由于它几乎可以零成本试错,软件可以堆积到任意的复杂程度。一个简单的播放器软件,其复杂性也堪比建造幢别墅,更别说制作一双皮鞋。

这使得创造软件的 程序员失去了对简单的敬畏!

我没有针对某个程序员或者某个公司的程序员,我指的是包括我自己在内的所有程序员,并且,这并没有携带贬义的意思。这只是一种职业特质。

程序员认为伟大的东西一定是复杂的,简单的东西只能是玩具,或者工具。

最近,我接触了eBPF,让我惊叹于它的小巧和精简,我称它为瑞士军刀。但是,当我琢磨着eBPF到底能做些什么的时候,我努力说服自己心存敬畏,但直到我接触了Open-NFP前,我做不到。

我感觉我大约做到了时,我试着做点小东西,它们在:
https://github.com/marywangran/simple_xdpdump
https://github.com/marywangran/bpfilter_demo
https://github.com/marywangran/bpfilter_demo
https://github.com/marywangran/simple_xdp_router
https://github.com/marywangran/ebpf_sockmap
https://github.com/marywangran/simple_xdp_bridge
这些小东西也只能是小玩具,它们终于还是不能上线的。无论怎样,我忍不住要展示给别人看,我就去展示了。

很多人只是把eBPF看成一种工具,就像trace,probe之类的辅助性监控调试工具,把eBPF看作是内核的一种扩充而并非用eBPF实现一些功能,这就是为什么只要你关于eBPF的topic,十有八九都是bcc里的那些和trace,probe相关的例子,这也许是Linux原教旨主义者的情怀使然吧, “内核的事情内核管,其它的事情都在用户态”

说实话,目前eBPF作为内核功能的扩充,其作用真的还十分有限,正是基于此,当我跟别人介绍用eBPF实现的一些小玩意儿的时候,大多数时候获得的只是嘲讽: “我觉得这不靠谱,不如写个内核模块呢…”

不过,我一直试图去努力改变这种局面。我始终相信简单的东西并不总是无用,并非总是搬不上台面。

对未知的敬畏

世界是确定的吗?不知道。

但软件的行为是确定的。

不,软件底层是电子,那是量子力学的范畴,而量子世界是不确定的…

我就知道有人会用类似上面这句回怼,不过我说的不是这回事。我指的是抽象层面的软件,也就是 “程序员用代码写成的程序,其逻辑是确定的。”

debug有故障的程序是一个繁琐的过程,但是不论多么复杂,最终的结论一定是确定的,一个Linux内核的尸体vmcore就是它死时的映像,无论多么诡异的bug,分析这个vmcore都可以得到确定性的结论(可能又有人用踩内存来反驳了)。

由于软件是确定的,长期跟确定打交道后,就会形成 世界是确定的 之定势。

我老婆总是觉得跟我聊个事非常费劲,我自省过,但没有成功。我老婆是日语专业文科生,持有教师资格证,又做过HR,又做过小小学校家委会的头子,与人聊天是肯定没有问题的,那问题肯定出在我身上。

自省是有难度的,那就用反射的方法。

我试着找典型的程序员聊天,聊一些跟技术无关的话题。我说的典型的程序员指的是他们把时间都交给编程的。

我发现,在他们的眼里,世界是确定的,非黑即白,他们容不得世界的灰色地带存在。

如果你跟他们聊天气预报时,他们似乎不允许随机性的存在,他们希望有什么机制可以跟踪每一个水分子的行踪,当聊起最近的城市封锁时,他们认为仅仅铁路,航空,高速公路,国道的封锁是不够的,即便是连乡村的小路也围起来了,还会有蝙蝠侠飞出来的。

至于公司如何知道员工的考勤情况,那一定是通过技术手段监控的,程序员的惯性思维通常是公司一定会在其OA app中安装监控,GPS之类的,另外还会记录员工从哪里接入了WIFI,监控员工的微信,钉钉聊天信息…

其实哪里有这么复杂,这一点我倒是不那么较真儿,我相信两点,一是公司没必要这么麻烦,监控员工不是公司的要务,其次,公司没那技术。一般非程序员都没有这样的担心,此外,退一步说,即便是监控了,又如何呢?

我想,这就是程序员心中的确定性的技术世界吧。万事都采用技术手段解决并不是最高效的,有时社会工程学更有效率,但是程序员根本不care和技术无关的社会工程学,不是吗?

程序员的世界是确定的,世界是由技术组成的,于是任何问题都必须要有个闭环的答案。

然而,世界没有想象的那么简单,但却也没有想象的那般复杂,干嘛非要确定性的闭环呢?

人生会遇到很多很多不确定的问题,解决它们就是了,见招拆招,就这么简单的事,干嘛每件事非要较真儿去寻找确定性的技术方案呢。

世界不是代码写成的,至少在我们的哲学认知里它不是,所以调试它是无效的,享受它才行。


浙江温州皮鞋湿,下雨进水不会胖。


转载:https://blog.csdn.net/dog250/article/details/104084136
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场