一个十二年老程序猿的碎碎念

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