Java编程–如何突破程序员思维
? ? ? ?过去我曾一直认为程序员是依靠他们的技术在编程,也是由于技术使得程序员的水平有高低之分,但随着我写代码的时间越来越长,也接触到更多的程序员,我渐渐发现程序员们其实是依靠他们所特有的程序员思维在进行编程的,而他们中的佼佼者正是那些有着更高思维成熟度的优秀程序员们。

什么是程序员思维
? ? ? ?那么,什么是程序员思维呢?我曾读到过少量文章,试图给它下一个明确的定义,比方,具有笼统和逻辑思维的能力,拥有面向对象编程和设计的能力等等。我对这些所谓定义有些不以为然,由于,我所体会的程序员思维更像是一种感觉,它是由常人的思维+编程思维,长期相互作使用下产生的一种思维模式,它能够帮助程序员快速找到以程序方式处理现实问题的最优解。
? ? ? ?那么,程序员们又是如何取得这种思维的呢?我想说,从你学习编程并写下你的第一个HelloWorld程序的时候,程序员思维就已经不知不觉地建立起来了,而随着你不断深入地学习与实践,它也变得越来越完整和成熟。下面就是我认为对于提升程序员思维有所帮助的几点建议,尽管不做开展,但相信每个程序员都会认同吧。
长期不间断的编程实践
持续地学习与借鉴(参考)
学会反思,并像专家一样思考
为什么要突破程序员思维
既然程序员思维对程序员来说如此重要,我们又为什么要突破它呢?在我看来,主要有以下少量起因:
? ? ? ?随着技术的进步和专业领域的融合,程序员的职能正在不断扩展,你肯定也听到过DevOps,全栈工程师,增长黑客这些词吧,新一代的程序员不仅需要具有很强的编程能力,同时还需要具有从设计、经营、测试等各种不同角度去进行分析和判断的能力。
? ? ? ?从程序员的发展角度来说,当你从一名程序员转变为高级程序员、架构师、系统分析师、项目经理、产品经理的时候,需要你突破程序员思维,而从更人性化的角度去识别和处理问题。
? ? ? ?突破程序员思维对你的生活也会有所帮助,有很多太过于技术的程序员,随着编程时间的添加,他们会越来越不善与人沟通,甚至排斥与人交流。他们也往往无法扮演好自己在生活中的角色。
程序员思维对程序员来说是一把双刃剑,它既能帮助程序员写出优秀的代码,去处理一个又一个复杂的问题,但有时候它也会阻碍程序员们的发展,成为进阶路上过不去的一道坎。
如何突破程序员思维
? ? ? ?在成为架构师以及开始做IT管理之前,我也是一个完全使用程序员思维去进行思考的人。但我通过少量方法逐步突破了程序员思维,相信这些方法也能给你以启发。
透过技术发现问题的本质
? ? ? ?我时常会组织开发团队做少量技术问题的探讨,但当一个问题被抛出时,比方:使用户时常会在哪段时间内重复地点击某一个功能,导致系统压力的上升。团队的大部分程序员都会很快给出他们的处理方案,比方添加流量阀的控制或者在使用户会话中加入某些Token来防止使用户的频繁重复提交等等。但几乎很少有程序员会问,使用户为什么会在短时间内频繁点击这个功能呢?是啊,处理问题的关键,往往不是如何通过技术手段禁止使用户这样做,而是了解使用户这样操作的起因,从而得出处理的办法。
多年的开发工作,使程序员们不自觉地首先想到如何使用技术手段去处理问题,然而,真正优秀的程序员肯定善于透过技术发现问题的本质。我想这就是我们突破程序员思维的第一步,也是最容易实现的一步吧。而说到方法,我最常用的便是,反复地追问一件事的起因,比方刚才这个例子,最终我们找到起因可能是系统没有给使用户一个友好的提醒,导致使用户错误地认为系统并没有解决他的请求,而尝试反复点击。而我们的处理方案也与之前团队程序员们所提出的完全不同,只要花上几分钟,给系统加上一句友好的提醒就行了。
像专家一样给出意见
我发现在很多场合下,比方与使用户沟通需求、与产品经理沟通方案时,程序员总是处于比较弱势的一方。他们只是被动地去接受这些需求和方案,而后回去将它们转换为代码的实现。
而那些真正优秀的程序员在与使用户进行沟通时,总是试图去了解使用户所提出需求背后的真正起因,由于,他们知道使用户往往会按照自己对问题的了解去给出他们认为正确的方案,而很多情况下,这并不是正确或者最优的处理方案。优秀的程序员会站在使用户的角度,认清问题,并像专家一样给出他们认为最优秀的方案。
假如你对一个问题有充分的了解,并具备足够的信心,你就应该站出来像专家一样给出自己的意见,这会让你显得与众不同。而假如你每次提出的意见都被证实是正确的,那么不需要多久,你也会被大家认同为是一名真正的专家了。
杂学并从中取得不同的视角
要做到看清问题的本质和像专家一样给出意见,其实并不简单,这不仅需要你具有极强的技术功底,更需要你对问题所涉及的相关领域有足够的认识。你必需通过大量地学习编程之外的各种知识来完善自己的知识体系,并从中取得不同的视角。
我经常听到程序员会抱怨使用户提的需求质量有多差,设计师做的设计根本无法实现等等。这其中肯定有少量客观的起因,但程序员无法跳出程序员思维,站在使用户或者设计师的角度看待问题,也是一个重要的起因。
? ? ? ?我在自学设计之后,取得的不仅仅是一项技能,对我帮助更大的是自己能够从一名设计师的角度来待看问题,这反过来也促进了我的编程能力的提升。同样的,你也可以学习某个行业的知识,即便你无法成为这个领域的业务专家,但这些知识能够帮助你更好地了解使用户的需求,从而得到更优秀的技术处理方案。这也是为什么我总是鼓励身边的程序员们去尝试学习除编程之外不同东西的起因。
找回创造力
尽管编程是一项脑力活动,但程序员们可能都知道,在大多数情况下这并不需要我们发挥创造力。也就是说,我们在按部就班地完成那些开发工作的同时,我们正在失去我们的创造力。
创造性地处理问题是优秀程序员所需要具有的能力,但我恰恰发现很多具备多年编程经验的程序员,他们的思维却如同受到了限制似的,只能凭着那些已经有些过时的经验去给出他们的方案,而很难创造性地去处理问题。
其实,有很多方法都能让我们找回创造力,关键是你能否愿意坚持那样去做。而我的方法也很简单,每天进行阅读,每周写一篇博客记录自己想到的东西。另外,我也有一本小本子使用来记录那些转眼即逝的想法,有些看起来是那么不切实际,但我都把他们记录下来,没事的时候就去翻翻,这个过程中我可能会得到少量新的不错的可行的点子,而后,我再尝试着花些时间把它做出来。尽管,他们中的大部分都不会产生什么价值,但我知道下一个优秀的创意或者想法,可能就来自于它们。
突破程序员思维并不是要摒弃它,恰恰相反,突破正是建立在成熟的程序员思维之上的,这将帮助程序员以更全面的视角去思考和处理问题,同时也能为我们程序员这个职业创造出更多可能。?
欢迎关注,欢迎留言讨论
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Java编程–如何突破程序员思维