天天面向对象编程,却搞不清对象是谁!


今天是10月24日,如此平淡无奇的日子,我为什么要提一下呢?这个只有程序员才懂的,因为它是我们的节日。先祝普天下的程序员兄弟姐妹们,节日快乐,不再加班。

在这个特殊的节日里,我们必须聊聊程序员相关的话题,请问编程工作中,你是面向对象编程更多呢?还是面向过程编程更多呢?
当然这个问题的答案取决与自己工作中使用的编程语言,比如老谭在上大学时学习C和C++,基本上就是面向过程编程,而工作中采用的Java基本上全面鼓吹面向对象有多好,一切都是面向对象,我们所接触的各种设计模式基本上也是面向对象的设计。
面向过程类似于编年体的写法,而面向对象类似于纪传体的形式,他们各有优缺点,所以现在很多编程语言都不是单纯的面向对象设计或者面向过程设计了,而是相互融合。像JavaScript、Python等都是面向对象和面向过程融合很好的语言,就算面向对象的老祖宗Java这几年也在不断增加函数编程的能力。
不管是面向过程编程还是面向对象编程,都是为了更好的解决相应的问题,随着工作经验的提升,职位的提高,遇到的问题也越来越困难,你会发现新的独特的编程模式,这才是让你升职加薪的编程模式,这就是面向老板编程或者面向领导编程!
Story 1
曾经和一个国内知名科技企业的CTO聊天,说了一件事挺有意思,他们上线了一个人工智能的客服系统和推荐系统,老板每天都会测试这个系统。但是刚开始系统对老板的问题的回复总是不让人满意,老板是看谁都是SB,动不动就开人的那种,测试结果如果很糟糕,后果可想而知。后来为了让老板满意,技术团队特意秘密组成四五个人的小团队,主要任务就是每天收集老板的问题,针对老板的问题做规则,甚至直接编答案。老板很满意自家产品,殊不知这背后都是团队在面向老板编程的结果。
这样的事情在你们的工作中是不是也会若隐若现呢,可能没有这件事那么夸张,但是类似的面向老板编程的确是一件普遍的现象。
比如本来需要一个月才能完成的开发任务,愣是被老板压缩成一两周,按照正常开发肯定是交不了差的,这时候我们就要采用面向老板编程的模式了,只要演示对付过去,哪还管后面多大的窟窿。
比如对老板使用的账号做特殊的处理,让他用起来更快,看起来更漂亮,多增加一些if-else又何妨,数据写死又能咋的?
曾经听一位高级营销人员分享营销的本质,就是让老板在朋友圈,看到自家的广告。老板会以为,所有人跟他看到的是一样的,因为他没法去问每个人嘛。
Story 2
最近做一个健康管理的项目,需要对接一些穿戴式的健康设备,其中大老板日常使用的一款国外进口的无创血糖仪的设备把整个技术团队给难坏了。这个设备不开放通讯协议和对接权限,按道理这样的设备不应该出现在我们的选型清单里,但是为了让老板满意,各级领导都提要求对接,甚至建议通过破解的方式。
技术团队也分析了破解的方式可能能解决,因为网上居然有破解的方案(难道是他也碰到类似的处境了🙄),但是这种方案的问题非常大。
1、破解的方式,官方产品一旦升级,很有可能失效;
2、需要单独安装软件,用户体验较差,也不是一般用户能驾驭的;
3、极大降低原正版产品耗材的使用寿命;
4、破解程序是国外程序员所写,技术也不是我们熟悉的,部署成本很高,就算能搞定也得十天半月的。
但是,除了技术团队外所有人好像都不关心这些,依然要想办法搞定,俨然成为了政治任务。
花费很大的成本和精力,只是为了满足老板一个小小的需求,这种情况我相信在工作中也非常的普遍。我们经常面对老板加塞进来的需求而不得不加班加点疲于应付,面对老板的面子需求而非用户真实需求而画蛇添足,很多老板不知道技术债务就是因他而起,他更不知道欠下的债最终还是他来还!
说实话这个事情我在写这篇文章之前都不是非常理解,难道就不能跟老板解释一下这个实现不了或者实现的成本很高,回报基本没有吗?老板又不是那种不通情达理的人,说不定这个事情就不做了,但是项目组的所有人都没人去解释。
和朋友沟通完这个事情后,朋友说你之所以这么思考是因为是做事的思维,而其他坚持要搞定的人的思维其实更多是搞人的思维,千方百计满足领导的需求,获取领导的信任,有时候比“做正确的事”更有价值,因为搞不定人还做什么事啊。
一语惊醒梦中人,我们所鄙视的面向老板编程其实是我们技术思维一种局限性,而真正的管理更关注的是把人搞定。这恰恰是我们这些程序员转型管理者所欠缺的素质,我们更多喜欢把精力放在自认为正确的事情上面,以一种最直接最高效的方式开展工作,但这局限于和你一起工作的人都是同一认知,但是管理岗位所接触和协同的人员角色、类型都更多样化,我们所擅长的工作方式和常用的思维方式就不一定能行了,因为最复杂的是人而不是事。

既然我们不论是从技术转型管理,还是从基层晋升到中层甚至高层,都要越来越关注人,那么面向对象的编程的过程中,你现在能分清面向的对象都有谁吗?毋容置疑,最重要的对象就是你的老板、你的领导,没有他们的认可,你很难在这个环境下有更好的发展,除非换一个新的环境;其次面向的对象是你的客户、产品经理、项目经理等主要的需求来源,往往对于他们,你可以评价,却很难改变;最后是你的队友,在做到不坑队友的基础上,大家形成良好的协作关系,相互成为支持者。
想通了这些以后,面对客户和老板的无理需求,最多解释一遍,能说通,自然是好的,说不通,便不再强求,按他的意思勉强对付吧。反正架构背后的原理和必要性他们从来不关心。于是:“师父莫念,老孙都听你的便是”!
“我加加班,明天给你”,这是程序员最大的温柔!
回复“1024”,以下精华学习课程免费送给你,节日当天有效哦!

回复“入群”,你可以加入菜根老谭读友群,群里每天都会有学习资料分享,更多群友分享,是一个非常活跃的学习交流群。


订阅本专栏,一起探讨程序员转型的各种思维模型!

菜根老谭,微信公众号:CGLT_TAN,人人都是产品经理专栏作家。经历程序员、技术Leader、研发Leader等多种岗位,现任某公司产品研发负责人,擅长企业IT架构及互联网产品架构。

到顶部