🗒️软件工程师最重要的能力不是“写代码”
00 min
2023-8-3
2024-3-1
type
status
date
slug
summary
tags
category
icon
password
因为最近在工作和技术成长上遇到了瓶颈,于是上周天约了著名B站编程区up主 @极海Channel 一对一咨询,跟他畅聊了2小时左右。本文我将分享整场咨询下来,我认为最有价值,也是令我感触最深的part;此外,我将结合我的理解做一些延伸。

从对话开始

“我工作了一年多,现在并不知道我的优势在哪里,感觉没有突出的能力。”
“你是指技术上的吗?”
“主要是技术上吧。工作感觉越来越像在搬砖,成长逐渐见顶了。现在大环境也不好,再看到后端越来越卷,人均DDIA、mit6.824,Google三驾马车背的滚瓜烂熟,又出来了个AIGC。感觉自己越来越焦虑了,技术也没什么长进。我需要学什么来提高我的技术呢?”
不要为了学习技术而学习技术,一定要从具体的问题出发,不要漫无目的地学习技术。 学八股文的话,你面试背背就好了,意义不大。工程师的首要能力是思考能力、发现问题并解决问题的能力,技术是次要的。 不要太在意自己一定要学习很底层很深的技术,根本目的是解决问题。”
一语点醒梦中人!

陷入沉思

我是业务后端,理应解决业务问题,而不是“拿着锤子(技术)找钉子(业务问题)”。正确的顺序应该是为了解决业务问题,而去学习技术,做调研,给出解决方案。是的,我的格局明显小了。
就像在学校学习一样,最重要的不是学校教给你的知识,而是给你提供的资源、平台,还有一帮跟你水平大差不差的同学;职场工作也是,不要想着能有什么技术输入,最珍贵的应该是你遇到的问题,还有你不断思考并解决它的过程。 而且,这些问题是经过商业化验证的,不是在学校软工课yy出来的app或者lab(没有贬低的意思,我自己也做过,但二者确实很不一样)。
为什么会感觉自己一直疲于奔命,真的像在搬砖一样;甚至是觉得工作越来越没挑战?其实很可能是自己的经验、认知有限,问题其实可以挖到到第五层,而你满足并得意于在第二层,遂停止深挖;或者直接懒于思考。现在想想,其实这是很可怕的。
想到之前看多抓鱼早期的故事,就是几个运营在维护几个微信群和管理excel表,根本没有研发,也没有小程序,业务一样能running;人工运营跟不上了,才上的小程序,他们上小程序是为了解决人效问题,这是明确的路径。他们的目标就是做C2C的图书二手嘛,为什么前期就一定要搞小程序、网站、app呢?只要能让业务跑起来就行,黑猫白猫,能抓耗子就行。
活说回来,技术迭代这么快,如果还是不断地人去主动找技术学,学的过来吗?别卷了,Orz。

分享我的观察

我仔细留意并观察了我身边的高级研发工程师或者技术专家,发现他们每天把大部分的时间都花在思考、讨论、开会、调研、写文档,而且大部分的时间是在深度思考上,而非写代码。给人的感觉就是十分积极地输出他们的想法,而且能量充足。他们对于一个技术方案,可能会提出各种刁钻的问题;对于一个产品,列出一堆corner case,给出一套大而全的解决方案,但到最后落地的时候,可能在各种权衡下,就只是做了会让你“切”一声的简单实现。
虽然落地落到代码上写的很简单,但是你在前期思考时候想到几层问题就是你的事情了。高级的工程师们真正享受并热衷的,是实现前的这个思考、琢磨到给出解决方案的过程,这样的思维体操是绝对有益于个人成长和业务发展的。而且前期设计大家达成一致,没有问题,实现也就是把人话翻译成代码的过程,而且会随着工作经验的增长,愈加熟练,时间不断压缩,就可以有更多的时间留给思考。
所以,没有经过思考地工作,自然会失去节奏,把控力变差,人也越来越被动,最终逐渐失控,你不搬砖谁搬砖。时间是挤出来的,如果你觉得思考重要的话,一定是有时间的。
我倒觉得信息的输入和输出,可以使用碎片化的时间,甚至把暗时间都利用起来;但是思考,得是连续完整的时间块。杂事,就用垃圾时间来处理;有价值的、重要的事情,比如个人的思考,就该给完整时间片。

认知转变

以前的我觉得,书上、网上的那些东西是信息,进了脑子就是知识了;我便非常满足于信息入脑的感觉,算是一种贪欲,贪婪于信息的摄取,刷各种B站视频、得到付费音频什么的。但是,入脑的东西真的是属于你的知识吗?即便是那些东西躺入了你所谓的“第二大脑”里,比如notion这样的知识库中,没有被你运用、投入实际生产的,那都只是在用进入了你“第一大脑”或“第二大脑”的信息在臆想。我们记笔记,是为了辅佐思考,而非记笔记本身。现在的我认为:真正的知识,就应该是经过你实践检验过的,被你真正运用的。
把问题拉回技术。假设我现在要出去面试,我写在简历上的,一定要是很高大上的技术吗?我认为不是的,写的必须是能体现属于你的思考的,你深层次想过的,经得起拷问的项目。写下去前多问问自己:问题是什么?目标是什么?上下文是什么?怎么解决的?为什么用这个技术?别的方法不行吗?收益是什么?……(类似丰田5why分析法,挖就是了)
而且,如果你能深层次的想别人需求的系统设计,甚至想的比别人还深,那我觉得这个东西在面试的时候,也可以“是你的”。

总结 8 条“暴论”

  1. 工程师的能力体现在思考能力和发现并解决问题的能力,而不是懂多少技术。
  1. 珍惜你遇到的每一个问题。
  1. 问题 > 答案
  1. 给予问题的最大尊重,就是——深入思考。
  1. 设计先行,再谈落地。
  1. 不要拿着锤子找钉子,还觉得自己的锤子很厉害。
  1. 主动地思考,主动地管理时间,主动地输出价值。
  1. 经过实践检验的信息,才是知识。