Java程序员感悟:我们了解自己的成功么?

很多时候,失败也许不是必然,而成功其实源于侥幸。前一季中兴通讯事件发酵,无疑是整个自媒体谋求关注的热门话题。这些话题里既有慷慨激昂的爱国主义氛围,也有所谓的理性反洗。说实话,读了很多文章,却不敢随便写了。因为我怕一写就暴露自己海外待久了,对国内行情不了解的本质。当然另外一方面,也是因为自己在休假期间,懒得动脑子去写一些烧脑的东西。不过我就着自己写过的那个标题,在想,如果我们把人这个主角换到企业,换到行业,换到国家层面上来看,很多时候也是差不多的。过去的这些年里,我们国家无疑是取得了非凡的成就,厉害了我的国。我们的国家涌现出了很多的国际知名的企业,比如说阿里巴巴,比如说京东,比如说腾讯,比如说华为,这些企业无一不是各行各业的翘楚。我们还有了新四大发明,这些新四大发明给我们的生活带来了极大的便利。所有有人说互联网在美国,但是移动互联网在中国。我在休假,所以不想太烧脑的去分析国家大事,企业情况等等。但是有一个很有意思的现象。我们这些年取得了那么多成就,可谓盛况空前,盛世到来。为什么这次中兴被美国一制裁,芯片一卡,相关软件一卡,这个全球第四的通讯企业,就一下子面临很可能要破产的下场了呢?难道说我们所取得的成就,都是海市蜃楼昙花一现吗?我知道中华民族传统上非常的擅长去总结失败,学习失败,从而总结经验教训,继续前进。那么我们到底是怎么成功的,这些成功哪些是真成功哪些是假成功,我们有想过这个问题吗?这些天网上还有很多追思追忆的文章。其实有时候,我想,一个国家能取得巨大的成功,因素很多。这些成功,有的时候很难说到底是什么。比如说阿里巴巴的电商成功,有一种说法是因为房价涨疯了所以很多人实体店租不起房子,不如开到网上来吧,反而省成本。这也未尝不是一种合理的解释。又比如说,很多做芯片的人才都纷纷转行,其中原因之一是工资上涨的速度远远跟不上房价上涨的速度。可能一个年薪50万人民币一年的中高级芯片工程师,或者中国码农,也需要奋斗大半辈子才能买一套房。然后就轮到40多岁了,有的就被解雇,开除,跳楼了。我一直都觉得奇怪,国家很成功,产业很繁荣,中年人到处危机感,频频有跳楼。有些行业被美国一卡,好像就无法支撑下去了。那么,我们了解自己的成功么?作为个人,在如此成功的中国,中年危机从何而来?
过去我曾一直认为程序员是依靠他们的技术在编程,也是因为技术使得程序员的水平有高低之分,但随着我写代码的时间越来越长,也接触到更多的程序员,我渐渐发现程序员们其实是依靠他们所特有的程序员思维在进行编程的,而他们中的佼佼者正是那些有着更高思维成熟度的优秀程序员们。
欢迎大家加入架构华山论剑:836442475 本群提供免费的学习指导 架构资料 以及免费的解答 不懂得问题都可以在本群提出来 之后还会有职业生涯规划以及面试指导 进群修改群备注:开发年限-地区-经验 方便架构师解答问题

什么是程序员思维
那么,什么是程序员思维呢?我曾读到过一些文章,试图给它下一个明确的定义,比如,具备抽象和逻辑思维的能力,拥有面向对象编程和设计的能力等等。我对这些所谓定义有些不以为然,因为,我所体会的程序员思维更像是一种感觉,它是由常人的思维+编程思维,长期相互作用下产生的一种思维模式,它能够帮助程序员快速找到以程序方式解决现实问题的最优解。

那么,程序员们又是如何获得这种思维的呢?我想说,从你学习编程并写下你的第一个HelloWorld程序的时候,程序员思维就已经不知不觉地建立起来了,而随着你不断深入地学习与实践,它也变得越来越完整和成熟。下面就是我认为对于提升程序员思维有所帮助的几点建议,虽然不做展开,但相信每个程序员都会认同吧。

长期不间断的编程实践
持续地学习与借鉴(参考)
学会反思,并像专家一样思考
为什么要突破程序员思维
既然程序员思维对程序员来说如此重要,我们又为什么要突破它呢?在我看来,主要有以下一些原因:

随着技术的进步和专业领域的融合,程序员的职能正在不断扩展,你一定也听到过DevOps,全栈工程师,增长黑客这些词吧,新一代的程序员不仅需要具备很强的编程能力,同时还需要具备从设计、运营、测试等各种不同角度去进行分析和判断的能力。
从程序员的发展角度来说,当你从一名程序员转变为高级程序员、架构师、系统分析师、项目经理、产品经理的时候,需要你突破程序员思维,而从更人性化的角度去识别和解决问题。
突破程序员思维对你的生活也会有所帮助,有很多过于技术的程序员,随着编程时间的增加,他们会越来越不善与人沟通,甚至排斥与人交流。他们也往往无法扮演好自己在生活中的角色。
程序员思维对程序员来说是一把双刃剑,它既能帮助程序员写出优秀的代码,去解决一个又一个复杂的问题,但有时候它也会阻碍程序员们的发展,成为进阶路上过不去的一道坎。

