对程序员这个工作的感想

2020-03-19 20:05:47 +08:00
 ybw

对于 95 %的程序员岗位,他们整个职业生涯不会有一次和算法、数学打交道的机会,这些基础设施有在相关专业深耕多年的人才建立,一般人不插手也不应该去插手。

绝大多数程序员真正的要求不是数学和算法,而是细心。

认真阅读你用到的第三方库的文档和教程,认真理清你接手的项目的架构、繁杂的函数调用关系、对多线程和内存时刻保持警惕等。

至于设计整体架构什么的,更多的是直觉或经验,而非智商。

7531 次点击
所在节点    程序员
60 条回复
guyeu
2020-03-19 20:30:53 +08:00
怎么定义`和算法、数学打交道`呢?
fx
2020-03-19 20:46:28 +08:00
英语
xabc
2020-03-19 20:47:47 +08:00
嗯,搞计算机不需要智商
nianyu
2020-03-19 20:47:52 +08:00
不会有一次有些绝对,绝大部分时间比较贴切
其他说的都对,很多人有一个错觉就是程序员从事的是一份高智商的行业。小到增删改查到 AI 编译器写底层都不需要啥智商。
minglanyu
2020-03-19 20:50:49 +08:00
做自己力所能及的事情。
kwklover
2020-03-19 20:59:24 +08:00
也要数学的,看写代码的方向了,有些初高中学的就够用而已。
算法是必须的,不过我觉得大家对算法有误解,以为算法就是排序什么的,其实算法的定义是 解决问题的步骤,只要你为了解决一个问题,写出 1,2,3 这样的步骤,这个就是算法,算法导论里说的只不过是抽象出来的常用算法,不过那些算法大多数不需要会,一般的库都帮你解决了
sicauxeon
2020-03-19 21:06:49 +08:00
“整个职业生涯不会有一次和算法、数学打交道的机会”

作为程序员照理应该去熟悉所使用的技术和框架,特别是当遇到问题和异常时,如果理解不足那问题就会很棘手。同时在解决一个问题或是实现一个功能的时候,有多个路径可以选择,那么这个时候怎么选择也是需要精细化的分析在里面的。那在这个过程中,我理解的熟练掌握经典算法应该是基础中的基础。

“至于设计整体架构什么的,更多的是直觉或经验,而非智商”

错把软件架构模式当成了一门手艺。

“数学和算法”和“细心”,“直觉或经验”和“智商”,这两者所相对照的概念,并不在一个层次上。所以讨论 要 A 而不是 B,或更多的 A,而非 B,并没有太多的意义。
ybw
2020-03-19 21:10:23 +08:00
@sicauxeon 你可以随手举一个例子
cmdOptionKana
2020-03-19 21:31:49 +08:00
“整个职业生涯不会有一次和算法、数学打交道的机会”

错,几乎每次面试都需要。
sudden
2020-03-19 21:35:10 +08:00
说白了,绝大多数就是搬砖,而且没有 review,质量要求也不高。
guolaopi
2020-03-19 21:40:17 +08:00
@cmdOptionKana
哈哈哈哈哈哈哈你有毒
sicauxeon
2020-03-20 00:16:31 +08:00
本来想举个例子的,但是你说 “95%” 和 “绝大多数” 感觉又无法说明问题。

就我这边观察到的话,开发们对自己的代码应该有认真的态度和好的品味,当然这也需要一些像 code review 这样的过程建立起来,通过提升代码可测性和增加单测用例来控制千行代码 bug 率。经常线上遇到的问题,光看所用到框架的文档和教程是不够的。真实线上的流量和复杂的服务间依赖关系,排查问题可能要依次去定位到某个实例的锁争用、缓存系统、DB、任务调度等,而这又需要向下展开逐步定位到更细的位置。

某个服务告警了,排查出是上游服务的抖动带来多个下游服务的告警,继续排查是因为某个实例 CPU 占用率不规则跳动,问题可能需要深入到虚拟机 GC 算法。。。so on and so on
godgc
2020-03-20 00:23:06 +08:00
个人愚见其实每一次“细心”的设计一些代码模式,也可以定义为算法一种。算法无非就是某些方法、思路的排列组合和调优,算法从广义上讲和我们生活也是息息相关。当然你要说深耕某些具体场景下的算法,那确实是应该要由更专业的人才去完成,但是不可否认的是“绝大多数程序员真正的要求不是数学和算法,而是细心”确实没错
newtype0092
2020-03-20 00:33:57 +08:00
不需要算法?知道为什么有些人包装数据把所有字段都扔进一个字典,甚至会有 a_1,a_2,...,b_1,b_2,...这样的 key 么?因为没有现成库函数不会递归处理多层结构。
不需要数学?知道为什么有些人写出来的代码 if 套 if,层层叠叠看不清么?因为他们基本的逻辑运算都不过关,不知道怎么合并整理条件。
不是那种十几页论文总结出来的才叫算法、才叫数学,算法和数学是程序的基础,你写出的每一行代码都是靠这些基础知识支撑的,不然你光照着文档抄就能写出程序了?当初中生抄青年文摘写作文呢么?
tmado
2020-03-20 02:03:04 +08:00
有一感想是稍微有点追求的程序员容易过于清高,并不自觉伴有杠精体质
hmckkk
2020-03-20 02:23:28 +08:00
看几个文档调几个 API 就可以开始搬砖了,只能说是国内的搬砖门槛太低了
q8164305
2020-03-20 08:02:54 +08:00
程序员说白了就是汽车组装工,跟流水线上的工人其实没什么两样,真正牛逼的是造发动机的那帮人
wozhizui
2020-03-20 08:11:20 +08:00
@tmado 这个说的是真的。
goobai
2020-03-20 08:18:12 +08:00
因为很多程序员都是新时代的农民工,有个领头搭好框架,其他人有双手会搜索复制粘贴就行
murmur
2020-03-20 08:36:17 +08:00
主要现在是资源为王,现金为王,网易云的算法好不,没歌有卵用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/654372

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX