程序员的商业思维:解决问题
要说对待学习的热情,程序员自称第二,那就没人敢称第一。何出此言?因为看到的和听到的实在太多了,而且并非中国特色。具体表现在:
- 各大论坛上和微信群,总能看到类似“学习 xxx 是否有前途”这样的讨论,参与者不少。
- 每每一个新技术或新架构的出现,在你的队伍中总能看到有人跃跃欲试,恨不得立马实施,而且大概率会在下一个项目里上马。
- 书店(不论线上线下)里,各类计算机书籍琳琅满目,如果没有庞大的消费群体,这种场景肯定不会出现。
- 同样类似的,还有各类技术网站、博客和微信公众号,很大程度上靠热情无私的开发者来做支撑。
- 还有很多 ……
造成这一现象大致有两方面原因:其一,软件吞噬世界,对程序员的需求有巨大的缺口;其二,软件技术更迭速度太快,从而造就了程序员群体的焦虑感,学习成为化解这一感觉的手段。仔细观察这两点不难发现这背后的驱动力:增值或保值。
现在,转换一下角度,假设你是某公司的负责人,问自己一个问题:你会因为眼前的开发能熟练运用某种流行的框架或技术而雇佣他,给他发工资,交五险一金吗?如果答案是:yes ,那么我想补问一句:你付出的这些薪资难道仅仅只是想购买他/她掌握的技能吗?如果是这样的话,书店里应该有很多现货,而且更便宜。
看到这里,想必聪明如你应该已经领会我的意思:你掌握的技能不值钱,真正值钱的是你运用技能的能力。换句话讲,公司是在为你解决问题的能力而付费。
请注意,我这里丝毫没有鼓吹“学习无用”之类的言论,恰恰相反,要想灵活运用一门知识或技能,通过系统学习是最有效的入门途径。否则,没有理论知识做基础,那些所谓灵活运用的技巧只是旁门左道、空中楼阁。这里之所以重点提出“解决问题”,那是因为希望让大家能够在学习之余不忘学习的目的。说的更通俗点,就是不要死读书!
好了,前面铺垫了那么多,相信大家已经明了解决问题的能力就是你的实际价码。那接下来,就进入本文的重点,看看如何提升这个能力。在这里,我不想去讨论如何在职场上升级打怪,因为说的人已经够多了。本文中,我只想说明几点不一样的。
问题本身的价值越大,那么解决能力的价值也就越大。
这句话的正确性显然不需要我来费口舌,列出它的目的主要是想表达:
- 请关注问题的根本原因,单看问题表现出来的症状,你无法判断其价值。这一点,丰田的“5 个 why ”可以成为我们一个强有力的武器。
- 理解手头任务本身要解决的问题,只有理解前因后果,你才能写出更好的代码。“有一说一”无法让你成为优秀的程序员,只会让你成为思想上的懒汉,未来自然没有什么市场。
- 学会发现问题,并提出解决方案。站在程序员的背景上,这些问题当然是要跟开发相关。但请注意,这里所谓的相关可以是:
- 直接相关,比如发现了程序中的 bug ,然后提出修改方案。
- 间接相关,比如因为 comment log 不规范而影响开发,提出建立相应规范,进而找到一系列支撑工具保证规范的有效执行。
最上等当属工具思维:通过技术手段创造工具,自动化或半自动生产过程(不论开发过程还是业务过程),极大提升生产效率。典型的比如:
- 开发出代码生成器,将常规代码自动生成;
- 开发出支撑业务自动化的工具,将业务过程自动化,比如去年双 11 期间网上刷屏的阿里利用 AI 技术自动生成海报。
拥有这项能力之后,已经不是单纯的“码农”了,他也不是一个可以被随意“优化”掉的人。
自己解决问题的能力固然重要,但是借助外部资源解决问题的能力同样重要。
一说到解决问题,大家首先印入脑海的就是“亲自上阵”。但是,这不是唯一的办法。从个人角度来讲,人不是全才,总有请教他人的时候;从领导团队角度来看,人不可能事必躬亲,必须分工协作。
相应的,为了提升这种借力打力的能力,我们可以:
- 个人
- 请教专家,理清问题和思路。既可以找自己信得过的熟人,也可以直接去知名提问站点直接提问。但在提问之前,请先学习“提问的智慧”。
- 搜索技能必须提升。如果连要搜索的关键字都无法提出,那只能说明这个开发连思路都没有。要么就是逻辑思维能力太混乱,要么就是没有理解问题。
- 上 GitHub 这样拥有大量源代码的地方参考他人代码,但请分清代码是否可用。同时,也请注意代码对应的许可证。
- 领导团队
- 领导力和敏捷开发相关书籍值得参考。
- 其他软技能,比如“程序员的商业思维”系列,;)
但是不论哪种,都离不开“广结善缘”。多参加社区活动,结交那些跟你合拍的技术人。对于团队领导者,我还想补充一句:团队解决问题的能力就是你解决问题的能力。
不要打着解决问题的幌子制造问题。
这一条最让人感到操蛋,而且随处可见。最典型的一种表现莫过于“面向简历的编程”,即开发者只想用最新最潮的技术,但至于这个技术是不是有必要用,是不是适合现阶段用,他不关心。因为他关心的是:练完手后可以直接去下一家拿更好的薪酬。这类例子太多了,前阵子就有朋友跟我抱怨过。其他具体示例,各位看官一搜就知。
最后,作为本文的结束,我还想提醒几句:
- 解决问题的手段不是只有技术,有时候从业务角度着手可能会有更好的效果。
- 扩大知识面不仅可以帮你开阔视野,而且能帮助你扩充解决问题的思路,不要将自己学习的内容只局限于那些技术性知识。