程序员篇丨不要把自己变成写代码的机器!

看到这个标题你可能会想,程序员本来不就是写代码的么?

没错,程序员的主要工作就是写代码,或者说为了实现特定功能或者业务逻辑去写代码。

作为程序员,代码写得好,功能实现不就行了么?

这句话看似对,也不对。你品,你细细品!同样是写代码,但是写和写之间差多了。

初级程序员为了实现功能,更多的是复制粘贴,或者去找一些现成的轮子,这里并不是说复制粘贴不好,不要全部代码都复制粘贴,如果后面需求变了,你可能就束手无策了,要知其然知其所以然。

中级程序员会考虑如果把代码写的更好,会如何更好的封装代码,比如提高代码的复用性等,会去了解框架的一些原理,也可以根据需求去修改轮子。

高级程序员会去设计代码,写轮子。另外,还懂一些产品知识,会去了解和讨论需求,会思考这个需求解决了用户的什么问题?有没有解决用户的痛点?有没有更好的实现方式?用户体验怎么样?等等。

再往上,到了专家的级别,不仅要会架构,而且还要会写 PPT,各种软实力也是必须的,还要有全局观,要能站到更高的维度去思考问题,要有统筹全局的能力。

你看看,写代码之间的差别大了吧。

每次产品经理扔给你一个需求,你二话不说,一顿操作猛如虎,就干起来了,等你干完了,等到交付的时候,产品经理告诉你做的不对,应该是怎样怎样的,顿时你心里一万只草泥马奔腾而过。。。

这也不怪谁,因为每个人的理解能力不同,所以对于同一件事就会产生不同的理解,进而产生偏差。

当然这种情况是可以避免的,在拿到需求后,首先根据需求的描述,和产品经理一起确认下需求,具体怎么做呢?

按照自己对需求的理解,复述讲给产品经理听,然后产品经理边听边确认你的理解是否正确,如果有偏差,沟通讨论直到没有异议,经过这个过程后肯定是没有问题的。

然后再去根据需求去实现代码就 OK 了,如果开发过程中又有问题,那继续去找产品经理讨论沟通就行了。

最后,经过自己不懈努力地 coding,终于实现了功能,测试也通过了,高高兴兴的交付了,产品也上线了。

没过几天,产品经理找你说,前几天开发的这个功能要进行修改(需求变更),卧槽!心里又有一万只草泥马奔腾而过。。。

然后看了看自己的代码,发现前几天写的不能重用,还要大改,顿时感觉自己欲哭无泪,你说作为一个程序员咋就这么苦逼呢?

说实话,这种感觉我是深有体会的,不是被产品经理折磨,就是被产品经理折磨的路上,不是和产品经理撕逼,就是和产品经理撕逼的路上。

说实话,需求的变更是很正常的一件事,一个功能不可能永远不变,只要产品在更新迭代,需求就会一直有变更的可能。

所以,作为程序员不要去埋怨产品经理给你提的需求和需求变更,理论上讲,这种事情是会不间断一直发生的。

你要做的是,要想方设法去应对各种需求的变更,不管需求怎么变,我的代码都能够灵活应对,或者是尽可能少的改动就能实现了需求的变更。

这就要你从开始写代码之前就需要去考虑的问题,比如,怎么去设计自己的代码?提前假设下,如果后面需求有变化的时候该怎么办?等类似的问题。

这样做可以将问题进行前置,由被动应对改为提前主动预防应对,大大提升了代码应对需求变化的适应性。

虽然这样做前期可能花的时间稍微多一些,但是后面你会省去很多麻烦,节约很多时间,不要想着去返工,那样的效率真的很低,还增加了开发成本!

有时候,你也会碰见一些比较傻逼的产品经理(不懂产品),给你提的各种奇葩的需求,如果你也不是很懂产品的话,你很可能会被带到沟里去。

所以,在开发之前一定要先确认需求,去了解这个需求解决了用户的什么问题?这个需求是强需求还是弱需求?这些都要问清楚,不然到后面做完了才发现,费了九牛二虎之力开发的东西没有用,那就尴尬了!

遇到这种情况就要勇敢的怼回去,不要怕,这样可以避免很多不必要工作量,不是不想做,而是提的需求不合理,给你做毛线!

都知道我们程序员大多都比较憨厚老实,善良耿直,每天和机器打交道,培养了自己标准的线性思维模式,在程序员的的世界里,不是 true 就是 false。

有时候在遇到事情的时候,不会太变通,容易钻牛角尖,容易把自己绕进去出不来,所以,平时要和别人多交流,多打交道,变通去思考和解决问题。

大家都知道去年在网上流传的很火的一个视频,某个公司的产品经理要求程序员实现一个需求,要根据手机壳的颜色来实现 App 主题的变化,这个程序员听完之后就和产品经理打起来了。

假设当你们遇到这个需求的时候,你会怎么做?后来网上也出现了各种奇葩的解决方案,比如,手机壳的颜色会反射到眼睛里,然后手机再通过摄像头去进行眼睛虹膜识别出颜色,然后再设置主题色。等等还有很多比较新奇的答案。

我想说的是,大家的脑洞是真的大,真的是感觉眼界大开,眼前一亮的感觉。

这个问题说到底,其实还是思维方式的差异,程序员的思维方式是偏向于解决问题,怎样做才能实现这个功能?而产品经理更加关心的是这个功能的效果,不管你怎样去实现。

因此,换位思考是特别重要的,程序员冲动打人是不对的,不管什么需求,先去沟通,去了解,相信很多问题都是可以通过沟通去解决的。

就拿刚才那个需求来说(先不讨论这个需求解决了什么问题),你可能稍微变通一下就可以解决,用户肯定是知道自己手机壳的颜色的,当用户打开 App 的时候,可以让用户选择设置一下不就可以了吗?非要搞得那么复杂干嘛。

冲动是魔鬼!

对于程序员来说,敲代码重要,但是沟通技巧,产品思维,也同样重要,程序是为产品服务的,产品是为用户服务的。

作为程序员,要学会聪明地去敲代码,而不是把自己变成一个敲代码的机器!

希望能引起大家的思考,当然也欢迎大家在评论区一起学习讨论。

本文首发于我的微信公众号,更多干货文章,请扫描二维码订阅哦:

您可以扫描上面的二维码,来关注我的微信公众号,来学习更多的干货文章!

另外,我还建了一个免费的知识星球,感兴趣的微信扫码即可加入!

image

发布了142 篇原创文章 · 获赞 181 · 访问量 48万+

猜你喜欢

转载自blog.csdn.net/xinpengfei521/article/details/104878317