如何突破程序员思维
在成为架构师以及开始做IT管理之前,我也是一个完全用程序员思维去进行思考的人。但我通过一些方法逐渐突破了程序员思维,相信这些方法也能给你以启发。

透过技术发现问题的本质
我时常会组织开发团队做一些技术问题的讨论,但当一个问题被抛出时,比如:用户时常会在段时间内重复地点击某一个功能,导致系统压力的上升。团队的大部分程序员都会很快给出他们的解决方案,比如增加流量阀的控制或在用户会话中加入某些Token来防止用户的频繁重复提交等等。但几乎很少有程序员会问,用户为什么会在短时间内频繁点击这个功能呢?是啊,解决问题的关键,往往不是如何通过技术手段禁止用户这样做,而是理解用户这样操作的原因,从而得出解决的办法。

多年的开发工作,使程序员们不自觉地首先想到如何用技术手段去解决问题,然而,真正优秀的程序员一定善于透过技术发现问题的本质。我想这就是我们突破程序员思维的第一步,也是最容易实现的一步吧。而说到方法,我最常使用的便是,反复地追问一件事的原因,比如刚才这个例子,最终我们找到原因可能是系统没有给用户一个友好的提示,导致用户错误地认为系统并没有处理他的请求,而尝试反复点击。而我们的解决方案也与之前团队程序员们所提出的完全不同,只需花上几分钟,给系统加上一句友好的提示就行了。

像专家一样给出意见
我发现在很多场合下,比如与用户沟通需求、与产品经理沟通方案时,程序员总是处于比较弱势的一方。他们只是被动地去接受这些需求和方案,然后回去将它们转换为代码的实现。

而那些真正优秀的程序员在与用户进行沟通时,总是试图去理解用户所提出需求背后的真正原因,因为,他们知道用户往往会按照自己对问题的理解去给出他们认为正确的方案,而很多情况下,这并不是正确或最优的解决方案。优秀的程序员会站在用户的角度,认清问题,并像专家一样给出他们认为最优秀的方案。

如果你对一个问题有充分的理解,并具有足够的信心,你就应该站出来像专家一样给出自己的意见,这会让你显得与众不同。而如果你每次提出的意见都被证明是正确的,那么不需要多久,你也会被大家认同为是一名真正的专家了。

杂学并从中获得不同的视角
要做到看清问题的本质和像专家一样给出意见,其实并不简单,这不仅需要你具备极强的技术功底,更需要你对问题所涉及的相关领域有足够的认识。你必须通过大量地学习编程之外的各种知识来完善自己的知识体系,并从中获得不同的视角。

我经常听到程序员会抱怨用户提的需求质量有多差,设计师做的设计根本无法实现等等。这其中一定有一些客观的原因,但程序员无法跳出程序员思维,站在用户或设计师的角度看待问题,也是一个重要的原因。

我在自学设计之后,获得的不仅仅是一项技能,对我帮助更大的是自己能够从一名设计师的角度来待看问题,这反过来也促进了我的编程能力的提升。同样的,你也可以学习某个行业的知识,即使你无法成为这个领域的业务专家,但这些知识能够帮助你更好地理解用户的需求,从而得到更优秀的技术解决方案。这也是为什么我总是鼓励身边的程序员们去尝试学习除编程之外不同东西的原因。

找回创造力
虽然编程是一项脑力活动,但程序员们可能都知道,在大多数情况下这并不需要我们发挥创造力。也就是说,我们在按部就班地完成那些开发工作的同时,我们正在失去我们的创造力。

创造性地解决问题是优秀程序员所需要具备的能力,但我恰恰发现很多具有多年编程经验的程序员,他们的思维却好像受到了限制似的,只能凭着那些已经有些过时的经验去给出他们的方案,而很难创造性地去解决问题。

其实,有很多方法都能让我们找回创造力,关键是你是否愿意坚持那样去做。而我的方法也很简单,每天进行阅读,每周写一篇博客记录自己想到的东西。另外,我也有一本小本子用来记录那些转瞬即逝的想法,有些看起来是那么不切实际,但我都把他们记录下来,没事的时候就去翻翻,这个过程中我可能会得到一些新的不错的可行的点子,然后,我再尝试着花些时间把它做出来。虽然,他们中的大部分都不会产生什么价值,但我知道下一个优秀的创意或想法,可能就来自于它们。

突破程序员思维并不是要摒弃它,恰恰相反,突破正是建立在成熟的程序员思维之上的,这将帮助程序员以更全面的视角去思考和解决问题,同时也能为我们程序员这个职业创造出更多可能。

这里写图片描述

猜你喜欢

转载自blog.csdn.net/tyztyztyztyztyz/article/details/81509446