一.我们编下的程序,究竟帮人解决了什么问题?
从进入这行,我等程序员们就在不断地学习语言、类库、工具、业务等等。看着多年积累下来汗牛充栋的技术书籍,大家可曾想过,自己编下的程序,究竟能帮到人多少?
如果不想透这个问题,每天只是机械地把需求和变更翻译成代码,那么三五年之后,你只会在发薪日能高兴一会,长此以往,你会觉得自己无足轻重,人生也没多大意义。为什么下此断言?因为这是我的真实经历。
机械翻译还有一个恶果,就是把自己变成了精致的利己主义者,就代码而言:可能风格良好,建模贴切,运行流畅,但就是没解决用户想要解决的问题。没解决问题,程序还是一个白象。作品不解决问题,作者自然就会无足轻重。
别小看作品交付后的口碑!软件公司是门可罗雀还是下自成蹊,决定因素不在自我标榜上,而是扎根在客户心里,通过客户的言行展现出来。
用户到底想解决什么问题呢?绝对不是把结构化数据存储到DB中去,再以合适的方式展现出来这么简单!这个层次太low了,只能在上世纪末本世纪初说说,今天还这么说是会被人唾弃的。
恰巧股票也是我沉浸下去的领域之一,是一个好的切入点。现在我就把自己当客户,提出自己的真实需求,请各位看看能否帮我解决需求:
我最想要的,莫过于“告我神秘代码”,即从A股四千个股票代号里,给我一支两周内能涨两成的代号来。我只要一个六位代号,别的界面、环境、运维什么的都不重要,运行效率也不需要太高,一个星期内能得到答复就行。我只需要一个钮一个文本框的界面,按下去后一周内能把六位数字显示给我看。拿到代号后我会逐渐验证,如果正确率超过8成我会开始下单。如果持续获利,那费用什么的都好说。
这需求够简单了吧?能做到吗?难度非常大,以至于计算机诞生以来,没听说哪个团队实现过。所谓AI顶流阿尔法狗,只敢玩玩棋牌乐,对股票领域很自觉地退避三舍了。
如果神秘代码做不到,那么降一个档次,择股做不到就择时吧?分析现在该买还是该卖?该重仓还是轻仓?这个老手分析指数、成分股以及指标均线似乎就能做到,但反复钝化是需要考量的,场外因素似乎也该纳入。如此数学模型会很复杂,难度也不小。
再退一步,如果择时做不到,那么展现还可以吧,从服务器下载股票数据,画出K线图,均线,指标这些对程序员来说不难对吧?但是炒股软件都免费把这些给我了,我再雇程序员重画一遍有何意义呢?
以上三个层次,不客气的说?即使是BAT那样的公司,也只能做到第三层。计算机对于现实的无能为力,可见一斑。
实话实话,我也做不到,我要是能做到了,一周赚个百分之二三,就能衣食住行无忧,长期复利下去,十年后超过二马都不在话下!
朱德庸说,公司是无能的人抱团取暖而成,有能力的人,自己就把路趟出来了,何必还要依靠公司!信哉此言!
软件不能保证人在股票期货市场的高胜率,这个事实早已被大公司和计算机专家验证过了。
在浩如烟海的股票数据中寻找潜力股,有如在遍布石头的大山里寻找金矿脉,其难度真不是一般的大。列出数据太易,犹如石头随手可捡;找出矿脉太难,有如挖掘巷道几十米,挖出的全是花岗石石英之类的。
但是,还是得试下去,总不能老了还说:我老汉山中一生,净挖花岗石了,连黄铁矿都没见到,更别说黄金了。
二.等用户来告诉你程序该怎么样,你已经落入下乘
在某些程序员眼里,用户是金主,用户是验收者,用户是最终评价人...直到用户是上帝!
在我二十多年的职业生涯中,以下场景见过多次:
程序员虚心地坐在侧位,请教客户流程应该怎么走...
客户大步流星地赶来,询问信息到哪儿了,为什么未到他哪儿...
客户毫不客气的说,对于业务,你们不如我懂,你们这么做肯定是错了...
客户之间抽烟闲聊说到,别看他们(程序员)一个个貌似高精尖的样子,可流程怎么跑、数据怎么看,大部分都是我教的...
以上场景我自己就是亲历者或是旁观者,回忆起来还宛如昨日。
让客户来讲业务,第一失望者就是客户,他心里想着信息化、智能化,结果只是无纸化,把日常该做的事搬到了网上,他们预想的智能并不存在,计算机不是电脑而是计算器;第二失望者是程序员自己,尼玛自己苦心孤诣学的数据结构算法设计模式编译优化都用不上,整天就是把一些庞杂凌乱的数据从这里倒腾到那里,极其无聊吧还一点不能错,错了就挨批。
很多商业软件的结果都是:公司、程序员和客户都知道软件其实很low,但彼此心照不宣,公司拿了营收、程序员不动脑子得到了薪水、客户背后收取了回扣。受害者其实就是公有的虚拟实体,只是大家都不提。
和房地产业一样,地产公司卖出房子、建筑公司有了营收、工人们有活干又薪水可拿、GDP高涨、地方政府有政绩可吹,貌似都收益,但成本都由高位接盘的购房者承担了。
一旦接盘者乏力,整个行业都会遭受崩塌式的溃败,这就是如今房地产业的现状。软件业会不会成为下一个?
我一直有个天真的想法:那就是知道是坏事,就不能继续做下去,我相信报应迟早会来,不在自身,便在子孙。天真的背后是天理,所以我笃信它。
关于商业软件大多数很low,这个问题有两点原因:一是很多需求就low,就是简单的无纸化电子化,用低代码就可以解决的,不是非用程序员不可;二是程序员心里不上进,自己把自己当成一个业务到代码的翻译机。
第一点是现实积累而成的,我们管不了;第二点根子还在我们自己,不去管就会迟早会祸及自身。
如果一个人总是做录入、验证、匹配、入库、展现的活,长此以往,他没有年龄危机,那真是没有天理的事。
天理存,人欲灭。其实大脑也是偷懒不爱思考的,它会驱使主体得过且过,但天理不允许,它会不断淘汰落后的跑得慢的吃老本的,所以即使单位碍于情面留人,天理也不会留人。
虽然人人都会衰老到不得不得过且过,但青壮年积累多少完全决定了老年的生活质量。
钱多有钱多的活法,钱少有钱少的活法,即使撇去猪栏的理想不谈,如果到老了还说:我CRUD做了一辈子,没觉得做软件有什么牛逼的!那连自己这关都过不去。
三.翻译官和力工
聊到这里,忽然特想要聊聊女生,聊聊她们的成绩。
小学女生一般成绩都较好,因为听话坐得住,初中努力的女生也能成为尖子生,到了高中,初中曾经是佼佼者的女生基本都渐渐名落孙山了,到了高三,不愿被理科虐的女生都转去文科班了,剩下一小撮继续受虐。
女生的生理和体能是她们逐渐落后男人的主因,这在世上任何国家都是普遍性规律。
但在我曾经工作了七年的某外企,高中三年被理科虐哭的女生,进入IT行业凭借英语却翻了身!一众程序员像是力工,而通口语的女生像是吆五喝六的翻译官!
为什么会这样?在甲方看来,交出去Coding的程序不难,因此谁来做程序并不重要,重要的是有人能沟通,起一个桥梁的作用,这时口语好的女生就容易脱颖而出了!
尼玛曾经被数学虐哭的文科班女生却凭语言翻了身,成为项目中的关键人物,可气当年数理化好的尖子却如力工般不受重视。拜口语不好所赐,我曾经被这个异常的现状反复折磨过,心里写满了大大的不服。
我现在明白了,翻译官比力工作用大,只是因为活low,谁来都能干!现在也就是不打仗,战争状态下,那些三角函数和微积分都难搞明白的翻译官们只能做些刷漆上色的简单活,哪有她们牛逼的份?!
想想看老外发过来的活是什么?非核心的编码,界面和控制调整来调整去,中间逻辑的手动转换,表结构的调整影响的方方面面.....就这些如何成就一个有理想的程序员?
很多人不这么想,他们觉得活不累工资照拿就完了,我也曾这么想这么做过,但事后看来是为了工资荒废了自己的七年。
做惯了的日常事能养人,同时也在杀一个人。
外企的程序员为什么热衷于语言,无非就是心知肚明做的东西太low,想用语言给它镀个金,可镀过金的一块钱硬币就当一百用吗?
我不是想抬高理科贬低口语,而是觉得程序的核心价值不可能在后者上,程序员的高级阶段也不该是翻译官。
各国都知道数理化为代表的科学是国力的根本,所以用高考来选材;外企发包方也知道自己做核心的有技术含量的,把无价值的Coding、GUI、TESTING甩给中方;程序员的业余时间也没几个小时,他却把时间都用在了语言上。
鱼与熊掌,只能取一个,你会选什么呢?
四.你写过的最蠢的代码是什么?
这是23年9月份CSDN征文里的一道题,作为一个程序员,如果是在寂寥无声的深夜问自己这个问题,你内心的回答会是什么?
如果把写程序比做走路,那么孩提时代的磕磕绊绊谁都经历过,这是必由之路,也没啥可笑的,笑别人也等于笑自己。
可笑的是,在已经娴熟行走的状态下,还在磕磕绊绊的行走!
比如很多商业项目,无非是稍复杂的表数据处理程序,重复写,反复调,改了又改,加班改,这不就很可笑吗?
比如某个OA项目,因为某领导一句话非要添加一些时尚元素如ES,费劲弄上了,几个月后又因为另一个领导一句话就下马,功夫全白费,这不可笑吗?
比如写在标签上的一句提示语,某人觉得不妥,找人问询,来来回回数封邮件,花一个星期,烦无数人,最后就改了一点,和谷歌翻译差别也不大,这不可笑吗?
一堆人讨论设计了三个月,方案一拿出来就一张A4纸,上面几个框框标上符号说是主要对象,再拉几个箭头就说是对象间关系,这种Word做的设计图,让开发团队一个月编出初版来,这不可笑吗?
要我说,走路摔跤不可笑,跑快了摔个大马趴也不可笑,前进中犯错是难免的,大方向是对的!可笑的是明明可以前行却半主动半被动地一直在原地转圈徘徊!虽说不费劲赚了不菲的工资,但这是用你的心气你的命换的,短期纾困可以,但长期这样你不觉得亏得慌吗?
五.结语
抱怨了一大通,也说不动了,想起电视剧《刘老根》片头曲,贴出来作为结语:
毛驴儿拉磨哟它走不出那个圈儿
井里蛤蟆就能看见巴掌大的一块天儿
通天大道本来就有笔直的一条线儿哟
何苦还要翻山越岭诶
嗨 硬去拐那几道弯儿
唉嗨唉嗨哟 唉嗨唉嗨哟
会飞那才叫龙哪
得道那便是仙儿
摸着石头过河
早晚也能找到边儿
最后,衷心希望每个程序员都能找到自己的通天大道!
END