转载:https://www.jianshu.com/p/072b262cd089
先贴一张图片,虽然不知道是为什么要贴图,但是貌似这是简书的“潜规则”了。要说的是本文中的所有图片都是本人原创,我除了是一枚程序猿以外,还喜欢玩摄影。
我是一名程序猿,在上95年上初中的时候,别的还在都在打篮球、踢足球的时候,我就已经在玩QBasic了,每逢跟其他程序猿说起这段的时候,大家都会投过来羡慕的眼光,其实没有你们想的那么好,反而挺悲催的,当时的同学们都不知道我在说些啥,另外我至今都不会打篮球、踢足球。果然不出意外(不会有意外的,我大学填报的所有志愿都是计算机系)的大学毕业后做了一枚程序猿。
工作到现在有十二个年头了,大部分工作都是做开发,当然也做过些别的,干过销售,跟朋友合伙创业等等,不过我依然还是喜欢做开发。
就在工作2年,写了2年程序的时候,我觉得自己太蔫儿了,程序猿嘛,更愿意低头做事而不是抬头说话,于是决定辞职去做了半年多销售,就为了练练嘴。现在我还清晰的记得打第一个推销电话的时候,我提前写好了稿子,紧张的面红耳赤,拨通电话就照着稿子念,等我念完了发现对方早挂了。不过就这样一点点的磨过来了,拿了个年度销售冠军,然后毅然辞职,又跑去写程序了。乔丹曾说过:“如果没有去打棒球的话,都不知道自己有多么的爱篮球”。我也借用这句话:如果没有跑去做销售的话,都不知道自己有多么的爱代码。
我算是比较幸运,把自己的爱好作为了职业,可以亲手将一个产品从无到有的打造出来的喜悦感还是非常满足的。虽然很多时候都是在解决需求、改bug这些枯燥的事情吧,这就好像你喜欢玩游戏,但是职业化的一遍又一遍的重复一个游戏也是很郁闷的。前面说了,我还有一个爱好就是摄影,我绝不去做职业摄影师去,保持这个爱好就是爱好,纯玩儿。
曾有一个段子说:一个妹子问一个程序猿如何让一帮不爱说话的程序猿活跃起来,那个程序猿说了一句PHP是最好的语言。。。很多程序猿都喜欢站队,所谓站队就是自己在玩某某语言的时候,就会觉得这个语言很强大,自然而然的就站了队了。
我们的身边充斥着写java的看不上写.net的,写c的看不上一切,node异军突起,python批评ruby垃圾性能,高富帅swift从天而降,PHP是最强语言等等。。。
十二年前,我刚工作的时候,写医疗软件,用VB写界面,用VC写功能封装dll,当时觉得VB,VC太强了,结果现在它们基本都死了。
同样的还有:
我写过Dephi,死了。。
我写过asp,死了。。
我写过塞班,死了。。
我们更应当做的是跳出语言的框框,编程注重的是思想,而非语言。
有人不屑于C#的lambda表达式,认为这就是个语法糖。其实你可以把它看作为将冗余的循环判断重构为一句话,IT行业很多时候都是在给其他行业做提升效率的工作,轮到我们自己为啥就不能提升下开发效率呢,程序猿挺苦逼了,吃块糖咋了?
有人不屑于.net的闭源,但是微软正在把很多.net的东西开源了,反观oracle跟Google的java官司有一种oracle要玩死java的赶脚啊。
有人不屑于java的呆板,但是java不计其数的开源框架支撑这个古老而又现代的帝国。
有人不屑于js就是个脚本,但是node异军突起,正在逐步向后端深入。
跳出语言的框框吧,作为一枚程序猿,我们更应该重视的并不是语言本身,语言只是一个工具罢了。
有一篇鸡汤说:两个人在工地搬砖,有人问他们你们在干嘛,一个说我在搬砖,另一个说我在建造大楼。几年后说搬砖的人还在搬砖,而说建造大楼的人通过进修一点点做到工程师了。
这虽然是一篇鸡汤,但是确实说明白了一个到了,就是你的思想决定了你的行动,影响了你的结果,当然对于程序猿更是如此了,因为我们是码农,没了思想就是一个搬砖的。
举个例子:如果有一天pm告诉你,要做一个朋友圈这样的产品,你会怎么做?
初级程序员会怎么做?
1,建立用户表、用户朋友圈发的内容表、点赞评价表,然后做表表关联。
高级一点的程序猿还会想到什么?
2,图片要做压缩吧,现在手机动不动1000多w像素,一张图片好几m,不压缩的话先不说服务器压力,用户刷新一下朋友圈这个月的流量就没了的话,一定会马上删应用骂街的。
3,图片要分布式存储吧,CDN如果引入的问题。
4,辣么多表做关联,响应的问题,并发的问题,缓存怎么搞。
5,数据量大了的话,分库拆库是否要提前计划好。
6,发朋友圈要有消息通知吗?如何做?
7,数据量大了之后用多表关联的方式是否还合适?
还有一些也许pm并没有说到的细节呢?
8,朋友圈一定就是9张图片吗,以后会不会要求增加呢,当年微博还要求必须140个字呢,现在也没限制了,如果你数据表只是设计了9个图片字段的话。。。
9,图片是否要预留加入ps、美颜等功能的考虑呢?
10,用户选择图片的时候是否可以多选,选择图片的列表是不是应该按照时间倒序排列?
11,pm只说了发朋友圈,那么修改删除呢?
12,评论、点赞修改了删除呢?删除后已发出的消息怎么办?
如果你只考虑第1的话,那么不好意思,你就是在搬砖呢。
如果你考虑了2-7的话,恭喜你是一个合格的程序猿。
只有考虑到了8-12,才是那个不仅仅在搬砖的程序猿。
有人会说了8-12这些应该是pm做的事情啊,pm没说就不做啊。还是那句话,如果pm告诉你什么你就做什么的话,那就是在搬砖,只是在完成工作罢了,而不是在打造一款真正的产品。
以上,我这个十二年的老程序猿的碎碎念。